이 가이드에서는 Google Cloud 콘솔이나 API를 사용하여 Google Cloud 프로젝트, 결제 계정, 폴더, 조직에서 데이터 액세스 감사 로그 일부나 전체를 사용 설정하거나 중지하는 방법을 설명합니다.
시작하기 전에
데이터 액세스 감사 로그를 구성하기 전에 다음 정보를 이해해야 합니다.
BigQuery를 제외한 데이터 액세스 감사 로그는 기본적으로 사용 중지되어 있습니다. BigQuery 이외의 Google Cloud 서비스에 대해 데이터 액세스 감사 로그를 작성하려면 로그를 명시적으로 사용 설정해야 합니다.
데이터 액세스 감사 로그는 다른 곳으로 라우팅하지 않는 한
_Default
버킷에 저장됩니다. 자세한 내용은 감사 로그 저장 및 라우팅을 참조하세요.데이터 액세스 감사 로그는 Google 지원팀에서 계정 문제 해결을 돕기 위해 사용됩니다. 따라서 가능하면 데이터 액세스 감사 로그를 사용 설정하는 것이 좋습니다.
구성 개요
Google Cloud 리소스 및 서비스에 데이터 액세스 감사 로그를 사용 설정하는 방법을 구성할 수 있습니다.
조직: 조직의 데이터 액세스 감사 로그를 사용 설정하고 구성할 수 있으며, 이는 그 조직의 모든 기존 및 신규 Google Cloud 프로젝트와 폴더에 적용됩니다.
폴더: 폴더의 데이터 액세스 감사 로그를 사용 설정하고 구성할 수 있으며, 이는 그 폴더의 모든 기존 및 신규 Google Cloud 프로젝트에 적용됩니다. 프로젝트의 상위 조직에서 사용 설정된 데이터 액세스 감사 로그는 사용 중지할 수 없습니다.
프로젝트: 개별 Google Cloud 프로젝트에 대해 데이터 액세스 감사 로그를 구성할 수 있습니다. 상위 조직 또는 폴더에서 사용 설정된 데이터 액세스 감사 로그를 사용 중지할 수 없습니다.
결제 계정: 결제 계정의 데이터 액세스 감사 로그를 구성하려면 Google Cloud CLI를 사용합니다. 데이터 액세스 감사 로그와 결제 계정에서 gcloud CLI를 사용하는 방법에 대한 자세한 내용은
gcloud beta billing accounts set-iam-policy
문서를 참조하세요.기본 구성: 조직, 폴더 또는 Google Cloud 프로젝트의 기본 데이터 액세스 감사 로그 구성을 지정할 수 있습니다. 이 구성은 이후에 데이터 액세스 감사 로그를 생성하기 시작하는 Google Cloud 서비스에 적용됩니다. 자세한 내용은 기본 구성 설정을 참조하세요.
권한 유형: 특정 유형의 권한만 확인하는 Google Cloud API가 감사 로그를 내보내도록 지정할 수 있습니다. 자세한 내용은 이 페이지의 권한 유형 섹션을 참고하세요.
면제된 주 구성원: 데이터 액세스가 기록되지 않도록 특정 주 구성원을 제외할 수 있습니다. 예를 들어 내부 테스트 계정의 Cloud Monitoring 작업이 기록되지 않도록 면제할 수 있습니다. 사용자와 그룹을 포함하여 올바른 주 구성원 목록은
Binding
유형 참조를 참조하세요.
Google Cloud 콘솔의 IAM 감사 로그 페이지 또는 API를 사용하여 데이터 액세스 감사 로그를 구성할 수 있습니다. 이러한 방법은 아래 섹션에서 설명합니다.
권한 유형
API 메서드가 IAM 권한을 확인합니다. IAM 권한에는 type
속성이 있으며, 이 속성의 값은 다음 권한 유형 중 하나입니다.
ADMIN_READ
: 이 유형의 IAM 권한은 메타데이터 또는 구성 정보를 읽는 Google Cloud API 메서드에 대해 확인됩니다.DATA_READ
: 이 유형의 IAM 권한은 사용자 제공 데이터를 읽는 Google Cloud API 메서드에 대해 확인됩니다.DATA_WRITE
: 이 유형의 IAM 권한은 사용자 제공 데이터를 쓰는 Google Cloud API 메서드에 대해 확인됩니다.ADMIN_WRITE
: 이 유형의 IAM 권한은 메타데이터 또는 구성 정보를 쓰는 Google Cloud API 메서드에 대해 확인됩니다. 이 유형과 연결된 감사 로그인 관리자 활동 감사 로그는 기본적으로 사용 설정되어 있으며 사용 중지할 수 없습니다.
대부분의 Google Cloud API는 단일 IAM 권한만 확인하며 서비스의 권한과 연결된 유형을 사용 설정하면 호출되는 메서드와 연결된 감사 로그가 사용 설정됩니다.
Google Cloud 콘솔을 사용하거나 API를 호출하여 서비스의 권한 유형을 사용 설정하거나 중지할 수 있습니다.
다음 섹션에서는 일반적으로 Google Cloud API 메서드가 IAM 권한을 확인하는 다른 방법을 설명합니다. 어떤 권한 유형에 대해 어떤 메서드가 확인되는지에 관한 서비스별 정보는 서비스의 감사 로깅 문서를 참고하세요.
데이터 액세스 권한 유형에 대한 IAM 권한 확인
일부 Google Cloud API 메서드는 주 구성원에게 권한 유형이 다른 여러 IAM 권한이 있는지 확인합니다. 감사 로그는 API 호출이 타겟팅하는 프로젝트에서 IAM 권한과 연결된 권한 유형 중 하나가 사용 설정되면 작성됩니다.
예를 들어 API 메서드는 API 요청을 실행하는 주 구성원에게 example.resource.get
(DATA_READ
) 및 example.resource.write
(DATA_WRITE
) 권한이 있는지 확인할 수 있습니다. 서비스가 호출을 실행할 때 감사 로그를 내보내려면 프로젝트에 DATA_WRITE
또는 DATA_READ
만 사용 설정하면 됩니다.
관리자 활동 및 데이터 액세스 IAM 권한 유형이 확인됨
일부 Google Cloud API 메서드는 ADMIN_WRITE
권한 유형이 있는 IAM 권한과 데이터 액세스 권한 유형이 있는 하나 이상의 권한을 모두 확인합니다. 이러한 유형의 API 호출은 관리자 활동 감사 로그를 내보내며, 이 로그는 기본적으로 사용 설정되어 있으며 사용 중지할 수 없습니다.
서비스에서 소유하지 않은 IAM 권한을 확인하는 API 메서드
일부 Google Cloud 서비스에는 다른 서비스에서 소유한 IAM 권한을 확인하는 API 메서드가 있습니다. 이 경우 호출되는 API 메서드와 연결된 감사 로그를 사용 설정하려면 IAM 권한을 소유한 서비스에 권한 유형을 사용 설정해야 합니다.
예를 들어 Cloud Billing에는 Resource Manager가 소유한 ADMIN_READ
권한 유형을 확인하는 API 메서드가 있습니다. Cloud Billing API와 연결된 감사 로그를 사용 설정하려면 서비스 cloudresourcemanager.googleapis.com
에 ADMIN_READ
를 사용 설정해야 합니다.
동일한 API 메서드에서 서로 다른 IAM 권한을 확인함
일부 Google Cloud API는 API 메서드가 호출되는 방식에 따라 다양한 권한 유형으로 서로 다른 IAM 권한을 확인합니다. 감사 로그는 API 호출이 타겟팅하는 프로젝트에서 IAM 권한 유형 중 하나가 사용 설정되면 작성됩니다.
예를 들어 Spanner에는 메서드 호출 방식에 따라 DATA_WRITE
유형으로 IAM 권한을 확인하는 경우도 있고 DATA_READ
유형으로 IAM 권한을 확인하는 경우도 있는 API 메서드가 있습니다. 이 경우 프로젝트에서 Spanner에 DATA_WRITE
를 사용 설정하면 API 호출 시 DATA_WRITE
유형의 IAM 권한이 확인된 경우에만 API와 연결된 감사 로그가 사용 설정됩니다.
서비스별 구성
Google Cloud 서비스 전체(allServices
) 구성과 Google Cloud 서비스별 구성이 모두 있는 경우 서비스의 결과 구성은 두 구성의 합집합입니다.
즉,
특정 Google Cloud 서비스의 데이터 액세스 감사 로그를 사용 설정할 수 있지만 더 광범위한 구성에서 사용 설정된 Google Cloud 서비스의 데이터 액세스 감사 로그를 중지할 수 없습니다.
Google Cloud 서비스의 데이터 액세스 감사 로그에 다른 종류의 정보를 추가할 수 있지만 더 광범위한 구성에서 지정된 종류의 정보를 삭제할 수 없습니다.
주 구성원을 면제 목록에 추가할 수 있지만 더 광범위한 구성의 면제 목록에서 주 구성원을 삭제할 수 없습니다.
BigQuery Data Transfer Service의 경우 데이터 액세스 감사 로그 구성은 기본 감사 로그 구성에서 상속됩니다.
Google Cloud 리소스 구성
Google Cloud 프로젝트, 결제 계정, 폴더, 조직에 대해 데이터 액세스 감사 로그를 구성할 수 있습니다. Google Cloud 서비스에 대한 구성이 상, 하 계층 전체에 존재하는 경우 결과 구성은 해당 구성의 합집합입니다. 즉, Google Cloud 프로젝트 수준에서는 다음과 같이 적용됩니다.
Google Cloud 서비스의 로그를 사용 설정할 수 있지만 상위 조직 또는 폴더에서 사용 설정된 Google Cloud 서비스의 로그를 사용 중지할 수 없습니다.
정보의 종류를 사용 설정할 수 있지만 상위 조직 또는 폴더에서 사용 설정된 정보의 종류를 중지할 수 없습니다.
주 구성원을 면제 목록에 추가할 수 있지만 상위 조직 또는 폴더의 면제 목록에서 삭제할 수 없습니다.
상위 조직 또는 폴더 수준에서는 Google Cloud 프로젝트에 데이터 액세스 감사 로그가 구성되지 않은 경우에도 해당 조직 또는 폴더 내의 Google Cloud 프로젝트에 데이터 액세스 감사 로그를 사용 설정할 수 있습니다.
액세스 제어
Identity and Access Management 역할 및 권한은 데이터 액세스 감사 기본 로깅 구성의 IAM 정책을 보고 관리하는 것을 포함한 Logging 데이터에 대한 액세스를 제어합니다.
데이터 액세스 구성과 연결된 정책을 보거나 설정하려면 적절한 리소스 수준의 권한이 있는 역할이 필요합니다. 이러한 리소스 수준 역할을 부여하는 방법은 Google Cloud 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
IAM 정책을 설정하려면
resourcemanager.RESOURCE_TYPE.setIamPolicy
권한이 있는 역할이 필요합니다.IAM 정책을 보려면
resourcemanager.RESOURCE_TYPE.getIamPolicy
권한이 있는 역할이 필요합니다.
데이터 액세스 감사 로그를 보는 데 필요한 권한과 역할의 목록은 IAM으로 액세스 제어를 참조하세요.
Google Cloud 콘솔에서 데이터 액세스 감사 로그 구성
이 섹션에서는 Google Cloud 콘솔을 사용하여 데이터 액세스 감사 로그를 구성하는 방법을 설명합니다.
또한 API 또는 Google Cloud CLI를 사용하여 이러한 태스크를 프로그래매틱 방식으로 수행할 수 있습니다. 자세한 내용은 API로 데이터 액세스 감사 로그 구성을 참조하세요.
Google Cloud 콘솔에서 감사 로그 구성 옵션에 액세스하려면 다음 단계를 수행합니다.
-
Google Cloud 콘솔에서 감사 로그 페이지로 이동합니다.
검색창을 사용하여 이 페이지를 찾은 경우 부제목이 IAM 및 관리자인 결과를 선택합니다.
기존 Google Cloud 프로젝트, 폴더 또는 조직을 선택합니다.
감사 로그 사용 설정
데이터 액세스 감사 로그를 사용 설정하려면 다음을 수행합니다.
데이터 액세스 감사 로그 구성 표의 서비스 열에서 Google Cloud 서비스를 하나 이상 선택합니다.
로그 유형 탭에서 선택한 서비스에 사용 설정하려는 데이터 액세스 감사 로그 유형을 선택합니다.
저장을 클릭합니다.
감사 로그가 성공적으로 사용 설정되면 표에 check_circle체크표시 아이콘이 포함됩니다.
다음 예시에서는 Access Approval 서비스에 데이터 읽기 감사 로그 유형이 사용 설정된 것을 확인할 수 있습니다.
데이터 액세스 감사 로그를 생성하는 모든 Google Cloud 서비스에 감사 로그를 사용 설정할 수도 있습니다. 데이터 액세스 감사 로그 구성 표에서 모든 Google Cloud 서비스를 선택합니다.
이 일괄 구성 방법은 현재 리소스에 사용할 수 있는 Google Cloud 서비스에만 적용됩니다. 새 Google Cloud 서비스가 추가되면 기본 감사 구성을 상속합니다.
데이터 액세스 감사 로그 사용 중지
데이터 액세스 감사 로그를 사용 중지하려면 다음을 수행합니다.
데이터 액세스 감사 로그 구성 표에서 Google Cloud 서비스를 하나 이상 선택합니다.
정보 패널의 로그 유형 탭에서 선택한 서비스에 중지하려는 데이터 액세스 감사 로그 유형을 선택합니다.
저장을 클릭합니다.
표에서 데이터 액세스 감사 로그에 대시가 표시되면 성공적으로 중지된 것입니다. 사용 설정된 데이터 액세스 감사 로그에는 check_circle 체크표시 아이콘이 표시됩니다.
면제 설정
예외를 설정하여 특정 서비스의 데이터 액세스 감사 로그를 생성하는 주 구성원을 제어할 수 있습니다. 면제된 주 구성원을 추가하면 선택한 로그 유형에서 해당 주 구성원의 감사 로그가 생성되지 않습니다.
면제를 설정하려면 다음을 수행합니다.
데이터 액세스 감사 로그 구성 표의 서비스 열에서 Google Cloud 서비스를 선택합니다.
정보 패널에서 면제 주 구성원 탭을 선택합니다.
면제 주 구성원 추가에서 선택한 서비스의 데이터 액세스 감사 로그 생성에서 제외할 주 구성원을 입력합니다.
면제 주 구성원 추가 버튼을 필요한 횟수만큼 클릭하여 여러 주 구성원을 추가할 수 있습니다.
사용자와 그룹을 포함하여 올바른 주 구성원 목록은
Binding
유형 참조를 참조하세요.사용 중지된 로그 유형에서 중지하려는 데이터 액세스 감사 로그 유형을 선택합니다.
저장을 클릭합니다.
서비스에 면제된 주 구성원을 성공적으로 추가한 경우 데이터 액세스 감사 로그 구성 표의 면제 주 구성원 열에 숫자가 표시됩니다.
면제 목록에서 주 구성원을 삭제하려면 다음을 수행합니다.
데이터 액세스 감사 로그 구성 표의 서비스 열에서 Google Cloud 서비스를 선택합니다.
정보 패널에서 면제 주 구성원 탭을 선택합니다.
주 구성원 이름 위로 마우스를 가져가고 표시된 delete 삭제 아이콘을 선택합니다.
주 구성원의 이름이 취소선 텍스트로 표시된 다음 저장을 클릭합니다.
면제된 주 구성원의 정보를 수정하려면 다음을 수행합니다.
데이터 액세스 감사 로그 구성 표의 서비스 열에서 Google Cloud 서비스를 선택합니다.
정보 패널에서 면제 주 구성원 탭을 선택합니다.
expand_more 주 구성원 이름을 확장합니다.
주 구성원에 맞게 데이터 액세스 감사 로그 유형을 선택하거나 선택 해제합니다.
저장을 클릭합니다.
기본 구성 설정
Google Cloud 프로젝트, 폴더 또는 조직의 모든 신규 및 기존 Google Cloud 서비스가 상속받는 구성을 설정할 수 있습니다. 그러면 새 Google Cloud 서비스를 사용할 수 있게 되어 조직의 주 구성원이 사용하기 시작할 때 이 기본 구성 설정이 적용됩니다. 해당 서비스는 다른 Google Cloud 서비스에 이미 설정된 감사 로깅 정책을 상속하므로 데이터 액세스 감사 로그가 캡처됩니다.
기본 구성을 설정하거나 수정하려면 다음을 수행합니다.
기본 구성 설정을 클릭합니다.
정보 패널의 로그 유형 탭에서 사용 설정하거나 중지하려는 데이터 액세스 감사 로그 유형을 선택합니다.
저장을 클릭합니다.
정보 패널에서 면제 주 구성원 탭을 선택합니다.
면제 주 구성원 추가에서 선택한 서비스의 데이터 액세스 감사 로그 생성에서 제외할 주 구성원을 입력합니다.
면제 주 구성원 추가 버튼을 필요한 횟수만큼 클릭하여 여러 주 구성원을 추가할 수 있습니다.
사용자와 그룹을 포함하여 올바른 주 구성원 목록은
Binding
유형 참조를 참조하세요.사용 중지된 로그 유형에서 중지하려는 데이터 액세스 감사 로그 유형을 선택합니다.
저장을 클릭합니다.
API로 데이터 액세스 감사 로그 구성
이 섹션에서는 API 및 gcloud CLI를 사용하여 프로그래매틱 방식으로 데이터 액세스 감사 로그를 구성하는 방법을 설명합니다.
Google Cloud 콘솔을 사용하여 이 태스크의 대부분을 수행할 수도 있습니다. 자세한 내용은 이 페이지의 Google Cloud 콘솔에서 데이터 액세스 감사 로그 구성을 참조하세요.
IAM 정책 객체
API를 사용하여 데이터 액세스 감사 로그를 구성하려면 Google Cloud 프로젝트, 폴더, 조직과 연결된 IAM 정책을 수정해야 합니다. 감사 로그 구성은 정책의 auditConfigs
섹션에 있습니다.
"auditConfigs": [
{
object(AuditConfig)
}
]
자세한 내용은 IAM 정책 유형을 참조하세요.
다음 섹션에서는 AuditConfig
객체를 자세히 설명합니다.
구성을 변경하는 데 사용되는 API 및 gcloud CLI 명령어는 getIamPolicy 및 setIamPolicy를 참조하세요.
AuditConfig
객체
감사 로그 구성은 AuditConfig
객체의 목록으로 구성됩니다. 각 객체는 한 서비스의 로그를 구성하거나 모든 서비스의 더 광범위한 구성을 설정합니다. 각 객체는 다음과 같이 나타납니다.
{
"service": SERVICE_NAME,
"auditLogConfigs": [
{
"logType": "ADMIN_READ"
"exemptedMembers": [ PRINCIPAL,]
},
{
"logType": "DATA_READ"
"exemptedMembers": [ PRINCIPAL,]
},
{
"logType": "DATA_WRITE"
"exemptedMembers": [ PRINCIPAL,]
},
]
},
SERVICE_NAME에는 "appengine.googleapis.com"
과 같은 값이나 "allServices"
와 같은 특수 값이 있습니다. 구성에 특정 서비스가 언급되어 있지 않으면 해당 서비스에는 더 광범위한 구성이 사용됩니다. 구성이 없으면 해당 서비스에 데이터 액세스 감사 로그가 사용 설정되지 않습니다.
서비스 이름 목록은 로그 서비스를 참조하세요.
AuditConfig
객체의 auditLogConfigs
섹션은 각각 한 종류의 감사 로그 정보를 구성하는 객체 0~3개로 구성된 목록입니다. 목록에서 종류 중 하나를 생략하면 이 종류의 정보는 서비스에 사용 설정되지 않습니다.
PRINCIPAL는 데이터 액세스 감사 로그가 수집되지 않는 사용자입니다. Binding
유형은 사용자와 그룹을 포함하여 여러 가지 유형의 주 구성원을 설명하지만 모든 주 구성원을 데이터 액세스 감사 로그를 구성하는 데 사용할 수 있는 것은 아닙니다.
다음은 JSON 형식과 YAML 형식에서 감사를 구성하는 예시입니다. Google Cloud CLI를 사용할 경우 YAML 형식이 기본값입니다.
JSON
"auditConfigs": [ { "auditLogConfigs": [ { "logType": "ADMIN_READ" }, { "logType": "DATA_WRITE" }, { "logType": "DATA_READ" } ], "service": "allServices" }, { "auditLogConfigs": [ { "exemptedMembers": [ "499862534253-compute@developer.gserviceaccount.com" ], "logType": "ADMIN_READ" } ], "service": "cloudsql.googleapis.com" } ],
YAML
auditConfigs:
- auditLogConfigs:
- logType: ADMIN_READ
- logType: DATA_WRITE
- logType: DATA_READ
service: allServices
- auditLogConfigs:
- exemptedMembers:
- 499862534253-compute@developer.gserviceaccount.com
logType: ADMIN_READ
service: cloudsql.googleapis.com
일반 설정
다음은 Google Cloud 프로젝트에 대한 몇 가지 일반 감사 로그 구성입니다.
모든 데이터 액세스 감사 로그 사용 설정
다음 auditConfigs
섹션에서는 모든 서비스와 주 구성원에 데이터 액세스 감사 로그를 사용 설정합니다.
JSON
"auditConfigs": [ { "service": "allServices", "auditLogConfigs": [ { "logType": "ADMIN_READ" }, { "logType": "DATA_READ" }, { "logType": "DATA_WRITE" }, ] }, ]
YAML
auditConfigs:
- auditLogConfigs:
- logType: ADMIN_READ
- logType: DATA_WRITE
- logType: DATA_READ
service: allServices
한 종류의 서비스 및 정보 사용 설정
다음 구성은 Cloud SQL에 DATA_WRITE
데이터 액세스 감사 로그를 사용 설정합니다.
JSON
"auditConfigs": [ { "service": "cloudsql.googleapis.com", "auditLogConfigs": [ { "logType": "DATA_WRITE" }, ] }, ]
YAML
auditConfigs:
- auditLogConfigs:
- logType: DATA_WRITE
service: cloudsql.googleapis.com
모든 데이터 액세스 감사 로그 중지
Google Cloud 프로젝트에서 BigQuery를 제외한 모든 데이터 액세스 감사 로그를 중지하려면 새 IAM 정책에 빈 auditConfigs:
섹션을 포함합니다.
JSON
"auditConfigs": [],
YAML
auditConfigs:
새 정책에서 auditConfigs
섹션을 완전히 삭제해도 setIamPolicy
가 기존 데이터 액세스 감사 로그 구성을 변경하지 않습니다. 자세한 내용은 setIamPolicy 업데이트 마스크를 참조하세요.
BigQuery 데이터 액세스 감사 로그를 중지할 수 없습니다.
getIamPolicy
및 setIamPolicy
Cloud Resource Manager API의 getIamPolicy
및 setIamPolicy
메서드를 사용하여 IAM 정책을 읽고 씁니다. 다음과 같이 여러 메서드 중에 선택하여 사용할 수 있습니다.
Cloud Resource Manager API는 다음과 같은 메서드를 제공합니다.
projects.getIamPolicy projects.setIamPolicy organizations.getIamPolicy organizations.setIamPolicy
Google Cloud CLI에는 다음 Resource Manager 명령어가 있습니다.
gcloud projects get-iam-policy gcloud projects set-iam-policy gcloud resource-manager folders get-iam-policy gcloud resource-manager folders set-iam-policy gcloud organizations get-iam-policy gcloud organizations set-iam-policy gcloud beta billing accounts get-iam-policy gcloud beta billing accounts set-iam-policy
어떤 메서드를 선택하든 다음 3단계를 따르세요.
getIamPolicy
메서드 중 하나를 사용하여 현재 정책을 읽습니다. 정책을 임시 파일에 저장합니다.- 임시 파일의 정책을 수정합니다.
auditConfigs
섹션만 변경(또는 추가)합니다. setIamPolicy
메서드 중 하나를 사용하여 수정된 정책을 임시 파일에 씁니다.
Resource Manager에서 개발자가 첫 번째 단계에서 정책을 읽은 후에 다른 개발자가 이 정책을 변경했음을 감지하면 setIamPolicy
가 실패합니다. 이 경우 앞의 세 단계를 반복합니다.
예시
다음 예시에서는 gcloud
명령어와 Cloud Resource Manager API를 사용하여 프로젝트의 데이터 액세스 감사 로그를 구성하는 방법을 보여줍니다.
조직의 데이터 액세스 감사 로그를 구성하려면 이러한 명령어와 API 메서드의 'projects' 버전을 'organizations' 버전으로 바꿉니다.
gcloud
gcloud projects
명령어를 사용하여 데이터 액세스 감사 로그를 구성하려면 다음을 수행합니다.
프로젝트의 IAM 정책을 읽고 파일에 저장합니다.
gcloud projects get-iam-policy PROJECT_ID > /tmp/policy.yaml
아래와 같이 정책이 반환됩니다. 이 정책에는 아직
auditConfigs
섹션이 없습니다.bindings: - members: - user:colleague@example.com role: roles/editor - members: - user:myself@example.com role: roles/owner etag: BwVM-FDzeYM= version: 1
/tmp/policy.yaml
에서 정책을 수정하되, 데이터 액세스 감사 로그 구성만 추가하거나 변경합니다.Cloud SQL 데이터-쓰기 데이터 액세스 감사 로그를 사용 설정하도록 수정된 정책의 예가 아래에 나와 있습니다. 처음에 네 줄이 추가되었습니다.
auditConfigs: - auditLogConfigs: - logType: DATA_WRITE service: cloudsql.googleapis.com bindings: - members: - user:colleague@example.com role: roles/editor - members: - user:myself@example.com role: roles/owner etag: BwVM-FDzeYM= version: 1
다음과 같이 새 IAM 정책을 씁니다.
gcloud projects set-iam-policy PROJECT_ID /tmp/policy.yaml
앞의 명령어가 다른 변경사항과의 충돌을 보고할 경우 이 단계를 1단계부터 다시 반복합니다.
JSON
YAML 대신 JSON 형식으로 IAM 정책을 사용하려면 예시에서 다음 gcloud
명령어를 바꿉니다.
gcloud projects get-iam-policy PROJECT_ID --format=json >/tmp/policy.json
gcloud projects set-iam-policy PROJECT_ID /tmp/policy.json
API
Cloud Resource Manager API를 사용하여 데이터 액세스 감사 로그를 구성하려면 다음을 수행합니다.
getIamPolicy API 메서드에 다음 매개변수를 지정하여 프로젝트의 IAM 정책을 읽습니다.
- 리소스:
projects/PROJECT_ID
- 요청 본문: 비워둠
이 메서드는 아래와 같이 현재 정책 객체를 반환합니다. 이 프로젝트의 정책에는 아직
auditConfigs
섹션이 없습니다.{ "version": 1, "etag": "BwXqwxkr40M=", "bindings": [ { "role": "roles/owner", "members": [ "user:myself@example.com" ] } ] }
- 리소스:
현재 정책을 수정합니다.
auditConfigs
섹션을 변경 또는 추가합니다.데이터 액세스 감사 로그를 중지하려면
auditConfigs:[]
섹션에 빈 값을 포함합니다.etag
값을 유지합니다.
다음 단계에서
updateMask
를 주의해서 설정한다면 새 정책 객체에서 다른 모든 정보를 삭제할 수도 있습니다. Cloud SQL 데이터 쓰기 감사 로그를 사용 설정하도록 수정된 정책은 다음과 같습니다.{ "policy": { "auditConfigs": [ { "auditLogConfigs": [ { "logType": "DATA_WRITE" } ], "service": "cloudsql.googleapis.com" } ], "etag": "BwXqwxkr40M=" }, "updateMask": "auditConfigs,etag" }
setIamPolicy API 메서드를 사용하여 새 정책을 씁니다. 이때 매개변수는 다음과 같이 지정합니다.
- 리소스:
projects/PROJECT_ID
- 요청 본문: 수정된 정책을 포함합니다.
- 리소스:
setIamPolicy
업데이트 마스크
이 섹션에서는 setIamPolicy
메서드에 사용되는 updateMask
매개변수의 중요성을 설명하고 gcloud CLI set-iam-policy
명령어를 사용할 때 Google Cloud 프로젝트 또는 조직에 실수로 해를 끼치지 않도록 주의가 필요한 이유를 설명합니다.
setIamPolicy API method
는 updateMask
매개변수를 사용하여 업데이트할 정책 필드를 제어합니다. 예를 들어 마스크에 bindings
가 포함되어 있지 않으면 정책 섹션을 실수로 변경할 수 없습니다. 반면에 마스크에 bindings
가 포함되어 있으면 정책 섹션이 항상 업데이트됩니다. bindings
의 업데이트된 값을 포함하지 않으면 섹션이 정책에서 완전히 삭제됩니다.
setIamPolicy
를 호출하는 gcloud projects set-iam-policy
명령어로는 updateMask
매개변수를 지정할 수 없습니다. 대신 이 명령어는 다음과 같은 방법으로 updateMask
값을 계산합니다.
updateMask
에는 항상bindings
및etag
필드가 포함됩니다.set-iam-policy
에서 제공된 정책 객체에auditConfigs
등의 다른 최상위 필드가 포함되어 있으면 해당 필드가updateMask
에 추가됩니다.
이러한 규칙의 결과로 set-iam-policy
명령어는 다음과 같이 동작합니다.
새 정책에서
auditConfigs
섹션을 생략해도 이 섹션이 업데이트 마스크에 없으므로auditConfigs
섹션의 이전 값(있는 경우)은 변경되지 않습니다. 이 경우 해가 되지 않으나 혼동이 발생할 수 있습니다.새 정책 객체에서
bindings
를 생략하면 정책에서bindings
섹션이 삭제됩니다. 이 섹션이 업데이트 마스크에 표시되기 때문입니다. 이 경우 매우 유해한 결과가 초래될 수 있으며, 모든 주 구성원이 Google Cloud 프로젝트에 액세스할 수 없게 됩니다.새 정책 객체에서
etag
를 생략하면 정책에 대한 동시 변경사항 검사가 사용 중지되고 사용자의 변경사항이 실수로 다른 사용자의 변경사항을 덮어쓰게 될 수 있습니다.