EKM 연결 만들기

이 페이지에서는 Virtual Private Cloud(VPC) 네트워크를 통해 외부 키 관리(EKM) 제공업체에 연결하도록 Cloud 외부 키 관리자(Cloud EKM)를 설정하는 방법을 설명합니다.

VPC를 통해 EKM을 지원하는 Cloud KMS 위치에서 VPC를 통해 외부 키를 사용할 수 있습니다. 자세한 내용은 Cloud KMS 위치 페이지를 참조하세요.

용어

  • EKM 연결

    외부 키 관리자에 대한 연결을 구성하는 데 사용되는 Cloud KMS 리소스입니다. Google Cloud 콘솔에서는 이를 VPC 연결을 통한 EKM이라고 합니다.

  • VPC 프로젝트

    외부 키 관리자에 연결하는 데 사용되는 VPC 리소스를 보관하는 프로젝트입니다.

  • 키 프로젝트

    EKM 연결 리소스와 Cloud KMS의 Cloud EKM 키가 저장된 프로젝트입니다. 키 프로젝트가 VPC 프로젝트와 동일할 수도 있지만 이것이 필수는 아닙니다.

  • 암호화 공간

    외부 키 관리 파트너 내의 리소스 컨테이너입니다. 암호화 공간은 고유한 암호화 공간 경로로 식별됩니다. 암호화 공간 경로의 형식은 외부 키 관리 파트너에 따라 다릅니다(예: v0/cryptospaces/YOUR_UNIQUE_PATH).

시작하기 전에

아래 단계를 완료하면 Cloud EKM 키를 사용하여 데이터를 보호할 수 있게 됩니다.

새 프로젝트 만들기

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.

    리소스 관리 페이지로 이동

  2. 새 Google Cloud 프로젝트를 만들거나 기존 프로젝트를 선택합니다.

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Cloud EKM 가격 책정에 대해 자세히 알아볼 수 있습니다.

Cloud KMS 사용 설정

  1. 프로젝트에 Cloud Key Management Service API를 사용 설정합니다.

    Cloud Key Management Service API 사용 설정

  2. 프로젝트의 Cloud EKM 서비스 계정을 기록합니다. 다음 예시에서는 PROJECT_NUMBER를 Google Cloud 프로젝트의 프로젝트 번호로 바꿉니다. 이 정보는 Google Cloud 콘솔을 사용하여 Cloud EKM 키를 만들 때마다 표시됩니다.

    service-PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com
    

gcloud CLI가 최신 상태인지 확인

Google Cloud CLI를 사용하려면 다음 명령어를 사용하여 최신 상태인지 확인합니다.

gcloud CLI

gcloud components update

VPC 네트워크 준비

VPC 네트워크를 설정할 때는 두 가지 옵션이 있습니다.

기본적으로 새 프로젝트에는 방화벽 규칙이 자동 입력되는 자동 모드 네트워크가 포함됩니다. 프로덕션 용도로 VPC 네트워크를 사용하지 않는다면 기본 자동 모드 네트워크가 가장 빠른 시작 방법입니다.

외부 키 관리자를 온프레미스에서 실행 중이고 외부 키 관리자에 하이브리드 연결을 통해 연결하려는 경우 서브넷 IP 주소 범위를 제어할 수 있는 커스텀 모드 네트워크를 사용해야 합니다.

VPC를 설정하려면 아래의 단계를 따르세요.

  1. 비공개 Google 액세스 사용 설정

    외부 키 관리자는 각 요청에 포함된 OIDC 토큰을 확인해야 합니다. 토큰을 확인하려면 www.googleapis.com 도메인 이름에서 OAuth2 공개 키를 검색해야 합니다. 외부 키 관리자가 Google Cloud에서 실행되고 인터넷을 통한 액세스 권한이 없으면(예를 들어 외부 IP가 없거나 방화벽으로 차단되는 VM), 비공개 Google 액세스 구성 안내를 따릅니다.

  2. IP 범위 35.199.192.0/19의 방화벽 구성

    Cloud EKM의 요청은 이 범위에서 시작됩니다. 외부 키 관리자가 리슨하는 포트에서 TCP에 대해 인그레스 및 이그레스 허용 방화벽 규칙을 모두 만듭니다.

하이브리드 연결 설정

