데이터 액세스 감사 로그 구성

이 가이드에서는 Google Cloud 콘솔이나 API를 사용하여 Cloud 프로젝트, 결제 계정, 폴더, 조직에서 데이터 액세스 감사 로그 일부나 전체를 사용 설정하거나 중지하는 방법을 설명합니다.

시작하기 전에

데이터 액세스 감사 로그를 구성하기 전에 다음 정보를 이해해야 합니다.

  • BigQuery를 제외한 데이터 액세스 감사 로그는 기본적으로 사용 중지되어 있습니다. BigQuery 이외의 Google Cloud 서비스에 대해 데이터 액세스 감사 로그를 작성하려면 로그를 명시적으로 사용 설정해야 합니다.

  • 데이터 액세스 감사 로그는 Google 지원팀에서 계정 문제 해결을 돕기 위해 사용됩니다. 따라서 가능하면 데이터 액세스 감사 로그를 사용 설정하는 것이 좋습니다.

구성 개요

Google Cloud 리소스 및 서비스에 대한 데이터 액세스 감사 로그의 일부 측면을 사용 설정하고 구성할 수 있습니다.

  • 조직: 조직의 데이터 액세스 감사 로그를 사용 설정하고 구성할 수 있으며, 이는 그 조직의 모든 기존 및 신규 클라우드 프로젝트와 폴더에 적용됩니다.

  • 폴더: 폴더의 데이터 액세스 감사 로그를 사용 설정하고 구성할 수 있으며, 이는 그 폴더의 모든 기존 및 신규 클라우드 프로젝트에 적용됩니다. 프로젝트의 상위 조직에서 사용 설정된 데이터 액세스 감사 로그는 사용 중지할 수 없습니다.

  • 프로젝트: 개별 클라우드 프로젝트에 대해 데이터 액세스 감사 로그를 구성할 수 있습니다. 상위 조직 또는 폴더에서 사용 설정된 데이터 액세스 감사 로그를 사용 중지할 수 없습니다.

  • 결제 계정: 결제 계정의 데이터 액세스 감사 로그를 구성하려면 Google Cloud CLI를 사용합니다. 데이터 액세스 감사 로그와 결제 계정에서 gcloud CLI를 사용하는 방법에 대한 자세한 내용은 gcloud beta billing accounts set-iam-policy 명령어 참조 문서를 참조하세요.

  • 기본 구성: 조직, 폴더 또는 클라우드 프로젝트의 기본 데이터 액세스 감사 로그 구성을 지정할 수 있습니다. 이 구성은 이후에 데이터 액세스 감사 로그를 생성하기 시작하는 Google Cloud 서비스에 적용됩니다. 자세한 내용은 기본 구성 설정을 참조하세요.

  • 서비스: 어떤 서비스의 감사 로그를 수신할지 지정할 수 있습니다. 예를 들어 Compute Engine의 감사 로그는 수신하고 Cloud SQL의 감사 로그는 수신하지 않도록 지정할 수 있습니다. 감사 로그를 생성할 수 있는 Google Cloud 서비스의 목록은 감사 로그를 생성하는 Google 서비스를 참조하세요.

  • 로그 유형: 데이터 액세스 감사 로그에 기록되는 작업 유형을 구성할 수 있습니다. 데이터 액세스 감사 로그 유형에는 다음 세 가지가 있습니다.

    • ADMIN_READ: 메타데이터 또는 구성 정보를 읽는 작업을 기록합니다.

    • DATA_READ: 사용자가 제공한 데이터를 읽는 작업을 기록합니다.

    • DATA_WRITE: 사용자가 제공한 데이터를 쓰는 작업을 기록합니다.

    예를 들어 Cloud DNS는 세 가지 유형의 데이터 액세스 로그를 모두 작성하지만 DATA_WRITE 작업만 기록하도록 데이터 액세스 감사 로그를 구성할 수 있습니다.

  • 면제된 주 구성원: 데이터 액세스가 기록되지 않도록 특정 주 구성원을 제외할 수 있습니다. 예를 들어 내부 테스트 계정의 Cloud Debugger 작업이 기록되지 않도록 면제할 수 있습니다. 사용자 및 그룹을 포함하여 올바른 주 구성원 목록을 보려면 Binding 유형 참조를 확인하세요.

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 서비스의 로그를 사용 중지할 수 없습니다.

  • 정보의 종류를 사용 설정할 수 있지만 상위 조직 또는 폴더에서 사용 설정된 정보의 종류를 중지할 수 없습니다.

  • 주 구성원을 면제 목록에 추가할 수 있지만 상위 조직 또는 폴더의 면제 목록에서 삭제할 수 없습니다.

  • 상위 조직 또는 폴더 수준에서는 Cloud 프로젝트에 데이터 액세스 감사 로그가 구성되지 않은 경우에도 해당 조직 또는 폴더 내의 Cloud 프로젝트에 데이터 액세스 감사 로그를 사용 설정할 수 있습니다.

