IAM으로 액세스 제어

이 페이지에서는 Certificate Authority Service의 IAM 역할을 설명합니다.

CA Service는 액세스 제어에 Identity and Access Management(IAM) 역할을 사용합니다. IAM을 사용하면 누가(ID) 어떤 리소스에 대한 어떤 액세스 권한(역할)을 갖는지 정의하여 액세스를 제어할 수 있습니다. IAM 역할에는 사용자가 Google Cloud 리소스에서 특정 작업을 수행할 수 있게 해주는 권한 집합이 포함되어 있습니다. IAM 역할을 부여하는 동안 최소 권한의 원칙을 따르면 Certificate Authority Service 리소스의 무결성을 보호하고 CA 풀과 전체 공개 키 인프라(PKI)의 보안을 관리할 수 있습니다.

IAM 역할을 사용자나 서비스 계정에 할당하는 방법은 IAM 문서에서 리소스에 대한 액세스 권한 부여, 변경, 취소를 참조하세요.

사전 정의된 역할

다음 표에는 사전 정의된 IAM 역할 및 각 역할과 관련된 권한이 나와 있습니다.

역할 권한 설명
CA Service 감사자
roles/privateca.auditor
privateca.caPools.get
privateca.caPools.getIamPolicy
privateca.caPools.list
privateca.certificateAuthorities.list
privateca.certificateAuthorities.get
privateca.certificateTemplates.get
privateca.certificateTemplates.getIamPolicy
privateca.certificateTemplates.list
privateca.certificates.list
privateca.certificates.get
privateca.locations.get
privateca.locations.list
privateca.operations.get
privateca.operations.list
privateca.certificateRevocationLists.list
privateca.certificateRevocationLists.get
privateca.certificateRevocationLists.getIamPolicy
resourcemanager.projects.get
resourcemanager.projects.list
CA Service 감사자 역할은 모든 CA Service 리소스에 대한 읽기 전용 액세스 권한을 가지며 CA 풀, CA, 인증서, 해지 목록, IAM 정책, 프로젝트의 속성을 검색하고 나열할 수 있습니다. CA 풀의 보안 및 운영 검증을 담당하고 서비스 관리를 위한 일일 책임이 없는 개인에게 이 역할을 할당하는 것이 좋습니다.
CA Service 인증서 요청자
roles/privateca.certificateRequester
privateca.certificates.create CA Service 인증서 요청자 역할은 CA 풀에 인증서 요청을 제출할 수 있습니다. 인증서를 요청할 수 있는 신뢰할 수 있는 개별 사용자에게 이 역할을 부여하는 것이 좋습니다.

이 역할을 가진 사용자는 발급 정책에 따라 임의의 인증서를 요청할 수 있습니다.

CA Service 인증서 관리자 역할과 달리 이 역할에서는 사용자가 새로 발급된 인증서를 가져오거나 나열하거나 CA 풀에 대한 정보를 가져올 수 없습니다.
CA Service 워크로드 인증서 요청자
roles/privateca.workloadCertificateRequester
privateca.certificates.createForSelf CA Service 워크로드 인증서 요청자는 CA Service의 인증서를 호출자 ID로 요청할 수 있습니다.
CA Service 인증서 관리자
roles/privateca.certificateManager
roles/privateca.auditor의 모든 권한 및 다음 권한:
privateca.certificates.create
CA Service 인증서 관리자는 CA Service 인증서 요청자와 같은 CA 풀에 인증서 발급 요청을 제출할 수 있습니다. 또한 이 역할은 CA Service 감사자 역할의 권한도 상속합니다. 관리자 또는 리드 엔지니어와 같은 CA 풀에서 인증서 요청을 생성, 추적, 검토할 수 있는 개인에게 이 역할을 할당하는 것이 좋습니다.
CA Service 인증서 템플릿 사용자
roles/privateca.templateUser
privateca.certificateTemplates.get
privateca.certificateTemplates.list
privateca.certificateTemplates.use
CA Service 인증서 템플릿 사용자는 인증서 템플릿을 읽고 나열하고 사용할 수 있습니다.
CA Service 작업 관리자
roles/privateca.caManager
roles/privateca.auditor의 모든 권한 및 다음 권한:
privateca.certificates.update
privateca.caPools.create
privateca.caPools.delete
privateca.caPools.update
privateca.certificateAuthorities.create
privateca.certificateAuthorities.delete
privateca.certificateAuthorities.update
privateca.certificateRevocationLists.update
privateca.certificateTemplates.create
privateca.certificateTemplates.delete
privateca.certificateTemplates.update
privateca.certificates.update
privateca.operations.cancel
privateca.operations.delete
resourcemanager.projects.get
resourcemanager.projects.list
storage.buckets.create
CA Service 작업 관리자는 CA 풀과 CA를 만들고 업데이트하고 삭제할 수 있습니다. 이 역할은 인증서를 취소하고 Cloud Storage 버킷을 만들 수도 있습니다. 또한 CA Service 감사자와 동일한 기능이 포함됩니다. 이 역할에서는 개인이 CA 풀의 발급 정책을 구성하고 조직의 CA 풀을 구성하고 배포할 책임이 있습니다.

