키 버전 폐기 제어

Google Cloud에서는 조직 전체에서 키 버전 폐기 정책을 설정하기 위해 두 가지 조직 정책 제약조건이 사용됩니다.

  • constraints/cloudkms.minimumDestroyScheduledDuration은 조직 내 새 키의 폐기 예약 기간에 대한 최소 길이를 설정하는 데 사용됩니다.
  • constraints/cloudkms.disableBeforeDestroy는 키 버전 폐기를 예약하기 전에 먼저 키 버전을 사용 중지하도록 요구하는 데 사용됩니다.

시작하기 전에

이 페이지의 안내에서는 사용자가 제약조건 사용에 익숙하며 필요한 리소스와 역할이 있다고 가정합니다.

필요한 리소스

이 페이지의 단계를 완료하려면 다음 리소스가 있어야 합니다.

  • 조직
  • 선택사항: 조직 내 폴더 또는 프로젝트 리소스

필요한 역할

조직 정책을 관리하는 데 필요한 권한을 얻으려면 관리자에게 조직의 조직 정책 관리자(roles/orgpolicy.policyAdmin) IAM 역할을 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

이 사전 정의된 역할에는 조직 정책을 관리하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

조직 정책을 관리하려면 다음 권한이 필요합니다.

  • orgpolicy.constraints.list
  • orgpolicy.policies.create
  • orgpolicy.policies.delete
  • orgpolicy.policies.list
  • orgpolicy.policies.update
  • orgpolicy.policy.get
  • orgpolicy.policy.set

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

최소 폐기 예약 기간 필요

키당 최소 폐기 예약 기간 제약조건(constraints/cloudkms.minimumDestroyScheduledDuration)은 새 키의 폐기 예약 기간에 대한 최소 길이를 설정하는 데 사용됩니다. 이 제약조건은 프로젝트, 폴더 또는 조직 수준에서 최소 폐기 예약 기간을 재정의합니다. 이 제약조건은 여전히 필요한 키를 실수로 폐기할 가능성을 줄입니다. 이 제약조건을 더 높은 값으로 설정하면 취소가 불가능해지기 전에 키 폐기를 방지할 시간을 확보할 수 있습니다.

데이터 보관 요구사항이 적용되는 프로덕션 데이터와 같이 원치 않는 키 폐기가 더 유해할 경우 이 제약조건에 더 높은 값을 사용합니다. 개발 또는 테스트 환경과 같이 원치 않는 키 폐기가 덜 유해할 경우 이 제약조건에 더 낮은 값을 사용합니다. 더 낮은 값을 사용하여 시의적절한 암호화 파쇄를 허용할 수도 있습니다. 그러나 이 제약조건은 최솟값으로 폐기 예약 기간이 짧은 새로운 키가 생성되게 할 수 없습니다.

최소 폐기 예약 기간이 필요한 경우 다음 단계를 따르세요.

  1. describe 명령어를 사용하여 조직 리소스의 현재 정책을 가져옵니다. 이 명령어는 이 리소스에 직접 적용되는 정책을 반환합니다.

    gcloud org-policies describe \
      constraints/cloudkms.minimumDestroyScheduledDuration \
      --organization=ORGANIZATION_ID
    

    ORGANIZATION_ID를 조직 리소스의 고유 식별자로 바꿉니다. 조직 ID는 십진수 형식이며 앞에 0이 올 수 없습니다.

    --folder 또는 --project 플래그와 폴더 ID 또는 프로젝트 ID를 각각 사용하여 폴더 또는 프로젝트의 조직 정책을 볼 수도 있습니다.

    현재 조직 정책이 있는 경우 해당 정책이 응답에 반환됩니다. 출력은 다음과 비슷합니다.

    name: organizations/ORGANIZATION_ID/policies/cloudkms.minimumDestroyScheduledDuration
    spec:
      etag: COTP+KYGELiCmsoB
      inheritFromParent: true
      rules:
      - values:
          allowedValues:
          - in:7d
      updateTime: '2023-08-17T14:00:04.424051Z'
    

    정책이 설정되지 않은 경우 describe 명령어는 NOT_FOUND 오류를 반환합니다.

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    
  2. set-policy 명령어를 사용하여 조직에 정책을 설정합니다. 이 명령어는 현재 리소스에 연결된 정책을 덮어씁니다.

    1. 정책을 저장할 /tmp/policy.yaml 임시 파일을 만듭니다.

      name: organizations/ORGANIZATION_ID/policies/cloudkms.minimumDestroyScheduledDuration
      spec:
        rules:
        - values:
            allowedValues:
            - in:MINIMUM_DURATION
      

      다음을 바꿉니다.

      • ORGANIZATION_ID: 조직의 숫자 ID
      • MINIMUM_DURATION: 이 조직의 키에 대해 폐기 예약됨 상태로 유지되는 최소 기간(일)입니다. 7d, 15d, 30d, 60d, 90d, 120d 중 하나여야 합니다.
    2. set-policy 명령어를 실행합니다.

      gcloud org-policies set-policy /tmp/policy.yaml
      
  3. describe --effective를 사용하여 현재의 유효 정책을 확인합니다. 이 명령어는 상속이 포함된 리소스 계층 구조에서 이 시점에 평가된 것에 해당하는 조직 정책을 반환합니다.

    gcloud org-policies describe \
      constraints/cloudkms.minimumDestroyScheduledDuration --effective \
      --organization=ORGANIZATION_ID
    

    출력은 다음과 비슷합니다.

    name: organizations/ORGANIZATION_ID/policies/cloudkms.minimumDestroyScheduledDuration
    spec:
      rules:
        - values:
            allowedValues:
            - 30d
            - 15d
            - 90d
            - 60d
            - 7d
            - 120d
    

    이 조직 정책은 조직 수준에서 설정되었으므로 상속을 허용하는 모든 하위 리소스에 상속됩니다.