액세스 제어

Identity and Access Management 역할 및 권한은 데이터 액세스 감사 기본 로깅 구성의 IAM 정책을 보고 관리하는 것을 포함한 Logging 데이터에 대한 액세스를 제어합니다.

데이터 액세스 구성과 연결된 정책을 보거나 설정하려면 적절한 리소스 수준의 권한이 있는 역할이 필요합니다. 이러한 리소스 수준 역할을 부여하는 방법은 Cloud 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

  • IAM 정책을 설정하려면 resourcemanager.RESOURCE_TYPE.setIamPolicy 권한이 있는 역할이 필요합니다.

  • IAM 정책을 보려면 resourcemanager.RESOURCE_TYPE.getIamPolicy 권한이 있는 역할이 필요합니다.

데이터 액세스 감사 로그를 보는 데 필요한 권한과 역할의 목록은 IAM으로 액세스 제어를 참조하세요.

콘솔에서 데이터 액세스 감사 로그 구성

이 섹션에서는 콘솔을 사용하여 데이터 액세스 감사 로그를 구성하는 방법을 설명합니다.

또한 API 또는 Google Cloud CLI를 사용하여 이러한 태스크를 프로그래매틱 방식으로 수행할 수 있습니다. 자세한 내용은 API로 데이터 액세스 감사 로그 구성을 참조하세요.

콘솔에서 감사 로그 구성 옵션에 액세스하려면 다음 단계를 수행합니다.

  1. 콘솔에서 IAM 및 관리자 > 감사 로그를 선택합니다.

    감사 로그로 이동

  2. 기존 Cloud 프로젝트, 폴더 또는 조직을 선택합니다.

감사 로그 사용 설정

데이터 액세스 감사 로그를 사용 설정하려면 다음을 수행합니다.

  1. 데이터 액세스 감사 로그 구성 표의 서비스 열에서 Google Cloud 서비스를 하나 이상 선택합니다.

  2. 로그 유형 탭에서 선택한 서비스에 사용 설정하려는 데이터 액세스 감사 로그 유형을 선택합니다.

  3. 저장을 클릭합니다.

감사 로그가 성공적으로 사용 설정되면 표에 체크표시 가 나타납니다.

다음 예시에서는 Access Approval 서비스에 데이터 읽기 감사 로그 유형이 사용 설정된 것을 확인할 수 있습니다.

감사 로그 구성

데이터 액세스 감사 로그를 생성하는 모든 Google Cloud 서비스에 감사 로그를 사용 설정할 수도 있습니다. 데이터 액세스 감사 로그 구성 표에서 모든 Google Cloud 서비스를 선택합니다.

이 일괄 구성 방법은 현재 리소스에 사용할 수 있는 Google Cloud 서비스에만 적용됩니다. 새 Google Cloud 서비스가 추가되면 기본 감사 구성을 상속합니다.

데이터 액세스 감사 로그 사용 중지

데이터 액세스 감사 로그를 사용 중지하려면 다음을 수행합니다.

  1. 데이터 액세스 감사 로그 구성 표에서 Google Cloud 서비스를 하나 이상 선택합니다.

  2. 정보 패널의 로그 유형 탭에서 선택한 서비스에 중지하려는 데이터 액세스 감사 로그 유형을 선택합니다.

  3. 저장을 클릭합니다.

