고객 관리 암호화 키 사용

이 주제에서는 Cloud KMS 고객 관리 암호화 키(CMEK)를 사용하여 Cloud Run 서비스 및 이러한 서비스와 관련된 데이터를 보호하는 방법을 보여줍니다. 이 기능을 사용하면 컨테이너 이미지 콘텐츠 보호를 위해 CMEK 키를 사용하여 컨테이너를 배포할 수 있습니다.

다음 사항에 유의하세요.

  • 파일 경로와 같은 파일 메타데이터는 암호화되지 않습니다.
  • CMEK 키를 사용 중지하면 컨테이너 이미지를 배포할 수 없으며 새 인스턴스를 시작할 수 없습니다.

CMEK 키는 Google이 아닌 개발자에 의해 제어되기 때문에 Google을 포함하여 누구라도 키가 사용 중지되거나 삭제되었을 때 이러한 암호화 키로 보호되는 데이터에 액세스할 수 없습니다.

Cloud Run에서 키에 액세스하도록 허용

기존 Cloud KMS 대칭 키를 사용하거나 새 대칭 키를 만들 수 있습니다. 하지만 Cloud Run 서비스에서 키에 액세스하도록 허용하려면 Cloud Run 서비스 계정을 키의 구성원으로 추가하고 Cloud KMS CryptoKey 암호화/복호화 역할을 부여해야 합니다.

Console

  1. Cloud Console의 암호화 키 페이지로 이동합니다.

  2. 키의 키링을 클릭하여 키 목록 페이지를 엽니다.

  3. 키를 선택하고 오른쪽 권한 탭에서 구성원 추가를 클릭합니다.

  4. 새 구성원 텍스트 상자에서 Cloud Run 서비스 에이전트의 이메일을 복사합니다. 여기에는 @serverless-robot-prod.iam.gserviceaccount.com 서픽스가 포함됩니다.

  5. 여기에 Cloud KMS 암호화 키 암호화/복호화 역할을 부여합니다.

명령줄

다음 gcloud kms 명령어를 사용하세요.

gcloud kms keys add-iam-policy-binding 
(KEY : --keyring=KEYRING --location=LOCATION)
--member=MEMBER --role='roles/cloudkms.cryptoKeyEncrypterDecrypter'

바꾸기

  • KEYRING을 키링의 이름으로 바꿉니다.
  • LOCATION을 리전의 이름으로 바꿉니다.
  • MEMBER를 Cloud Run 서비스 에이전트의 이메일로 바꿉니다. 여기에는 @serverless-robot-prod.iam.gserviceaccount.com 서픽스가 포함됩니다.

IAM 역할 roles/cloudkms.cryptoKeyEncrypterDecrypter를 부여하려면 Google Cloud 프로젝트에서 Cloud KMS 리소스 관리 권한이 필요합니다. 소유자(roles/owner) 또는 Cloud KMS 관리자(roles/cloudkms.admin) 역할을 가진 IAM 구성원만 Cloud KMS 리소스에 대한 액세스 권한을 부여하거나 취소할 수 있습니다.

Cloud Run 서비스에 CMEK 사용 설정:

구성을 변경하면 새 버전이 생성됩니다. 이를 변경하는 명시적 업데이트가 없으면 이후 버전에도 이 구성 설정이 자동으로 적용됩니다.

Console

  1. Cloud Run으로 이동

  2. 배포할 새 서비스를 구성하려면 서비스 만들기를 클릭합니다. 기존 서비스를 구성하는 경우 서비스를 클릭한 다음 새 버전 수정 및 배포를 클릭합니다.

  3. 새 서비스를 구성하는 경우 필요에 따라 초기 서비스 설정 페이지를 작성한 후 다음 > 고급 설정을 클릭하여 서비스 구성 페이지에 연결합니다.

  4. 보안 탭을 클릭합니다.

    이미지

  5. 고객 관리 암호화 키(CMEK) 사용 체크박스를 선택한 후 고객 관리 키 선택 풀다운 메뉴에서 원하는 키를 선택합니다.

  6. 만들기 또는 배포를 클릭합니다.

명령줄

서비스에 키를 설정하려면 다음 명령어 중 하나를 사용합니다.

gcloud beta run deploy SERVICE --image IMAGE_URL --key KEY
gcloud beta run services update SERVICE --key KEY