이 역할로는 인증서를 만들 수 없습니다. 이렇게 하려면 CA Service 인증서 요청자, CA Service 인증서 관리자 또는 CA Service 관리자 역할을 사용합니다.
CA Service 관리자
roles/privateca.admin
roles/privateca.certificateManager, roles/privateca.caManager의 모든 권한 및 다음 권한:
privateca.*.setIamPolicy
privateca.caPools.use
privateca.operations.cancel
privateca.operations.delete
privateca.resourcemanager.projects.get
privateca.resourcemanager.projects.list
storage.buckets.create
CA Service 관리자 역할은 CA Service 작업 관리자 및 CA Service 인증서 관리자 역할의 권한을 상속합니다. 이 역할은 CA Service 내에서 모든 작업을 수행할 수 있습니다. CA Service 관리자는 CA 풀의 IAM 정책을 설정하고 Cloud Storage 버킷을 만들 수 있습니다. 서비스가 설정된 후에는 이 역할을 거의 할당하지 않는 것이 좋습니다. 이 역할에서 개인은 다른 사람에게 권한을 할당하고 CA Service에서 인증서 요청을 관리하는 등 관리의 모든 측면을 수행할 수 있습니다. 승인되지 않은 액세스 또는 사용을 방지하기 위해 이 역할 계정에 특수 제어 및 액세스를 구현하는 것이 좋습니다.

CA Service 서비스 에이전트 역할

CA 생성 중에 기존 Cloud KMS 서명 키 또는 Cloud Storage 버킷을 제공할 때 CA Service 서비스 에이전트 서비스 계정(service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com)에는 각 리소스에 대한 액세스 권한을 부여해야 합니다.

Cloud KMS의 경우 서명 키를 사용하고 공개 키를 읽으려면 roles/cloudkms.signerVerifier가 필요합니다. roles/viewer는 Cloud Monitoring 통합의 키를 모니터링하기 위해 필요합니다.

Cloud Storage의 경우 CA 인증서와 CRL을 버킷에 쓰려면 roles/storage.objectAdmin이 필요합니다. roles/storage.legacyBucketReader는 버킷의 Cloud Monitoring 통합을 모니터링하기 위해 필요합니다. 자세한 내용은 Cloud Storage의 IAM 역할을 참조하세요.

API를 통해 서비스에 액세스할 때 다음 명령어를 실행하세요.

  1. 서비스 에이전트 역할을 가진 서비스 계정을 만듭니다.

    gcloud

    gcloud beta services identity create --service=privateca.googleapis.com --project=PROJECT_ID
    

    각 항목의 의미는 다음과 같습니다.

    • PROJECT_ID는 CA 풀이 생성되는 프로젝트의 고유 식별자입니다.
  2. 다음 gcloud 명령어를 사용하여 서비스 계정에 roles/cloudkms.signerVerifierroles/viewer 역할을 부여합니다.

    기존 Cloud KMS 서명 키가 제공된 경우:

    gcloud

    gcloud kms keys add-iam-policy-binding 'CRYPTOKEY_NAME' \
      --keyring='KEYRING_NAME' \
      --location='LOCATION' \
      --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com' \
      --role='roles/cloudkms.signerVerifier'
    

    각 항목의 의미는 다음과 같습니다.

    • 'CRYPTOKEY_NAME'은 키 이름입니다.
    • 'KEYRING_NAME'은 키링의 이름입니다.
    • 'LOCATION'은 키링을 만든 Cloud KMS 위치입니다.
    • 'PROJECT_NUMBER'는 서비스 계정의 이름입니다.
    gcloud kms keys add-iam-policy-binding 'CRYPTOKEY_NAME' \
      --keyring='KEYRING_NAME' \
      --location='LOCATION' \
      --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com' \
      --role='roles/viewer'
    

    기존 Cloud Storage 버킷이 제공되면 gsutil 명령줄 도구를 사용하여 Cloud Storage 버킷에 필요한 역할을 바인딩합니다.

    gsutil

    gsutil iam ch serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com:roles/storage.objectAdmin gs://BUCKET_NAME
    

    각 항목의 의미는 다음과 같습니다.

    • PROJECT_NUMBER는 서비스 계정의 고유 식별자입니다.
    • BUCKET_NAME은 Cloud Storage 버킷의 이름입니다.
    gsutil iam ch serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com:roles/storage.legacyBucketReader gs://BUCKET_NAME
    

