IAM을 사용하여 Cloud Deploy 액세스 제한

모든 Google Cloud 제품과 마찬가지로, Identity and Access Management는 인증된 작업을 수행할 수 있는 사용자 및 서비스 계정을 제어하여 Cloud Deploy를 보호합니다.

이 문서에서는 IAM의 일부 기능을 설명하고 Cloud Deploy를 사용하여 관리되는 애플리케이션 배포를 보호하는 방법을 안내합니다. 다음은 Cloud Deploy의 작업 및 리소스에 대한 액세스를 제한할 수 있는 구체적인 몇 가지 방법입니다.

시작하기 전에

IAM 고급 기능 정보

Cloud Deploy는 역할 및 권한 외에도 다음과 같은 IAM 기능을 사용하여 이러한 제어를 제공합니다.

IAM 정책 정보

IAM 정책은 바인딩 및 메타데이터 모음입니다. 역할 바인딩은 하나 이상의 주 구성원(사용자, 그룹 또는 서비스 계정)과 바인딩 사용 여부를 제어하는 컨텍스트별 조건에 단일 역할을 부여합니다.

IAM 정책에 대한 자세한 내용은 정책 이해를 참조하세요.

IAM 조건 정보

IAM 조건을 사용하면 런타임 시 계산된 조건에 따라 Cloud Deploy 리소스 및 작업에 대한 액세스를 제어할 수 있습니다. 예를 들어 지정된 타겟으로만 승격되도록 특정 타겟으로 프로모션을 제한할 수 있습니다.

API 속성 정보

IAM 조건 생성 시 API 속성을 참조하여 요청에 대한 런타임 정보를 가져올 수 있습니다. 예를 들어 API 속성을 사용하여 요청 대상 리소스의 이름을 가져올 수 있습니다. 그런 다음 주 구성원이 액세스할 수 있는 하나 이상의 리소스와 비교할 수 있습니다.

고급 IAM 기능을 사용하여 세분화된 액세스 권한 부여

이러한 고급 IAM 기능을 사용하면 특정 리소스 및 특정 조건에 맞는 리소스 유형에 대한 액세스를 제어할 수 있습니다.

이 섹션의 절차는 특정 리소스(대상, 배포 파이프라인)에 대한 액세스 권한을 부여합니다. 프로젝트 수준에서 액세스 권한을 부여할 수도 있으며, 이렇게 하면 해당 프로젝트의 모든 배포 파이프라인 또는 모든 대상에 영향을 줍니다. 프로젝트의 IAM 정책을 설정하려면 gcloud projects set-iam-policy 명령어를 사용합니다.

gcloud projects set-iam-policy PROJECT_ID POLICY_FILE

특정 전달 파이프라인에 대한 액세스 권한 부여

주 구성원에 적절한 역할을 부여하여 주 구성원이 모든 전달 파이프라인을 생성, 수정, 삭제할 수 있는 권한을 부여할 수 있습니다. 하지만 경우에 따라 특정 파이프라인 한 개 이상에 대해 주 구성원에게 액세스 권한을 부여할 수 있습니다.

이렇게 하려면 역할 바인딩을 사용하여 roles/clouddeploy.developer 역할을 해당 주 구성원과 결합한 후 정책을 적용할 때(setIamPolicy 사용) 액세스 권한이 부여된 전달 파이프라인을 지정합니다.

특정 배포 파이프라인에 대한 액세스 권한을 부여하려면 다음 안내를 따르세요.

  1. 다음 바인딩을 사용하여 정책 파일을 만듭니다.

    bindings:
    - role: roles/clouddeploy.developer
      members:
      - user:fatima@example.com
    

    위의 예시는 사용자에게 역할을 부여하지만 그룹 또는 서비스 계정에 역할을 부여할 수도 있습니다.

  2. 다음 명령어를 호출하여 특정 배포 파이프라인에 정책 파일을 적용합니다.

    gcloud deploy delivery-pipelines set-iam-policy --delivery-pipeline=PIPELINE_NAME --region=REGION POLICY_FILE
    

특정 타겟을 구성할 수 있는 액세스 권한 부여