표에서 데이터 액세스 감사 로그에 대시가 표시되면 성공적으로 중지된 것입니다. 사용 설정된 데이터 액세스 감사 로그에는 체크표시가 표시됩니다.

면제 설정

예외를 설정하여 특정 서비스의 데이터 액세스 감사 로그를 생성하는 주 구성원을 제어할 수 있습니다. 면제된 주 구성원을 추가하면 선택한 로그 유형에서 해당 주 구성원의 감사 로그가 생성되지 않습니다.

면제를 설정하려면 다음을 수행합니다.

  1. 데이터 액세스 감사 로그 구성 표의 서비스 열에서 Google Cloud 서비스를 선택합니다.

  2. 정보 패널에서 면제 주 구성원 탭을 선택합니다.

  3. 면제 주 구성원 추가에서 선택한 서비스의 데이터 액세스 감사 로그 생성에서 제외할 주 구성원을 입력합니다.

    면제 주 구성원 추가 버튼을 필요한 횟수만큼 클릭하여 여러 주 구성원을 추가할 수 있습니다.

    사용자와 그룹을 포함하여 올바른 주 구성원 목록은 Binding 유형 참조를 참조하세요.

  4. 사용 중지된 로그 유형에서 중지하려는 데이터 액세스 감사 로그 유형을 선택합니다.

  5. 저장을 클릭합니다.

서비스에 면제된 주 구성원을 성공적으로 추가한 경우 데이터 액세스 감사 로그 구성 표의 면제 주 구성원 열에 숫자가 표시됩니다.

면제 목록에서 주 구성원을 삭제하려면 다음을 수행합니다.

  1. 데이터 액세스 감사 로그 구성 표의 서비스 열에서 Google Cloud 서비스를 선택합니다.

  2. 정보 패널에서 면제 주 구성원 탭을 선택합니다.

  3. 주 구성원 이름 위로 마우스를 가져가고 표시된 삭제 아이콘을 선택합니다.

  4. 주 구성원의 이름이 취소선 텍스트로 표시된 다음 저장을 클릭합니다.

면제된 주 구성원의 정보를 수정하려면 다음을 수행합니다.

  1. 데이터 액세스 감사 로그 구성 표의 서비스 열에서 Google Cloud 서비스를 선택합니다.

  2. 정보 패널에서 면제 주 구성원 탭을 선택합니다.

  3. 주 구성원 이름을 확장합니다.

  4. 주 구성원에 맞게 데이터 액세스 감사 로그 유형을 선택하거나 선택 해제합니다.

  5. 저장을 클릭합니다.

기본 구성 설정

Cloud 프로젝트, 폴더 또는 조직의 모든 신규 및 기존 Google Cloud 서비스가 상속받는 구성을 설정할 수 있습니다. 그러면 새 Google Cloud 서비스를 사용할 수 있게 되어 조직의 주 구성원이 사용하기 시작할 때 이 기본 구성 설정이 적용됩니다. 해당 서비스는 다른 Google Cloud 서비스에 이미 설정된 감사 로깅 정책을 상속하므로 데이터 액세스 감사 로그가 캡처됩니다.

기본 구성을 설정하거나 수정하려면 다음을 수행합니다.

  1. 기본 구성 설정을 클릭합니다.

  2. 정보 패널의 로그 유형 탭에서 사용 설정하거나 중지하려는 데이터 액세스 감사 로그 유형을 선택합니다.

  3. 저장을 클릭합니다.

  4. 정보 패널에서 면제 주 구성원 탭을 선택합니다.

  5. 면제 주 구성원 추가에서 선택한 서비스의 데이터 액세스 감사 로그 생성에서 제외할 주 구성원을 입력합니다.

    면제 주 구성원 추가 버튼을 필요한 횟수만큼 클릭하여 여러 주 구성원을 추가할 수 있습니다.

    사용자와 그룹을 포함하여 올바른 주 구성원 목록은 Binding 유형 참조를 참조하세요.

  6. 사용 중지된 로그 유형에서 중지하려는 데이터 액세스 감사 로그 유형을 선택합니다.

  7. 저장을 클릭합니다.