폐기 전 키 사용 중지 필요

키 폐기 사용 중지 키 제한 제약조건(constraints/cloudkms.disableBeforeDestroy)을 사용하면 키 폐기를 예약하기 전에 키가 사용 중지되도록 요구할 수 있습니다. 키를 폐기하기 전에 사용 중지하는 것은 키가 사용 중이 아닌지 확인하는 데 도움이 되기 때문에 권장됩니다. 이 제약조건을 신중한 Identity and Access Management 정책과 결합하여 여러 역할의 협력이 필요한 다단계 폐기 프로세스를 만들 수 있습니다.

이 제약조건을 사용하여 다단계 폐기 프로세스를 만들려면 cloudkms.cryptoKeyVersions.update 권한과 cloudkms.cryptoKeyVersions.destroy 권한을 모두 가진 사용자가 없어야 합니다. 이 사용 사례에는 커스텀 역할을 사용해야 합니다.

키 폐기를 예약하기 전에 키가 사용 중지 상태가 되도록 하려면 다음 단계를 따르세요.

gcloud

  1. describe 명령어를 사용하여 조직 리소스의 현재 정책을 가져옵니다. 이 명령어는 이 리소스에 직접 적용되는 정책을 반환합니다.

    gcloud org-policies describe \
      constraints/cloudkms.disableBeforeDestroy \
      --organization=ORGANIZATION_ID
    

    ORGANIZATION_ID를 조직 리소스의 고유 식별자로 바꿉니다. 조직 ID는 십진수 형식이며 앞에 0이 올 수 없습니다.

    --folder 또는 --project 플래그와 폴더 ID 또는 프로젝트 ID를 각각 사용하여 폴더 또는 프로젝트의 조직 정책을 볼 수도 있습니다.

    현재 조직 정책이 있는 경우 해당 정책이 응답에 반환됩니다. 출력은 다음과 비슷합니다.

    name: organizations/ORGANIZATION_ID/policies/cloudkms.disableBeforeDestroy
    spec:
      etag: CPvY+KYGENDwgxA=
      rules:
      - enforce: true
      updateTime: '2023-08-17T14:19:39.033618Z'
    

    정책이 설정되지 않은 경우 describe 명령어는 NOT_FOUND 오류를 반환합니다.

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    
  2. set-policy 명령어를 사용하여 조직에 정책을 설정합니다. 이 명령어는 이미 리소스에 연결된 정책을 덮어씁니다.

    1. 정책을 저장할 /tmp/policy.yaml 임시 파일을 만듭니다.

      name: organizations/ORGANIZATION_ID/policies/cloudkms.disableBeforeDestroy
      spec:
        rules:
        - enforce: true
      

      ORGANIZATION_ID를 조직 리소스의 고유 식별자로 바꿉니다.

    2. set-policy 명령어를 실행합니다.

      gcloud org-policies set-policy /tmp/policy.yaml
      
  3. describe --effective를 사용하여 현재의 유효 정책을 확인합니다. 이 명령어는 상속이 포함된 리소스 계층 구조에서 이 시점에 평가된 것에 해당하는 조직 정책을 반환합니다.

    gcloud org-policies describe \
      constraints/cloudkms.disableBeforeDestroy --effective \
      --organization=ORGANIZATION_ID
    

    출력은 다음과 비슷합니다.

    name: organizations/ORGANIZATION_ID/policies/cloudkms.minimumDestroyScheduledDuration
    spec:
      rules:
      - enforce: true
    

    이 조직 정책은 조직 수준에서 설정되었으므로 상속을 허용하는 모든 하위 리소스에 상속됩니다.

다음 단계