외부 키 관리자가 온프레미스로 실행되는 경우 하이브리드 연결 솔루션을 사용해서 VPC를 온프레미스 네트워크에 연결합니다. 연결을 설정한 후 다음 추가 단계를 수행합니다.

  1. 비공개 Google 액세스 사용 설정

    외부 키 관리자는 각 요청에 포함된 OIDC 토큰을 확인해야 합니다. 토큰을 확인하려면 www.googleapis.com 도메인 이름에서 OAuth2 공개 키를 검색해야 합니다. 외부 키 관리자가 온프레미스에서 실행되고 인터넷을 통한 액세스 권한이 없으면 온프레미스 호스트에 대한 비공개 Google 액세스 구성 안내를 따릅니다.

  2. IP 범위 35.199.192.0/19의 방화벽 구성

    Cloud EKM의 요청은 이 범위에서 시작됩니다. 외부 키 관리자가 리슨하는 포트에서 TCP 트래픽을 허용하도록 온프레미스 네트워크 방화벽 또는 비슷한 장비를 구성합니다.

  3. VPC에 IP 범위 35.199.192.0/19에 대한 반환 경로가 있는지 확인

    온프레미스 네트워크에 35.199.192.0/19 대상에 대한 경로가 있어야 합니다. 이 요구사항을 충족하는 방법은 온프레미스 대상의 반환 경로 전략을 참조하세요.

온프레미스 대상의 반환 경로 전략

  • 정적 라우팅을 사용하는 Cloud VPN 터널의 경우 대상이 35.199.192.0/19이고 다음 홉이 Cloud VPN 터널인 온프레미스 네트워크에 수동으로 경로를 만듭니다. 정책 기반 라우팅을 사용하는 Cloud VPN 터널의 경우 Cloud VPN의 로컬 트래픽 선택기와 온프레미스 VPN 게이트웨이의 원격 트래픽 선택기를 구성하여 35.199.192.0/19를 포함시킵니다.

  • 동적 라우팅을 사용하는 Cloud VPN 터널 또는 Cloud Interconnect의 경우 터널이나 VLAN 연결을 관리하는 Cloud Router의 BGP 세션에서 35.199.192.0/19커스텀 공지 모드를 구성합니다.

외부 키 관리자 설정

EKM 제공업체의 안내에 따라 EKM을 설정합니다.

암호화 공간 설정

파트너 관리형 EKM 계약의 일부로 Cloud EKM을 사용하는 경우 파트너의 프로비저닝 프로세스 중에서 이러한 단계가 완료되었습니다.

EKM 제공업체가 Cloud KMS의 EKM 키 관리와 호환되는 경우 EKM에서 다음 설정 및 구성 단계를 수행해야 합니다.

  • EKM에서 Cloud KMS 관리형 리소스의 암호화 공간을 만듭니다.

  • Cloud KMS 서비스 계정에 암호화 공간과 여기에서 생성된 키에 대한 액세스 권한을 부여합니다.

  • 키 액세스 근거 정책을 설정하여 허용 또는 거부해야 하는 액세스 근거를 정의합니다.

이 각 단계의 정확한 프로세스는 EKM에 따라 달라집니다. 자세한 내용은 EKM 제공업체의 문서를 참조하세요.

서비스 디렉터리 서비스 엔드포인트 만들기

외부 키 관리자의 비공개 IP 주소와 포트를 가리키는 VPC 프로젝트의 서비스 디렉터리 서비스 엔드포인트를 만들고 구성합니다. 여러 EKM 복제본 앞에서 부하 분산기를 사용하는 경우 부하 분산기의 IP 주소 및 포트를 사용합니다. 서비스 디렉터리 서비스 엔드포인트의 network 필드가 채워져 있는지 확인합니다.

Cloud EKM에 VPC 액세스 권한 부여

