1. 소개
Cloud KMS Autokey는 프로비저닝과 할당을 자동화하여 고객 관리 암호화 키 (CMEK)의 생성 및 사용을 간소화합니다. Autokey를 사용하면 키링, 키, 서비스 계정을 미리 계획하고 프로비저닝할 필요가 없습니다. 대신 Autokey는 리소스가 생성될 때 필요에 따라 Cloud KMS 관리자 대신 위임된 권한을 사용하여 키를 생성합니다.
Autokey에서 생성된 키를 사용하면 HSM 보호 수준, 업무 분리, 키 순환, 위치, 키 특수성 등 업계 표준과 데이터 보안 권장사항을 일관되게 준수할 수 있습니다. Autokey는 Cloud KMS Autokey와 통합되는 Google Cloud 서비스의 리소스 유형과 관련된 일반 가이드라인과 가이드라인을 모두 따르는 키를 만듭니다. Autokey를 사용하여 요청된 키는 생성된 후 설정이 동일한 다른 Cloud HSM 키와 동일하게 작동합니다.
빌드할 항목
이 Codelab에서는 다음을 만들어 Cloud KMS Autokey로 보호된 리소스를 실행합니다.
- 폴더 리소스
- 키를 포함할 프로젝트
- 키 관리 어시스턴트 역할을 하는 서비스 에이전트
- 보호되는 리소스를 호스팅할 프로젝트
- Cloud KMS Autokey로 암호화된 BigQuery 데이터 세트, 영구 디스크, Cloud Storage 버킷
필요한 항목
- Google Cloud 조직
- 이 실습을 완료하려면 Google Cloud 주 구성원에게 조직 수준에서 다음 역할이 있어야 합니다.
- Cloud KMS Autokey 관리자 (roles/cloudkms.autokeyAdmin)
- 폴더 IAM 관리자 (roles/resourcemanager.folderIamAdmin)
- 결제 계정 사용자 (roles/billing.user)
- 결제가 사용 설정된 Google Cloud 프로젝트
- 기본 Linux 환경
2. 폴더 만들기
폴더는 Cloud Platform 리소스 계층 구조의 노드입니다. 폴더에는 프로젝트, 다른 폴더 또는 이 두 가지의 조합이 포함될 수 있습니다. 조직 리소스는 폴더를 사용하여 계층 구조의 조직 리소스 노드 아래에 있는 프로젝트를 그룹화할 수 있습니다. 폴더를 만드는 방법은 다음과 같습니다.
- Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.
- 페이지 상단의 조직 드롭다운 목록에서 조직 리소스 이름이 선택되어 있는지 확인합니다.
- 폴더 만들기를 클릭합니다.
- 표준 폴더 선택
- 폴더 이름 상자에 새 폴더의 이름을 입력합니다. 이 실습에서는 'Autokey-Folder'를 고려합니다.
- 대상 아래에서 찾아보기를 클릭한 다음 새 폴더를 만들 조직 리소스 또는 폴더를 선택합니다.
- '만들기'를 클릭합니다.
3. 리소스 프로젝트 만들기
Cloud KMS Autokey로 암호화할 리소스(예: BigQuery 데이터 세트, 영구 디스크, Cloud Storage 버킷)를 포함하는 리소스 프로젝트를 만드는 것이 중요합니다. 키 프로젝트에서 Autokey로 보호되는 리소스를 만들려고 하면 Autokey에서 새 키 요청을 거부합니다. 리소스 프로젝트를 만들려면 다음 안내를 따르세요.
- Google Cloud 콘솔의 리소스 관리 페이지로 이동합니다.
- '프로젝트 만들기'를 클릭합니다.
- 페이지 상단의 조직 선택 드롭다운 목록에서 'Autokey-Folder'를 선택합니다. 있습니다.
- '새 프로젝트' 창이 표시되면 프로젝트 이름을 입력하고 해당하는 결제 계정을 선택합니다. 이 실습에서는 'Autokey 암호화 리소스'를 고려합니다.
- 위치 상자에서 'Autokey-Folder' 폴더를 선택합니다. 해당 리소스가 새 프로젝트의 계층적 상위 요소가 됩니다. 설정은 다음과 비슷하게 표시됩니다.
- 프로젝트 ID를 복사합니다. 위의 예에서 프로젝트 ID는 'causal-hour-43319-m4'입니다. 그러나 원하는 텍스트 편집기의 ID는 다릅니다.
- '만들기' 클릭
- 화면 오른쪽 상단에 있는 Cloud Shell 아이콘을 선택합니다.
- Cloud Shell이 활성화되면 다음 명령어를 실행하여 Autokey 프로젝트 ID를 변수로 저장합니다.
export RESOURCE_PROJECT=<paste your Resource Project ID>
프로젝트 ID가 'key-management-433319'이기 때문입니다. 내 명령어는 다음과 같습니다.
export AUTOKEY_PROJECT=causal-hour-43319-m4
- 다음 명령어를 실행하여 키 프로젝트에서 명령어를 실행합니다.
gcloud config set project $RESOURCE_PROJECT
메시지가 표시되면 '승인'을 클릭하여 Cloud Shell을 승인합니다.
- 이 프로젝트에는 리소스가 포함되므로 Autokey가 보호할 서비스를 위한 API를 사용 설정해야 합니다. 다음 명령어를 실행합니다.
gcloud services enable storage.googleapis.com bigquery.googleapis.com compute.googleapis.com
4. 키 프로젝트 만들기
Autokey로 만든 Cloud KMS 리소스를 포함하는 프로젝트를 만드는 것이 좋습니다. 이를 '키 프로젝트'라고 합니다. . 키 프로젝트는 Autokey를 사용 설정하려는 동일한 폴더 내에 만들 수 있습니다. 키 프로젝트 내에 다른 리소스를 만들어서는 안 됩니다. 키 프로젝트에서 Autokey로 보호되는 리소스를 만들려고 하면 Autokey에서 새 키 요청을 거부합니다. 키 프로젝트를 만들려면 다음 안내를 따르세요.
- Google Cloud 콘솔의 리소스 관리 페이지로 이동합니다.
- '프로젝트 만들기'를 클릭합니다.
- 페이지 상단의 조직 선택 드롭다운 목록에서 'Autokey-Folder'를 선택합니다. 있습니다.
- '새 프로젝트' 창이 표시되면 프로젝트 이름을 입력하고 해당하는 결제 계정을 선택합니다. 이 실습에서는 '키 관리'를 고려하세요.
- 위치 상자에서 'Autokey-Folder'를 선택합니다. 있습니다. 해당 리소스가 새 프로젝트의 계층적 상위 요소가 됩니다. 설정은 다음과 비슷하게 표시됩니다.
- 프로젝트 ID를 복사합니다. 위의 예에서 프로젝트 ID는 'key-management-433319'입니다. 그러나 원하는 텍스트 편집기의 ID는 다릅니다.
- '만들기'를 클릭합니다.
5. Autokey 키 프로젝트 준비
이제 각 프로젝트를 만들었으므로 Cloud KMS Autokey를 사용하도록 키 프로젝트를 구성할 차례입니다.
- 화면 오른쪽 상단에 있는 Cloud Shell 아이콘을 선택합니다.
- Cloud Shell이 활성화되면 다음 명령어를 실행하여 Autokey 프로젝트 ID를 변수로 저장합니다.
export AUTOKEY_PROJECT=<paste your Autokey Project ID>
프로젝트 ID가 'key-management-433319'이기 때문입니다. 내 명령어는 다음과 같습니다.
export AUTOKEY_PROJECT=key-management-433319
- 다음 명령어를 실행하여 키 프로젝트에서 명령어를 실행합니다.
gcloud config set project $AUTOKEY_PROJECT
메시지가 표시되면 '승인'을 클릭하여 Cloud Shell을 승인합니다.
- 다음 명령어를 실행하여 Cloud KMS API를 사용 설정합니다.
gcloud services enable cloudkms.googleapis.com kmsinventory.googleapis.com
- 다음 명령어를 실행하여 프로젝트 번호를 AUTOKEY_PROJECT_NUMBER라는 변수로 저장합니다.
export AUTOKEY_PROJECT_NUMBER=$(gcloud projects list \
--filter="$(gcloud config get-value project)" \
--format="value(PROJECT_NUMBER)")
- 다음 명령어를 실행하여 주 구성원의 이메일을 변수로 저장합니다.
export KEY_ADMIN_EMAIL=<paste your Principal's email>
- 키 프로젝트에 대한 Cloud KMS 관리자 권한을 Cloud KMS 관리자 사용자에게 부여합니다.
gcloud projects add-iam-policy-binding $AUTOKEY_PROJECT_NUMBER \
--role=roles/cloudkms.admin \
--member=user:$KEY_ADMIN_EMAIL
6. Cloud KMS 서비스 에이전트 설정
키 프로젝트의 Cloud KMS 서비스 에이전트가 실제 Cloud KMS 관리자를 대신하여 키를 만들고 리소스 생성 중에 IAM 정책 바인딩을 적용합니다. 키를 만들고 할당하려면 Cloud KMS 서비스 에이전트에 Cloud KMS 관리자 권한이 필요합니다.
- 다음 명령어를 사용하여 조직 ID를 찾습니다.
gcloud organizations list | grep -P -i 'ID:' | grep -i '[0-9]'
- 조직 ID를 복사합니다. 빨간색으로 강조 표시된 숫자 결과입니다.
- 조직 ID를 ORG_ID라는 변수로 저장합니다.
export ORG_ID=<paste your Organization ID>
- 다음 명령어를 실행하여 Cloud KMS 서비스 에이전트를 만듭니다.
gcloud beta services identity create --service=cloudkms.googleapis.com \
--project=$AUTOKEY_PROJECT_NUMBER
- 서비스 에이전트에 Cloud KMS 관리자 역할을 부여합니다.
gcloud projects add-iam-policy-binding $AUTOKEY_PROJECT_NUMBER \
--role=roles/cloudkms.admin \
--member=serviceAccount:service-$AUTOKEY_PROJECT_NUMBER@gcp-sa-cloudkms.iam.gserviceaccount.com
- Cloud KMS 키 사용량을 볼 수 있도록 IAM 정책 바인딩을 추가합니다. 키 사용은 보호되는 리소스, 프로젝트, 키를 사용하는 고유한 Google Cloud 제품 수 등 각 키에 대한 정보를 제공합니다. 이 수준의 세부정보는 키에 Cloud KMS 뷰어 역할을 가진 모든 사용자가 사용할 수 있습니다. 다음 명령어를 실행합니다.
gcloud organizations add-iam-policy-binding $ORGANIZATION_ID \
--member="serviceAccount:service-org-$ORGANIZATION_ID@gcp-sa-cloudkms.iam.gserviceaccount.com" \
--role='roles/cloudkms.orgServiceAgent'
- Cloud KMS 서비스 계정에 조직 리소스에 대한 Cloud KMS 조직 서비스 에이전트 (cloudkms.orgServiceAgent) 역할을 부여합니다.
gcloud organizations add-iam-policy-binding $ORG_ID \
--member="serviceAccount:service-org-$ORG_ID@gcp-sa-cloudkms.iam.gserviceaccount.com" \
--role='roles/cloudkms.orgServiceAgent'
- 키 사용 세부정보를 확인해야 하는 모든 사용자에게 조직 리소스에 대한 Cloud KMS 보호된 리소스 뷰어 역할을 부여합니다.
gcloud organizations add-iam-policy-binding $ORG_ID \
--member="user:$KEY_ADMIN_EMAIL" \
--role='roles/cloudkms.protectedResourcesViewer'
7. Autokey 사용자 역할 부여
개발자가 Autokey를 사용하려면 필요한 역할을 부여해야 합니다. 폴더 수준 또는 프로젝트 수준에서 역할을 부여할 수 있습니다. 이 역할을 통해 개발자는 Cloud KMS 서비스 에이전트에서 키를 요청할 때 해당 폴더 또는 프로젝트에서 리소스를 만들 수 있습니다.
역할을 부여하는 첫 번째 단계는 폴더 ID를 저장하는 것입니다.
- 다음 명령어를 사용하여 폴더 ID를 찾습니다.
gcloud projects describe $AUTOKEY_PROJECT | grep 'id' | grep -P -i '[0-9]+'
- 폴더 ID를 복사합니다. 빨간색으로 강조 표시된 부분입니다.
- 폴더 ID를 FOLDER_ID라는 변수로 저장합니다.
export FOLDER_ID=<paste the folder ID>
이 실습에서는 키 관리자를 Autokey 사용자로 정의합니다. 하지만 프로덕션 사용 사례와 두 명 이상의 개인이 있는 조직의 경우 주요 관리자는 Autokey를 사용하는 개발자와 달라야 합니다.
- 폴더 수준에서 roles/cloudkms.autokeyUser 역할을 부여합니다.
gcloud resource-manager folders add-iam-policy-binding \
$FOLDER_ID --role=roles/cloudkms.autokeyUser \
--member=user:$KEY_ADMIN_EMAIL
8. 리소스 폴더에서 Cloud KMS Autokey 사용 설정
이 단계에서는 리소스 폴더에서 Cloud KMS Autokey를 사용 설정하고 해당 폴더의 Autokey 리소스를 포함할 Cloud KMS 프로젝트를 식별합니다. 이 폴더에서 Autokey를 사용 설정하면 폴더 내의 모든 리소스 프로젝트에 Autokey가 사용 설정됩니다.
- Google Cloud 콘솔에서 KMS 제어 페이지로 이동합니다.
- '폴더 선택'을 클릭합니다.
- 컨텍스트 선택 도구에서 Autokey를 사용 설정할 폴더를 선택합니다. 이 폴더는 이전에 만든 동일한 폴더이며 리소스 프로젝트와 키 관리 프로젝트를 포함합니다. 예를 들면 다음과 같습니다.
- '사용 설정'을 클릭합니다.
- 찾아보기를 클릭하여 키 프로젝트를 선택하세요.
- 키 관리 프로젝트를 선택한 후 '제출'을 클릭합니다.
폴더에 Cloud KMS Autokey가 사용 설정되었음을 확인하는 메시지가 표시됩니다. KMS 제어 페이지는 다음과 같이 표시됩니다.
9. Cloud KMS 자동 키를 사용하여 보호되는 리소스 만들기
Compute Engine 영구 디스크
Autokey는 생성 중인 리소스와 동일한 위치에 각 디스크, 이미지, 머신 이미지의 새 키를 만듭니다.
디스크를 만들려면 다음 단계를 완료합니다.
- Google Cloud 콘솔에서 디스크 페이지로 이동합니다.
- '디스크 만들기'를 클릭하고 새 디스크의 속성을 입력합니다.
- 암호화에서 Cloud KMS 키를 선택합니다.
- 키 유형으로 Cloud KMS와 Autokey를 선택한 다음 '새 키 요청'을 클릭합니다. 키가 성공적으로 생성되어 사용할 준비가 되면 메시지가 표시됩니다.
- 디스크 만들기를 완료하려면 '만들기'를 클릭합니다.
유사한 프로세스를 따라 보호된 VM 인스턴스, 이미지, 머신 이미지 리소스를 만들 수 있습니다.
Google Cloud Storage 버킷
Autokey는 버킷과 동일한 위치에 새 키를 만듭니다. Autokey로 생성된 키가 버킷 기본 키로 할당됩니다.
Autokey는 객체의 키를 만들지 않습니다. 기본적으로 버킷에서 만든 객체는 버킷 기본 키를 사용합니다. 버킷 기본 키가 아닌 키를 사용하여 객체를 암호화하려면 수동으로 CMEK를 만들고 객체를 만들 때 해당 키를 사용하면 됩니다.
- Google Cloud 콘솔에서 버킷 만들기 페이지로 이동합니다.
- 전역적으로 고유하고 영구적인 이름을 선택하세요.
- 데이터 위치를 선택합니다.
- '객체 데이터를 보호하는 방법 선택'으로 진행하기 섹션
- '객체 데이터를 보호하는 방법 선택'을 클릭합니다. 섹션을 펼치려면
- 데이터 암호화 섹션을 펼치고 Cloud KMS 키를 선택합니다.
- 키 유형으로는 Autokey가 포함된 Cloud KMS를 선택한 다음 '새 키 요청'을 클릭합니다. 키가 성공적으로 생성되어 사용할 준비가 되면 메시지가 표시됩니다.
- 버킷 만들기를 완료하려면 만들기를 클릭합니다. '공개 액세스가 차단됨'을 설명하는 대화상자가 표시되면 '확인'을 클릭합니다.
BigQuery 데이터 세트
Autokey는 각각의 새 데이터 세트에 대해 리소스와 동일한 위치에 새 키를 생성하며, 이 키는 데이터 세트의 기본 키가 됩니다. Autokey는 테이블, 쿼리, 임시 테이블 또는 모델의 키를 만들지 않습니다. 기본적으로 이러한 리소스는 데이터 세트 기본 키로 보호됩니다. 데이터 세트 기본 키가 아닌 키를 사용하여 데이터 세트의 리소스를 보호하려면 수동으로 CMEK를 만들고 리소스를 만들 때 이 키를 사용하면 됩니다.
BigQuery 데이터 세트를 만들려면 먼저 BigQuery 사용자 역할이 있어야 합니다.
- Cloud Shell로 돌아갑니다.
- 리소스 프로젝트에서 명령어를 실행하도록 Cloud Shell 설정
gcloud config set project $RESOURCE_PROJECT
- 다음 명령어를 실행하여 프로젝트 번호를 RESOURCE_PROJECT_NUMBER(이)라는 변수로 저장합니다.
export RESOURCE_PROJECT_NUMBER=$(gcloud projects list --filter="$(gcloud config get-value project)" --format="value(PROJECT_NUMBER)")
- 자신에게 BigQuery 사용자 역할 부여하기
gcloud projects add-iam-policy-binding $RESOURCE_PROJECT_NUMBER \
--role=roles/bigquery.user \
--member=user:$KEY_ADMIN_EMAIL
이제 BigQuery 사용자 역할이 있으므로 데이터 세트를 만들고 Autokey로 보호할 수 있습니다.
- Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
- 고급 옵션 > 암호화를 클릭합니다.
- 암호화에서 Cloud KMS 키를 선택합니다.
- 키 유형으로는 Autokey가 포함된 Cloud KMS를 선택한 다음 '새 키 요청'을 클릭합니다. 키가 성공적으로 생성되어 사용할 준비가 되면 메시지가 표시됩니다.
- 데이터 세트 만들기를 완료하려면 '데이터 세트 만들기'를 클릭합니다.
10. 키를 살펴보세요.
이 단계에서는 키 인벤토리 페이지를 방문하여 사용자를 대신하여 Cloud KMS Autokey가 생성한 키를 살펴봅니다. 키 인벤토리 페이지에서는 프로젝트의 암호화 키에 대한 포괄적인 정보를 제공합니다. 데이터가 지연될 수 있습니다. 예를 들어 보호되는 새 리소스를 만드는 경우 보호되는 리소스 및 연결된 키 버전이 사용량 추적 탭에 즉시 추가되지 않습니다. 자세한 내용은 여기에서 확인하세요.
- Google Cloud 콘솔에서 주요 인벤토리 페이지로 이동합니다.
- 선택사항: 키 목록을 필터링하려면 filter_list 필터 상자에 검색어를 입력한 다음 Enter 키를 누릅니다. 예를 들어 위치, 키링, 상태 또는 키의 기타 속성을 기준으로 필터링할 수 있습니다.
- 사용 정보를 보려는 키의 이름을 클릭합니다.
- '개요'를 클릭합니다. 생성된 리소스당 키가 있음을 알 수 있습니다. 각 키 이름에는 키가 보호하는 리소스의 이름이 포함됩니다 (예: 'compute-disk' 또는 'storage-bucket'). Cloud KMS Autokey는 각 키가 생성 후 365일 동안 순환되도록 예약되며 각 키에 'HSM'이 할당됩니다. 보호 수준입니다.
- 사용 추적 탭을 클릭합니다. 표시되는 정보 수준을 확인하세요. 키가 암호화하는 각 리소스가 프로젝트, 위치, 생성 날짜와 함께 여기에 표시됩니다.
- 선택사항: 보호되는 리소스 목록을 필터링하려면 filter_list 필터 상자에 검색어를 입력한 다음 Enter 키를 누릅니다.
11. 축하합니다
수고하셨습니다. Google Cloud 리소스를 성공적으로 만들고 Cloud KMS Autokey를 사용하여 주문형으로 자동으로 암호화했습니다.
지금까지 Autokey를 설정하고 Cloud KMS 키로 리소스를 자동으로 암호화하는 데 필요한 주요 단계를 알아보았습니다.
12. 다음 단계
Autokey로 암호화된 리소스에 데이터 업로드
- Google Compute Engine (GCE) 인스턴스 만들기
- Autokey로 보호되는 영구 디스크를 GCE 인스턴스에 연결
- BigQuery 데이터 세트에 데이터 업로드하기
- Google Cloud Storage 버킷에 객체 업로드
- BigQuery에 Google Cloud Storage 데이터 로드