API로 데이터 액세스 감사 로그 구성

이 섹션에서는 API 및 gcloud CLI를 사용하여 프로그래매틱 방식으로 데이터 액세스 감사 로그를 구성하는 방법을 설명합니다.

콘솔을 사용하여 이러한 태스크의 대부분을 수행할 수도 있습니다. 자세한 내용은 이 페이지의 콘솔에서 데이터 액세스 감사 로그 구성을 참조하세요.

IAM 정책 객체

API를 사용하여 데이터 액세스 감사 로그를 구성하려면 Cloud 프로젝트, 폴더, 조직과 연결된 IAM 정책을 수정해야 합니다. 감사 로그 구성은 정책의 auditConfigs 섹션에 있습니다.

"auditConfigs": [
  {
    object(AuditConfig)
  }
]

자세한 내용은 IAM 정책 유형을 참조하세요.

다음 섹션에서는 AuditConfig 객체를 자세히 설명합니다. 구성을 변경하는 데 사용되는 API 및 gcloud CLI 명령어는 getIamPolicy 및 setIamPolicy를 참조하세요.

객체 AuditConfig

감사 로그 구성은 AuditConfig 객체의 목록으로 구성됩니다. 각 객체는 한 서비스의 로그를 구성하거나 모든 서비스의 더 광범위한 구성을 설정합니다. 각 객체는 다음과 같이 나타납니다.

{
  "service": SERVICE,
  "auditLogConfigs": [
    {
      "logType": "ADMIN_READ"
      "exemptedMembers": [ PRINCIPAL,]
    },
    {
      "logType": "DATA_READ"
      "exemptedMembers": [ PRINCIPAL,]
    },
    {
      "logType": "DATA_WRITE"
      "exemptedMembers": [ PRINCIPAL,]
    },
  ]
},

SERVICE"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

일반 설정

다음은 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

모든 데이터 액세스 감사 로그 중지

Cloud 프로젝트에서 BigQuery를 제외한 모든 데이터 액세스 감사 로그를 중지하려면 새 IAM 정책에 빈 auditConfigs: 섹션을 포함합니다.

JSON

"auditConfigs": [],

YAML

auditConfigs:

새 정책에서 auditConfigs 섹션을 완전히 삭제해도 setIamPolicy가 기존 데이터 액세스 감사 로그 구성을 변경하지 않습니다. 자세한 내용은 setIamPolicy 업데이트 마스크를 참조하세요.

BigQuery 데이터 액세스 감사 로그를 중지할 수 없습니다.

getIamPolicy, setIamPolicy

Resource Manager API의 getIamPolicysetIamPolicy 메서드를 사용하여 IAM 정책을 읽고 씁니다. 다음과 같이 여러 메서드 중에 선택하여 사용할 수 있습니다.

  • 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단계를 따르세요.

  1. getIamPolicy 메서드 중 하나를 사용하여 현재 정책을 읽습니다. 정책을 임시 파일에 저장합니다.
  2. 임시 파일의 정책을 수정합니다. auditConfigs 섹션만 변경(또는 추가)합니다.
  3. setIamPolicy 메서드 중 하나를 사용하여 수정된 정책을 임시 파일에 씁니다.

Resource Manager에서 개발자가 첫 번째 단계에서 정책을 읽은 후에 다른 개발자가 이 정책을 변경했음을 감지하면 setIamPolicy가 실패합니다. 이 경우 앞의 세 단계를 반복합니다.

예시

다음 예시에서는 gcloud 명령어와 Resource Manager API를 사용하여 프로젝트의 데이터 액세스 감사 로그를 구성하는 방법을 보여줍니다.

조직 데이터 액세스 감사 로그를 구성하려면 명령어와 API 메서드의 'projects' 버전을 'organizations' 버전으로 바꿉니다.

gcloud

gcloud projects 명령어를 사용하여 데이터 액세스 감사 로그를 구성하려면 다음을 수행합니다.

  1. 프로젝트의 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
    
  2. /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
    
  3. 다음과 같이 새 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