키 프로젝트와 VPC 프로젝트가 동일하더라도 각 키 프로젝트에 대해 프로젝트 대신 VPC에 액세스하도록 Cloud EKM을 승인해야 합니다. 액세스를 승인하면 키 프로젝트의 키가 VPC 프로젝트에서 VPC를 사용할 수 있습니다.

  1. 프로젝트에 Cloud EKM 서비스 계정이 있는지 확인합니다.

    gcloud CLI

    gcloud beta services identity create \
      --service=cloudkms.googleapis.com \
      --project=KEY_PROJECT_ID
    
  2. VPC 프로젝트의 servicedirectory.viewerservicedirectory.pscAuthorizedServiceservice-KEY_PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com에 부여합니다. 프로젝트 ID와 번호를 가져오는 데 도움이 필요하면 프로젝트 만들기 및 관리를 참조하세요.

    gcloud CLI

    gcloud projects add-iam-policy-binding VPC_PROJECT_ID \
      --member=serviceAccount:service-KEY_PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com \
      --role=roles/servicedirectory.viewer
    
    gcloud projects add-iam-policy-binding VPC_PROJECT_ID \
      --member=serviceAccount:service-KEY_PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com \
      --role=roles/servicedirectory.pscAuthorizedService
    

EKM 연결 만들기

외부 키 관리자를 Cloud EKM에 연결하려면 키 프로젝트에서 EKM 연결을 만드세요.

콘솔

  1. Google Cloud 콘솔에서 KMS 인프라 페이지로 이동합니다.

    KMS 인프라로 이동

  2. 연결 만들기를 클릭합니다.

  3. 연결 이름에 연결 이름을 입력합니다.

  4. 리전에서 EKM 연결 위치를 선택합니다. 이 연결과 연관된 Cloud KMS 키는 연결과 동일한 위치에 있어야 합니다.

  5. 서비스 리소스 ID(self_link) 필드에 서비스 디렉터리 서비스 엔드포인트 만들기 섹션에서 만든 서비스 디렉터리 서비스의 값을 입력합니다. 서비스 디렉터리 서비스는 연결과 동일한 위치에 있어야 합니다.

  6. 호스트 이름 필드에 외부 키 관리자의 호스트 이름을 추가하세요.

  7. 인증서에서 인증서 추가를 클릭하여 외부 키 관리자에 대해 하나 이상의 X.509 서버 인증서를 업로드합니다. 인증서는 DER 형식이어야 합니다.

  8. EKM 관리 모드의 경우 수동을 선택하여 수동으로 관리되는 외부 키의 EKM 연결을 사용하거나 Cloud KMS를 선택하여 조정된 외부 키의 EKM 연결을 사용합니다.

  9. EKM 관리 모드Cloud KMS를 선택한 경우 암호화 공간 경로 필드에 EKM에서 제공하는 암호화 공간 경로를 입력합니다.

  10. 선택사항. EKM 연결을 이 프로젝트 및 위치의 기본 연결로 설정하려면 연결을 기본값으로 설정 체크박스를 선택합니다. 다른 EKM 연결이 현재 이 프로젝트 및 위치의 기본 연결로 설정된 경우 이 EKM 연결은 기존 기본값을 대체합니다.

  11. 만들기를 클릭합니다.

gcloud

명령줄에서 Cloud KMS를 사용하려면 먼저 최신 버전의 Google Cloud CLI로 설치 또는 업그레이드하세요.

수동으로 관리되는 외부 키의 EKM 연결을 만들려면 다음 명령어를 실행합니다.

gcloud beta kms ekm-connections create EKM_CONNECTION \
    --location LOCATION \
    --service-directory-service SERVICE_DIRECTORY_SERVICE \
    --hostname HOSTNAME \
    --server-certificates-files SERVER_CERTIFICATE_FILES \
    --key-management-mode manual

다음을 바꿉니다.

  • EKM_CONNECTION: EKM 연결의 이름입니다.
  • LOCATION: EKM 연결을 만들 Cloud KMS 위치입니다. 이 연결과 연관된 Cloud KMS 키는 연결과 동일한 위치에 있어야 합니다.
  • SERVICE_DIRECTORY_SERVICE: 연결에 대한 서비스 디렉터리 서비스의 리소스 ID입니다.
  • HOSTNAME: 외부 키 관리자의 호스트 이름입니다.
  • SERVER_CERTIFICATE_FILES: 외부 키 관리자의 X.509 서버 인증서가 포함된 쉼표로 구분된 파일 목록입니다. 인증서는 DER 형식이어야 합니다.

조정된 외부 키의 EKM 연결을 만들려면 다음 명령어를 실행합니다.

