[BigQuery] 드라이버 감사 로그 내보내기(후편)
개시하다
전편에서는 BigQuery Export 기능을 사용하여 감사 로그를 구동하는 출력 방법을 설명합니다.
후편에서는 VPC Service Controls를 효과적으로 사용할 때의 설정에 대해 설명합니다.
운영 환경
Product
version
Google Workspace
Enterprise Edition
BigQuery
2021년 12월 5일 기준
VPC Service Controls
2021년 12월 5일 기준
【구성도】
【보충】
• Google Workspce와 BigQuery는 같은 조직에 속합니다.
전제 조건
{
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"status": {
"code": 7,
"message": "Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier: E5iKrWnTk1vKv1QaCyimHrd72QKravJFneBr-jrN2emWz1WMx5CqjQ",
"details": [
{
"@type": "type.googleapis.com/google.rpc.PreconditionFailure",
"violations": [
{
"type": "VPC_SERVICE_CONTROLS",
"description": "E5iKrWnTk1vKv1QaCyimHrd72QKravJFneBr-jrN2emWz1WMx5CqjQ"
}
]
}
]
},
"authenticationInfo": {
"principalEmail": "[email protected]"
},
"requestMetadata": {
"requestAttributes": {},
"destinationAttributes": {}
},
"serviceName": "bigquery.googleapis.com",
"methodName": "permission:bigquery.datasets.create",
"resourceName": "projects/xxxxxxxxxxxx",
"metadata": {
"ingressViolations": [
{
"targetResourcePermissions": [
"bigquery.datasets.create"
],
"targetResource": "projects/xxxxxxxxxxxx",
"servicePerimeter": "accessPolicies/xxxxxxxxxxx/servicePerimeters/from_my_home"
}
],
"vpcServiceControlsUniqueId": "E5iKrWnTk1vKv1QaCyimHrd72QKravJFneBr-jrN2emWz1WMx5CqjQ",
"violationReason": "NO_MATCHING_ACCESS_LEVEL",
"securityPolicyInfo": {
"servicePerimeterName": "accessPolicies/xxxxxxxxxxx/servicePerimeters/from_my_home",
"organizationId": "xxxxxxxxxxxx"
},
"@type": "type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata",
"resourceNames": [
"projects/xxxxxxxxxxxx"
]
}
},
"insertId": "lxecooeb98md",
"resource": {
"type": "audited_resource",
"labels": {
"service": "bigquery.googleapis.com",
"method": "permission:bigquery.datasets.create",
"project_id": "composed-arbor-332218"
}
},
"timestamp": "2021-11-29T13:09:36.774176499Z",
"severity": "ERROR",
"logName": "projects/composed-arbor-332218/logs/cloudaudit.googleapis.com%2Fpolicy",
"receiveTimestamp": "2021-11-29T13:09:36.890253258Z"
}
ERROR_MESSAGE2{
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"status": {
"code": 7,
"message": "VPC Service Controls: Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier: E5iKrWnTk1vKv1QaCyimHrd72QKravJFneBr-jrN2emWz1WMx5CqjQ."
},
"authenticationInfo": {
"principalEmail": "[email protected]"
},
"requestMetadata": {
"requestAttributes": {},
"destinationAttributes": {}
},
"serviceName": "bigquery.googleapis.com",
"methodName": "datasetservice.insert",
"authorizationInfo": [
{
"resource": "projects/composed-arbor-332218",
"permission": "bigquery.datasets.create",
"resourceAttributes": {}
}
],
"resourceName": "projects/composed-arbor-332218/datasets",
"serviceData": {
"@type": "type.googleapis.com/google.cloud.bigquery.logging.v1.AuditData",
"datasetInsertRequest": {
"resource": {
"datasetName": {
"projectId": "composed-arbor-332218",
"datasetId": "test_dataset01"
},
"info": {},
"acl": {}
}
},
"datasetInsertResponse": {
"resource": {
"datasetName": {},
"info": {},
"acl": {}
}
}
},
"resourceLocation": {
"currentLocations": [
"US"
]
}
},
"insertId": "-1xu7wfdomww",
"resource": {
"type": "bigquery_resource",
"labels": {
"project_id": "composed-arbor-332218"
}
},
"timestamp": "2021-11-29T13:09:36.786871Z",
"severity": "ERROR",
"logName": "projects/composed-arbor-332218/logs/cloudaudit.googleapis.com%2Factivity",
"receiveTimestamp": "2021-11-29T13:09:37.260699618Z"
}
ERROR_MESSAGE3{
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"status": {
"code": 7,
"message": "VPC Service Controls: Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier: E5iKrWnTk1vKv1QaCyimHrd72QKravJFneBr-jrN2emWz1WMx5CqjQ."
},
"authenticationInfo": {
"principalEmail": "[email protected]"
},
"requestMetadata": {
"requestAttributes": {},
"destinationAttributes": {}
},
"serviceName": "bigquery.googleapis.com",
"methodName": "google.cloud.bigquery.v2.DatasetService.InsertDataset",
"authorizationInfo": [
{
"resource": "projects/composed-arbor-332218",
"permission": "bigquery.datasets.create",
"resourceAttributes": {}
}
],
"resourceName": "projects/composed-arbor-332218/datasets/test_dataset01",
"metadata": {
"@type": "type.googleapis.com/google.cloud.audit.BigQueryAuditMetadata",
"datasetCreation": {
"dataset": {
"datasetName": "projects/composed-arbor-332218/datasets/test_dataset01",
"acl": {
"policy": {}
}
},
"reason": "CREATE"
}
}
},
"insertId": "-1xu7wfdomwy",
"resource": {
"type": "bigquery_dataset",
"labels": {
"project_id": "composed-arbor-332218",
"dataset_id": "test_dataset01"
}
},
"timestamp": "2021-11-29T13:09:36.788652Z",
"severity": "ERROR",
"logName": "projects/composed-arbor-332218/logs/cloudaudit.googleapis.com%2Factivity",
"receiveTimestamp": "2021-11-29T13:09:37.260699618Z"
}
[해설]・principal Email에 표시
[email protected]
.• 이 계정은 BigQuery에 로그를 출력하는 데 사용되는 서비스 계정입니다.
· VPC 서비스 경계에서 이 계정으로부터의 접근을 허가해야 합니다.
구현 단계
1. VM이 서비스 계정으로 생성
gapps-reports
을 Access Context Manager에 등록하는 액세스 수준에는 다음과 같은 제한이 있습니다.또한 Cloud Shell에서는 Access Context Manager를 사용할 수 없으므로 Compute Engine 등의 환경에서 구현해야 합니다.
[IAM 및 관리][IAM]을 조직 수준에서 엽니다.
Access Context Manager編集者
작용.Access Content Manager는 조직 수준의 서비스를 제공합니다.프로젝트 수준의 IAM과 관리에서 서비스 계정에 역할
Access Context Manager編集者
을 할당해도 권한이 부여되지 않는다.2. 서비스 계정의 방문 등급 등록
for_vm
을 업무용 VM에 첨부한 후 시작합니다.$ vi memberspec.yaml
- members:
- serviceAccount:gapps-[email protected]
gapps-reports
에 로그인합니다.$ gcloud access-context-manager levels create export_gdrive_auditlog_access \
--basic-level-spec=memberspec.yaml \
--combine-function=OR \
--description="Access level for export Google Drive auditlog permission." \
--title="Access_Level for Export Google Drive AuditLog"
Create request issued for: [export_gdrive_auditlog_access]
Created level [export_gdrive_auditlog_access].
export_gdrive_auditlog_access
라는 액세스 레벨을 생성합니다.3. VPC 서비스 경계의 창설
[보안] [VPC Service Controls]를 열고 [새 경계]를 클릭합니다.
값
시험을 준비하다
경계 이름
for_reports
이름 입력
경계 유형
기본 테두리
기본 상태 유지
항목
My Project 89493
보호할 BigQuery 항목 지정
서비스 이름
BigQuery API
보호할 서비스 API 지정
VPC 액세스 서비스
모든 서비스
기본 상태 유지
업로드 정책:액세스 수준
Access_Level for Export Google Drive AuditLog
등록된 액세스 수준 지정
Ingress rules
없음
기본 상태 유지
Egress rules
없음
기본 상태 유지
총결산
그럼, 어때요?
Google Workspace의 감사 로그라면 보안을 유지할 필요가 있다고 생각합니다.
IP 주소로는 BigQuery에 감사 로그를 쓰는 작업을 제어할 수 없을 것 같습니다.
클라우드 로그링은 서비스 계정을 정할 수 있기 때문에 VPC 서비스 경계에서 제어할 수 있다.
Google Workspace 관리 콘솔에서 BigQuery Export 시점 설정
Cloud IAM 중
[email protected]
제작깨달았지만 실제로 일지를 보면 확실히 확실해.
의외로 여러 가지 설정이 필요한데 전편에 맞춰서 해보시면 좋을 것 같아요^^
각주
VPC Service Controls 경계 문제 해결을 위한 Unique Identifier ↩︎
사용자 또는 서비스 계정에 대한 액세스 제한 ↩︎
Reference
이 문제에 관하여([BigQuery] 드라이버 감사 로그 내보내기(후편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/hssh2_bin/articles/81530959db15ab24570d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)