바꾸기

  • SERVICE를 서비스 이름으로 바꿉니다.
  • IMAGE_URL을 컨테이너 이미지에 대한 참조(예: gcr.io/myproject/my-image:latest)로 바꿉니다.
  • KEYprojects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME 형식의 정규화된 키 이름으로 바꿉니다.

YAML

YAML 형식으로 정리된 결과를 반환하는 gcloud run services describe --format export 명령어를 사용하면 기존 서비스 구성을 다운로드하고 볼 수 있습니다. 그런 다음 아래 설명된 필드를 수정하고 gcloud beta run services replace 명령어를 사용하여 수정된 YAML을 업로드할 수 있습니다. 설명된 대로 필드만 수정해야 합니다.

  1. 구성을 보고 다운로드하려면 다음을 실행합니다.

    gcloud run services describe SERVICE --format export > service.yaml
  2. run.googleapis.com/encryption-key 주석을 업데이트합니다.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/encryption-key: projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME

    바꾸기

    • SERVICE를 Cloud Run 서비스 이름으로 바꿉니다.
    • PROJECT_NAME을 키가 생성된 프로젝트의 이름으로 바꿉니다.
    • LOCATION을 키가 생성된 위치로 바꿉니다. Cloud Run 서비스 위치와 일치해야 합니다.
    • RING_NAME을 키링 이름으로 바꿉니다.
    • KEY_NAME을 키 이름으로 바꿉니다.
  3. 다음 명령어를 사용하여 서비스를 새 구성으로 바꿉니다.

    gcloud beta run services replace service.yaml

다른 프로젝트의 키 참조

프로젝트의 서비스 계정이 키를 암호화/복호화하도록 허용된 경우 다른 프로젝트에서 키를 참조할 수 있습니다.

Console

  1. Cloud Run으로 이동

  2. 배포할 새 서비스를 구성하려면 서비스 만들기를 클릭합니다. 기존 서비스를 구성하는 경우 서비스를 클릭한 다음 새 버전 수정 및 배포를 클릭합니다.

  3. 새 서비스를 구성하는 경우 필요에 따라 초기 서비스 설정 페이지를 작성한 후 다음 > 고급 설정을 클릭하여 서비스 구성 페이지에 연결합니다.

  4. 보안 탭을 클릭합니다.

    이미지

  5. 보안 탭에서 다음 안내를 따르세요.

    1. 고객 관리 암호화 키(CMEK) 사용 체크박스를 선택합니다.
    2. 키가 표시되지 않나요? 키 리소스 ID 입력고객 관리 키 선택 풀다운 메뉴에서 선택하여 다음 양식을 표시합니다.

      교차 프로젝트 키

    3. 리소스 ID별로 보안 비밀 추가 양식에서 projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME 형식으로 다른 프로젝트의 보안 비밀을 입력합니다. 또는 액세스 권한이 있으면 키를 선택하고, 보안 비밀 오른쪽에 있는 작업 줄임표를 클릭하고, 풀다운 메뉴에서 리소스 ID 복사를 선택하여 다른 프로젝트에서 리소스 ID를 복사하여 붙여넣을 수 있습니다.
    4. 배포를 클릭합니다.

  6. 만들기 또는 배포를 클릭합니다.

명령줄

서비스에 키를 설정하려면 다음 명령어 중 하나를 사용합니다.

gcloud beta run deploy SERVICE --image IMAGE_URL --key KEY
gcloud beta run services update SERVICE --key KEY

바꾸기

  • SERVICE를 서비스 이름으로 바꿉니다.
  • IMAGE_URL을 컨테이너 이미지에 대한 참조(예: gcr.io/myproject/my-image:latest)로 바꿉니다.
  • KEYprojects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME 형식의 정규화된 키 이름으로 바꿉니다.

보안 설정 보기

서비스의 현재 보안 설정을 확인하려면 다음 안내를 따르세요.

Console

  1. Cloud Run으로 이동

  2. 관심이 있는 서비스를 클릭하여 서비스 세부정보 페이지를 엽니다.

  3. 버전 탭을 클릭합니다.

  4. 오른쪽의 세부정보 패널에서 보안 설정이 보안 탭에 표시됩니다.

명령줄

  1. 다음 명령어를 사용하세요.

    gcloud run services describe SERVICE
  2. 반환된 구성에서 보안 설정을 찾습니다.

다음 단계