특정 타겟에 대한 주 구성원 액세스 권한을 부여하려면 역할 바인딩을 사용하면 됩니다. 이렇게 하려면 roles/clouddeploy.operator 역할을 해당 주 구성원과 결합한 후 정책(setIamPolicy 사용)을 적용할 때 액세스를 부여할 타겟을 지정합니다.

특정 타겟에 대한 액세스 권한은 주 구성원에게 해당 타겟을 업데이트하고 삭제할 수 있는 권한을 제공합니다.

  1. 다음 바인딩을 사용하여 정책 파일을 만듭니다.

    bindings:
    - role: roles/clouddeploy.operator
      members:
      - group:cd_operators@example.com
    

    위의 예시는 그룹에 역할을 부여하지만 사용자 또는 서비스 계정에 역할을 부여할 수도 있습니다.

  2. 다음 명령어를 호출하여 정책 파일을 특정 타겟에 적용합니다.

    gcloud deploy targets set-iam-policy TARGET --region=REGION POLICY_FILE
    

특정 타겟으로 출시를 승격할 수 있는 권한 부여

이 절차에서는 주 구성원에 역할을 바인딩하는 정책이 이미 있다고 가정합니다. 여기에서는 대상을 지정하는 조건을 추가합니다.

  1. 다음 바인딩으로 정책 파일을 만듭니다.

    bindings:
    - role: roles/clouddeploy.operator
      members:
      - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com
      condition:
        expression: api.getAttribute("clouddeploy.googleapis.com/rolloutTarget", "") == "prod"
        title: Deploy to prod
    

    이 역할 바인딩에서 condition는 키:값 쌍을 취하며, 여기서 키는 expression이고 값은 CEL 표현식입니다. 이 표현식은 요청에 대한 컨텍스트 속성 집합을 참조하고 불리언으로 평가합니다.

    이 경우 주 구성원이 출시를 승격하려고 할 때 표현식이 평가되어 프로모션 타겟이 표현식의 타겟과 일치하는지 확인합니다.

    표현식은 주 구성원이 승격하려는 대상과 일치하는 API 속성인 clouddeploy.com/rolloutTarget을 사용합니다. 표현식은 주 구성원에게 승격 액세스 권한을 부여하려는 대상과 이를 비교합니다.

  2. 특정 전달 파이프라인의 바인딩을 설정합니다.

    gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
    

    모든 전달 파이프라인에 이 바인딩을 설정하려면 프로젝트 수준에서 설정하면 됩니다.

    gcloud projects set-iam-policy PROJECT POLICY_FILE
    

특정 타겟에 출시를 승인할 수 있는 권한 부여

이 섹션의 바인딩은 파이프라인의 롤아웃을 승인할 수 있는 주 권한을 부여하며 prod 타겟에 권한을 적용하는 조건을 포함합니다.

  1. 다음 바인딩으로 정책 파일을 만듭니다.

    bindings:
    - role: roles/clouddeploy.approver
      members:
      - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com
      condition:
        expression: api.getAttribute("clouddeploy.googleapis.com/rolloutTarget", "") == "prod"
        title: Deploy to prod
    

    이 역할 바인딩에서 condition는 키:값 쌍을 취하며, 여기서 키는 expression이고 값은 CEL 표현식입니다. 표현식은 요청에 대한 컨텍스트 속성 집합을 참조하고 불리언으로 평가합니다.

    이 경우 주 구성원이 출시를 승인하려고 할 때 표현식이 평가되어 타겟이 표현식의 타겟과 일치하는지 확인합니다.

    이 표현식은 출시의 대상인 API 속성 clouddeploy.com/rolloutTarget을 사용하고 주 구성원에게 승인 액세스 권한을 부여하려는 대상과 이를 비교합니다. clouddeploy.googleapis.com/rolloutTarget 속성은 Cloud Deploy에서 지원하는 유일한 API 속성입니다.

  2. 특정 전달 파이프라인의 바인딩을 설정합니다.

    gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
    

    모든 전달 파이프라인에 이 바인딩을 설정하려면 프로젝트 수준에서 설정하면 됩니다.

    gcloud projects set-iam-policy PROJECT POLICY_FILE
    