gcloud beta kms ekm-connections create EKM_CONNECTION \
    --location LOCATION \
    --service-directory-service SERVICE_DIRECTORY_SERVICE \
    --hostname HOSTNAME \
    --server-certificates-files SERVER_CERTIFICATE_FILES \
    --key-management-mode cloud-kms \
    --crypto-space-path CRYPTO_SPACE_PATH

다음을 바꿉니다.

  • EKM_CONNECTION: EKM 연결의 이름입니다.
  • LOCATION: EKM 연결을 만들 Cloud KMS 위치입니다. 이 연결과 연관된 Cloud KMS 키는 연결과 동일한 위치에 있어야 합니다.
  • SERVICE_DIRECTORY_SERVICE: 연결에 대한 서비스 디렉터리 서비스의 리소스 ID입니다.
  • HOSTNAME: 외부 키 관리자의 호스트 이름입니다.
  • SERVER_CERTIFICATE_FILES: 외부 키 관리자의 X.509 서버 인증서가 포함된 쉼표로 구분된 파일 목록입니다. 인증서는 DER 형식이어야 합니다.
  • CRYPTO_SPACE_PATH: EKM 제공업체가 제공하는 암호화 공간 경로입니다.

모든 플래그 및 가능한 값에 대한 정보를 보려면 --help 플래그와 함께 명령어를 실행하세요.

API

이 예시에서는 curl을 HTTP 클라이언트로 사용하여 API 사용을 보여줍니다. 액세스 제어에 대한 자세한 내용은 Cloud KMS API 액세스를 참조하세요.

조정된 외부 키의 EKM 연결을 만들려면 다음 명령어를 실행합니다.

curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ekmConnections" \
    --request "POST" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --header "x-goog-user-project: PROJECT_ID" \
    --data '{
      "name": "EKM_CONNECTION",
      "serviceResolvers": [
        {
          "serviceDirectoryService": "SERVICE_DIRECTORY_SERVICE",
          "hostname": "HOSTNAME",
          "serverCertificates": [
            {
              SERVER_CERTIFICATES
            }
          ]
        }
      ]
      "keyManagementMode": "CLOUD_KMS",
      "cryptoSpacePath": "CRYPTO_SPACE_PATH"
    }'

다음을 바꿉니다.

  • PROJECT_ID: EKM 연결을 만들 프로젝트의 ID입니다.
  • LOCATION: EKM 연결을 만들 Cloud KMS 위치입니다.
  • EKM_CONNECTION: EKM 연결에 사용할 이름입니다.
  • SERVER_CERTIFICATES: 리프 서버 인증서를 나타내는 최대 10개의 Certificate 객체 목록입니다.
  • HOSTNAME: 외부 키 관리자의 호스트 이름입니다.
  • CRYPTO_SPACE_PATH: EKM 제공업체가 제공하는 암호화 공간 경로입니다.

수동으로 관리되는 외부 키의 EKM 연결을 만들려면 다음 명령어를 실행합니다.

curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ekmConnections" \
    --request "POST" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --header "x-goog-user-project: PROJECT_ID" \
    --data '{
      "name": "EKM_CONNECTION",
      "serviceResolvers": [
        {
          "serviceDirectoryService": "SERVICE_DIRECTORY_SERVICE",
          "hostname": "HOSTNAME",
          "serverCertificates": [
            {
              SERVER_CERTIFICATES
            }
          ]
        }
      ]
    }'

다음을 바꿉니다.

  • PROJECT_ID: EKM 연결을 만들 프로젝트의 ID입니다.
  • LOCATION: EKM 연결을 만들 Cloud KMS 위치입니다.
  • EKM_CONNECTION: EKM 연결에 사용할 이름입니다.
  • SERVER_CERTIFICATES: 리프 서버 인증서를 나타내는 최대 10개의 Certificate 객체 목록입니다.
  • HOSTNAME: 외부 키 관리자의 호스트 이름입니다.

자세한 내용은 EkmConnection.create API 참고 리소스를 참조하세요.

인증서 상태

EKM 연결용 인증서를 업로드한 후에는 EKM 연결의 전체 인증서 상태뿐 아니라 KMS 인프라 페이지의 각 인증서 상태를 점검할 수 있습니다.

각 EKM 연결의 인증서 상태 열에 전체 상태가 포함됩니다. EKM 연결 상태가 활성이 아니면 EKM 연결의 인증서를 업데이트하는 것이 좋습니다.