API 권한

다음 표에는 호출자가 CA Service API의 각 메서드를 호출하는 데 필요한 권한이 나와 있습니다.

권한 설명
privateca.caPools.create 인증 기관(CA) 풀을 만듭니다.
privateca.caPools.update CA 풀을 업데이트합니다.
privateca.caPools.list 프로젝트의 CA 풀을 나열합니다.
privateca.caPools.get CA 풀을 검색합니다.
privateca.caPools.delete CA 풀을 삭제합니다.
privateca.caPools.getIamPolicy CA 풀의 IAM 정책을 검색합니다.
privateca.caPools.setIamPolicy CA 풀의 IAM 정책을 설정합니다.
privateca.certificateAuthorities.create CA를 만듭니다.
privateca.certificateAuthorities.delete CA를 삭제하도록 예약합니다.
privateca.certificateAuthorities.get CA 또는 CA 인증서 서명 요청을 가져옵니다.
privateca.certificateAuthorities.list 프로젝트의 CA를 나열합니다.
privateca.certificateAuthorities.update CA 활성화, 사용 설정, 중지, 복원을 포함하여 CA를 업데이트합니다.
privateca.certificates.create CA Service의 인증서를 요청합니다.
privateca.certificates.createForSelf 발신자 ID를 사용하여 CA Service에서 인증서를 요청합니다.
privateca.certificates.get 인증서와 해당 메타데이터를 가져옵니다.
privateca.certificates.list CA의 모든 인증서를 나열합니다.
privateca.certificates.update 취소를 포함한 인증서의 메타데이터를 업데이트합니다.
privateca.certificateRevocationLists.get CA에서 인증서 해지 목록(CRL)을 가져옵니다.
privateca.certificateRevocationLists.getIamPolicy CRL의 IAM 정책을 가져옵니다.
privateca.certificateRevocationLists.list CA의 모든 CRL을 나열합니다.
privateca.certificateRevocationLists.setIamPolicy CRL의 IAM 정책을 설정합니다.
privateca.certificateRevocationLists.update CRL을 업데이트합니다.
privateca.certificateTemplates.create 인증서 템플릿을 만듭니다.
privateca.certificateTemplates.get 인증서 템플릿을 검색합니다.
privateca.certificateTemplates.list 모든 인증서 템플릿을 나열합니다.
privateca.certificateTemplates.update 인증서 템플릿을 업데이트합니다.
privateca.certificateTemplates.delete 인증서 템플릿을 삭제합니다.
privateca.certificateTemplates.getIamPolicy 인증서 템플릿의 IAM 정책을 가져옵니다.
privateca.certificateTemplates.setIamPolicy 인증서 템플릿의 IAM 정책을 설정합니다.
privateca.certificateTemplates.use 인증서 템플릿을 사용합니다.
privateca.operations.cancel 장기 실행 작업을 취소합니다.
privateca.operations.delete 장기 실행 작업을 삭제합니다.
privateca.operations.get 장기 실행 작업을 가져옵니다.
privateca.operations.list 프로젝트의 장기 실행 작업을 나열합니다.

다음 단계

  • IAM이 Google Cloud 리소스의 권한 및 액세스 범위를 중앙에서 관리하는 방법 알아보기
  • IAM 정책 구성 방법 알아보기