Resource Manager API를 사용하여 데이터 액세스 감사 로그를 구성하려면 다음을 수행합니다.

  1. getIamPolicy API 메서드에 다음 매개변수를 지정하여 프로젝트의 IAM 정책을 읽습니다.

    • 리소스: projects/PROJECT_ID
    • 요청 본문: 비워둠

    이 메서드는 아래와 같이 현재 정책 객체를 반환합니다. 이 프로젝트의 정책에는 아직 auditConfigs 섹션이 없습니다.

    {
      "bindings": [
      {
        "members": [
          "user:colleague@example.com"
        ],
        "role": "roles/editor"
      },
      {
        "members": [
          "user:myself@example.com"
        ],
        "role": "roles/owner"
      }
    ],
    "etag": "BwUsv2gimRs=",
    "version": 1
    

    }

  2. 현재 정책을 수정합니다.

    • auditConfigs 섹션을 변경 또는 추가합니다.

      데이터 액세스 감사 로그를 중지하려면 auditConfigs:[] 섹션에 빈 값을 포함합니다.

    • etag 값을 유지합니다.

    다음 단계에서 updateMask를 주의해서 설정한다면 새 정책 객체에서 다른 모든 정보를 삭제할 수도 있습니다. Cloud SQL 데이터 쓰기 감사 로그를 사용 설정하도록 수정된 정책은 다음과 같습니다.

    {
      "auditConfigs": [
        {
          "auditLogConfigs": [
            {
              "logType": "DATA_WRITE"
            }
          ],
          "service": "cloudsql.googleapis.com"
        }
      ],
      "etag": "BwVM-FDzeYM="
    }
    
  3. setIamPolicy API 메서드를 사용하여 새 정책을 씁니다. 이때 매개변수는 다음과 같이 지정합니다.

    • 리소스: projects/PROJECT_ID
    • 요청 본문:
      • updateMask: "auditConfigs,etag"
      • policy: 수정한 정책 객체

setIamPolicy 업데이트 마스크

이 섹션에서는 setIamPolicy 메서드에 사용되는 updateMask 매개변수의 중요성을 설명하고 gcloud CLI set-iam-policy 명령어를 사용할 때 프로젝트 또는 조직에 실수로 해를 끼치지 않도록 주의가 필요한 이유를 설명합니다.

setIamPolicy API methodupdateMask 매개변수를 사용하여 업데이트할 정책 필드를 제어합니다. 예를 들어 마스크에 bindings가 포함되어 있지 않으면 정책 섹션을 실수로 변경할 수 없습니다. 반면에 마스크에 bindings가 포함되어 있으면 정책 섹션이 항상 업데이트됩니다. bindings의 업데이트된 값을 포함하지 않으면 섹션이 정책에서 완전히 삭제됩니다.

setIamPolicy를 호출하는 gcloud projects set-iam-policy 명령어로는 updateMask 매개변수를 지정할 수 없습니다. 대신 이 명령어는 다음과 같은 방법으로 updateMask 값을 계산합니다.

  • updateMask에는 항상 bindingsetag 필드가 포함됩니다.
  • set-iam-policy에서 제공된 정책 객체에 auditConfigs 등의 다른 최상위 필드가 포함되어 있으면 해당 필드가 updateMask에 추가됩니다.

이러한 규칙의 결과로 set-iam-policy 명령어는 다음과 같이 동작합니다.

  • 새 정책에서 auditConfigs 섹션을 생략해도 이 섹션이 업데이트 마스크에 없으므로 auditConfigs 섹션의 이전 값(있는 경우)은 변경되지 않습니다. 이 경우 해가 되지 않으나 혼동이 발생할 수 있습니다.

  • 새 정책 객체에서 bindings를 생략하면 정책에서 bindings 섹션이 삭제됩니다. 이 섹션이 업데이트 마스크에 표시되기 때문입니다. 이 경우 매우 유해한 결과가 초래될 수 있으며, 모든 주 구성원이 Cloud 프로젝트에 액세스할 수 없게 됩니다.

  • 새 정책 객체에서 etag를 생략하면 정책에 대한 동시 변경사항 검사가 사용 중지되고 사용자의 변경사항이 실수로 다른 사용자의 변경사항을 덮어쓰게 될 수 있습니다.