특정 기간 중 출시 버전을 승격할 수 있는 권한 부여

이 섹션의 바인딩은 파이프라인의 출시를 승격할 수 있는 주 구성원 권한을 부여하며, 결합이 적용되는 동안 기간을 지정하는 조건을 포함합니다.

  1. 다음 바인딩으로 정책 파일을 만듭니다.

    bindings:
    - role: roles/clouddeploy.operator
      members:
      - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com
      condition:
        expression: request.time.getDayOfWeek("America/Los_Angeles") > 0 && request.time.getDayOfWeek("America/Los_Angeles") < 6
        title: Promote during safe window
    

    이 역할 바인딩에서 condition는 키:값 쌍을 취하며, 여기서 키는 expression이고 값은 CEL 표현식입니다. 표현식은 요청에 대한 컨텍스트 속성 집합을 참조하고 불리언으로 평가합니다. 이 표현식은 요청 시간이 월요일에서 금요일 사이인지 확인합니다.

    이 경우 주 구성원이 출시를 승격하려고 할 때 표현식이 평가되어 프로모션 타겟이 표현식의 타겟과 일치하는지 확인합니다.

  2. 특정 전달 파이프라인의 바인딩을 설정합니다.

    gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
    

    모든 전달 파이프라인에 이 바인딩을 설정하려면 프로젝트 수준에서 설정하면 됩니다.

    gcloud projects set-iam-policy PROJECT POLICY_FILE
    

특정 기간 동안 출시를 승인할 수 있는 권한 부여

이 섹션의 바인딩은 출시를 승인할 수 있는 주요 권한을 부여하며 바인딩이 적용되는 동안 기간을 지정하는 조건을 포함합니다.

  1. 다음 바인딩으로 정책 파일을 만듭니다.

    bindings:
    - role: roles/clouddeploy.approver
      members:
      - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com
      condition:
        expression: request.time.getDayOfWeek("America/Los_Angeles") > 0 && request.time.getDayOfWeek("America/Los_Angeles") < 6
        title: Approve during safe window
    

    이 역할 바인딩에서 condition는 키:값 쌍을 사용합니다. 여기서 키는 expression이고 값은 요청에 대한 컨텍스트 속성 집합을 참조하고 불리언을 평가하는 CEL 표현식입니다. 이 표현식은 요청 시간이 월요일에서 금요일 사이인지 확인합니다.

    이 경우 주 구성원이 출시를 승인하려고 할 때 표현식이 평가되어 출시 타겟이 표현식의 타겟과 일치하는지 확인합니다.

  2. 특정 전달 파이프라인의 바인딩을 설정합니다.

    gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
    

    모든 전달 파이프라인에 이 바인딩을 설정하려면 프로젝트 수준에서 설정하면 됩니다.

    gcloud projects set-iam-policy PROJECT POLICY_FILE
    

작업 유형에 따라 작업 재시도 권한 부여

이 섹션의 바인딩은 주 구성원에게 작업 유형에 따라 Cloud Deploy 작업을 재시도할 수 있는 권한을 부여합니다.

  1. 다음 바인딩으로 정책 파일을 만듭니다.

    bindings:
    - role: roles/clouddeploy.operator
      members:
      - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com
      condition:
        expression: api.getAttribute("clouddeploy.googleapis.com/jobType", "") == "deploy"
        title: Retry deploy job
    

    이 역할 바인딩에서 condition는 키:값 쌍을 취하며, 여기서 키는 expression이고 값은 CEL 표현식입니다. 표현식은 요청에 대한 컨텍스트 속성 집합을 참조하고 불리언으로 평가합니다.

    이 경우 주 구성원이 작업을 재시도하려고 할 때 표현식이 평가되어 작업 유형이 표현식의 작업 유형과 일치하는지 확인합니다.

    표현식은 deploy 또는 verify일 수 있는 API 속성 clouddeploy.com/jobType을 사용합니다.

  2. 특정 전달 파이프라인의 바인딩을 설정합니다.

    gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
    

    모든 전달 파이프라인에 이 바인딩을 설정하려면 프로젝트 수준에서 설정하면 됩니다.

    gcloud projects set-iam-policy PROJECT POLICY_FILE