EKM 연결과 개별 인증서 모두 다음 상태를 가질 수 있습니다.

  • 활성: 인증서가 유효하고 만료 날짜가 가깝지 않습니다.
  • 30일 내 만료: 인증서가 유효하지만 만료 날짜가 30일 이내입니다.
  • 만료됨: 인증서가 만료되었고 더 이상 유효하지 않습니다. 만료된 인증서를 업데이트하는 것이 좋습니다.
  • 유효하지 않음: 인증서가 활성 상태가 아닙니다. 인증서 시작 날짜가 현재 날짜 이후인 경우에 해당할 수 있습니다.

인증서가 더 이상 유효하지 않으면 Google Cloud 콘솔에서 EKM 연결을 업데이트하세요.

콘솔

  1. Google Cloud 콘솔에서 KMS 인프라 페이지로 이동합니다.

    KMS 인프라로 이동

  2. 업데이트해야 하는 인증서가 있는 VPC 연결을 통한 EKM의 이름을 클릭합니다.

  3. 연결 수정을 클릭합니다.

  4. 인증서 추가를 클릭하여 외부 키 관리자에 대해 하나 이상의 X.509 서버 인증서를 업로드합니다. 인증서는 DER 형식이어야 합니다.

  5. 만료된 인증서를 삭제합니다. 만료된 인증서로 마우스를 가져가서 오른쪽에 있는 삭제 아이콘을 선택합니다.

  6. 연결 업데이트를 클릭하여 VPC 연결을 통한 EKM을 업데이트합니다.

EKM 연결을 기본값으로 설정

EKM 연결을 지정된 프로젝트 및 위치의 기본 연결로 설정할 수 있습니다. 프로젝트 및 위치에 기본 EKM 연결이 설정되면 다른 EKM 연결이 선택되지 않은 한 해당 위치의 키링에 생성된 VPC 키의 새로운 Cloud EKM 연결이 표시된 EKM 연결을 사용합니다.

EKM 연결을 프로젝트 및 위치의 기본값으로 설정하려면 다음 단계를 완료하세요.

콘솔

  1. Google Cloud 콘솔에서 KMS 인프라 페이지로 이동합니다.

    KMS 인프라로 이동

  2. 기본값으로 설정할 EKM 연결을 클릭합니다.

  3. 연결 수정을 클릭합니다.

  4. 기본 연결에서 연결을 LOCATION의 기본값으로 설정 체크박스를 선택합니다.

  5. 연결 업데이트를 클릭합니다.

gcloud CLI

gcloud beta kms ekm-config update
  --location=LOCATION
  --default-ekm-connection=projects/PROJECT_ID/locations/LOCATION/ekmConnections/DEFAULT_EKM_CONNECTION

다음을 바꿉니다.

  • LOCATION: 기본 EKM 연결을 설정할 Cloud KMS입니다.
  • PROJECT_ID: 기본 EKM 연결을 설정할 프로젝트의 이름입니다.
  • DEFAULT_EKM_CONNECTION: 이 위치의 기본값으로 설정할 EKM 연결의 이름입니다. EKM 연결 위치는 LOCATION에 지정된 위치와 일치해야 합니다.

API

위치의 기본 EKM 연결을 설정하려면 EkmConfig.patch 메서드를 사용합니다.

curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ekmConfig" \
    --request "PATCH" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --data '{"defaultEkmConnection": "projects/PROJECT_ID/locations/LOCATION/ekmConnections/DEFAULT_EKM_CONNECTION"}'

다음을 바꿉니다.

  • PROJECT_ID: 기본 EKM 연결을 설정할 프로젝트의 ID입니다.
  • LOCATION: 기본 EKM 연결을 설정할 Cloud KMS입니다.
  • DEFAULT_EKM_CONNECTION: 이 위치의 기본값으로 설정할 EKM 연결의 이름입니다. EKM 연결 위치는 LOCATION에 지정된 위치와 일치해야 합니다.

다른 EKM 연결이 이 위치의 기본값으로 설정된 경우 선택된 EKM 연결이 이를 기본값으로 바꿉니다. 특정 프로젝트 및 위치에는 하나의 EKM 연결만 기본 설정될 수 있습니다.

다음 단계