aws key management service · aws key management service 개발자 안내서 3단계: 키 구성...

418
AWS Key Management Service 개발자 가이드

Upload: others

Post on 18-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service개발자 가이드

Page 2: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드

AWS Key Management Service: 개발자 가이드Copyright © 2020 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's,in any manner that is likely to cause confusion among customers, or in any manner that disparages or discreditsAmazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may notbe affiliated with, connected to, or sponsored by Amazon.

Page 3: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드

Table of ContentsAWS Key Management Service(이)란 무엇입니까? .................................................................................. 1

개념 .......................................................................................................................................... 2고객 마스터 키 (CMKs) ....................................................................................................... 3데이터 키 .......................................................................................................................... 5데이터 키 페어 ................................................................................................................... 6Aliases ............................................................................................................................ 10암호화 작업 ...................................................................................................................... 11키 식별자(KeyId) ............................................................................................................... 12키 구성 요소 오리진 .......................................................................................................... 13키 사양 ............................................................................................................................ 14키 사용 ............................................................................................................................ 14봉투 암호화 ...................................................................................................................... 15암호화 컨텍스트 ............................................................................................................... 16키 정책 ............................................................................................................................ 19Grants ............................................................................................................................. 19권한 부여 토큰 ................................................................................................................. 19사용 감사CMK .................................................................................................................. 19키 관리 인프라 ................................................................................................................. 20

시작하기 .......................................................................................................................................... 21키 생성 .................................................................................................................................... 21

대칭 CMKs 생성 ............................................................................................................... 22비대칭 CMKs 생성 ............................................................................................................ 24

키 보기 .................................................................................................................................... 27콘솔에서 CMKs 보기 ......................................................................................................... 27API를 사용하여 CMKs 보기 ................................................................................................ 34키 ID 및 ARN 찾기 ........................................................................................................... 37별칭 이름 및 별칭 ARN 찾기 .............................................................................................. 38대칭 및 비대칭 CMKs 식별 ................................................................................................. 40

키 편집 .................................................................................................................................... 43키 태그 지정 ............................................................................................................................ 44

태그 관리(CMK)console ..................................................................................................... 44태그 관리(CMK)AWS KMS API ........................................................................................... 45

키 활성화 및 비활성화 ............................................................................................................... 47활성화 및 비활성화 CMKs (console) .................................................................................... 47활성화 및 비활성화 CMKs (AWS KMS API) .......................................................................... 47

퍼블릭 키 다운로드 ................................................................................................................... 48퍼블릭 키 다운로드 시 특별 고려 사항 ................................................................................. 48퍼블릭 키 다운로드(console) ............................................................................................... 49퍼블릭 키 다운로드(AWS KMS API) .................................................................................... 49

별칭 사용 ................................................................................................................................. 50별칭 정보 ......................................................................................................................... 51별칭 생성 ......................................................................................................................... 52별칭 보기 ......................................................................................................................... 53애플리케이션에서 별칭 사용 ............................................................................................... 56별칭 업데이트 .................................................................................................................. 57별칭 삭제 ......................................................................................................................... 58별칭에 대한 액세스 제어 .................................................................................................... 58로그에서 별칭 찾기AWS CloudTrail ..................................................................................... 61

인증 및 액세스 제어 .......................................................................................................................... 62Authentication ........................................................................................................................... 62액세스 제어 .............................................................................................................................. 63액세스 관리 개요 ...................................................................................................................... 63

AWS KMS 리소스 및 작업 ................................................................................................. 64액세스 관리 AWS KMS CMKs ............................................................................................ 64

iii

Page 4: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드

정책에서 권한 지정 ........................................................................................................... 65정책에서 조건 지정 ........................................................................................................... 65

키 정책 사용 ............................................................................................................................ 65키 정책 개요 .................................................................................................................... 66기본 키 정책 .................................................................................................................... 67예제 키 정책 .................................................................................................................... 73키 정책 보기 .................................................................................................................... 76키 정책 변경 .................................................................................................................... 79키 정책을 최신으로 유지하기 .............................................................................................. 81

IAM 정책 사용 .......................................................................................................................... 82IAM 정책 개요 .................................................................................................................. 83정책의 모범 사례IAM ......................................................................................................... 83정책 설명에 CMKs 지정IAM ............................................................................................... 85AWS KMS 콘솔 사용에 필요한 권한 .................................................................................... 86파워 유저를 위한 AWS 관리형 정책 ..................................................................................... 87고객 관리형 정책 예 .......................................................................................................... 87

에 대한 교차 계정 액세스 허용CMK ............................................................................................. 91단계 1: 로컬 계정에서 키 정책 문 추가 ................................................................................. 92단계 2: 외부 계정에서 IAM 정책 추가 ................................................................................... 93다른 계정에서 사용할 수 있는 CMKs 생성 ............................................................................ 94서비스에 외부 CMKs 사용AWS ........................................................................................... 96

AWS KMS API 권한 참조 ........................................................................................................... 96정책 조건 사용 ........................................................................................................................ 107

AWS 전역 조건 키 .......................................................................................................... 107AWS KMS 조건 키 .......................................................................................................... 108AWS KMS에 대한 조건 키AWS Nitro 엔클레이브 ................................................................. 134

권한 부여 사용 ........................................................................................................................ 136권한 부여 생성 ................................................................................................................ 137대칭 및 비대칭 CMKs에 대한 권한 부여 .............................................................................. 138제약 편집 ....................................................................................................................... 138키 정책에서 CreateGrant 권한 부여 ................................................................................... 139권한 부여CreateGrant ...................................................................................................... 139

서비스 연결 역할 사용 ............................................................................................................. 139AWS KMS 사용자 지정 키 스토어에 대한 서비스 연결 역할 권한 ............................................ 140

액세스 결정 ............................................................................................................................ 140키 정책 검사 ................................................................................................................... 140IAM 정책 검사 ................................................................................................................ 142권한 부여 검사 ................................................................................................................ 144키 액세스 문제 해결 ........................................................................................................ 144

[Security] ........................................................................................................................................ 151데이터 보호 ............................................................................................................................ 151

데이터 암호화 ................................................................................................................. 151인터네트워크 개인 정보 보호 ............................................................................................ 153

ID 및 액세스 관리 ................................................................................................................... 153로깅 및 모니터링 ..................................................................................................................... 153규정 준수 확인 ........................................................................................................................ 154

규정 준수 및 보안 문서 .................................................................................................... 154자세히 알아보기 .............................................................................................................. 155

인프라 보안 ............................................................................................................................ 155물리적 호스트 격리 ......................................................................................................... 156

보안 모범 사례 ........................................................................................................................ 156대칭 및 비대칭 키 사용 .................................................................................................................... 157

대칭 및 비대칭 CMKs 정보 ....................................................................................................... 158대칭 고객 마스터 키 ........................................................................................................ 158비대칭 고객 마스터 키 ..................................................................................................... 158

구성을 선택하는 방법CMK ........................................................................................................ 159키 사용 선택 ................................................................................................................... 160

iv

Page 5: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드

키 사양 선택 ................................................................................................................... 161의 암호화 구성 보기CMKs ........................................................................................................ 165대칭 및 비대칭 CMKs 비교 ....................................................................................................... 166

키 교체 .......................................................................................................................................... 170자동 키 교체의 작동 방식 ......................................................................................................... 171자동 키 교체를 활성화하고 비활성화하는 방법 ............................................................................. 171

키 교체 활성화 및 비활성화(console) .................................................................................. 171키 교체 활성화 및 비활성화(AWS KMS API) ........................................................................ 172

수동으로 키 교체 ..................................................................................................................... 172주요 상태: 귀하의 CMK .................................................................................................................... 175고객 마스터 키 모니터링 .................................................................................................................. 180

모니터링 도구 ......................................................................................................................... 180자동 도구 ....................................................................................................................... 180수동 도구 ....................................................................................................................... 181

AWS CloudTrail를 사용한 로깅 .................................................................................................. 181에서 이벤트 로깅CloudTrail ............................................................................................... 182추적에서 AWS KMS 이벤트 제외 ....................................................................................... 182로그 항목의 예AWS KMS ................................................................................................. 183

CloudWatch을(를) 사용하여 모니터링 ......................................................................................... 214지표 및 차원 ................................................................................................................... 214경보 생성 ...................................................................................................................... 215AWS KMS 이벤트 ........................................................................................................... 216

AWS KMS API 프로그래밍 ............................................................................................................... 219클라이언트 만들기 ................................................................................................................... 219키 작업 .................................................................................................................................. 220

고객 마스터 키 생성 ........................................................................................................ 220데이터 키 생성 ................................................................................................................ 222고객 마스터 키 보기 ........................................................................................................ 224키 ID 및 ARN 가져오기 .................................................................................................... 226고객 마스터 키 활성화 ..................................................................................................... 228고객 마스터 키 비활성화 .................................................................................................. 229

별칭으로 작업 ......................................................................................................................... 231별칭 생성 ....................................................................................................................... 231별칭 나열 ....................................................................................................................... 233별칭 업데이트 ................................................................................................................. 237별칭 삭제 ....................................................................................................................... 239

데이터 키 암호화 및 해독 ......................................................................................................... 240데이터 키 암호화 ............................................................................................................. 241데이터 키 해독 ................................................................................................................ 243다른 데이터 키로 데이터 키 재암호화 고객 마스터 키 ............................................................ 246

키 정책 작업 ........................................................................................................................... 248키 정책 이름 나열 ........................................................................................................... 249키 정책 가져오기 ............................................................................................................. 250키 정책 설정 ................................................................................................................... 252

권한 부여 작업 ........................................................................................................................ 257권한 부여 생성 ................................................................................................................ 257권한 부여 보기 ................................................................................................................ 259권한 부여 사용 중지 ........................................................................................................ 261권한 부여 취소 ................................................................................................................ 263

고객 마스터 키 삭제 ........................................................................................................................ 266삭제 작동 방식CMKs ............................................................................................................... 266

비대칭 CMKs 삭제 .......................................................................................................... 267삭제가 통합 CMKs 서비스에 미치는 영향AWS ..................................................................... 267

키 삭제 예약 및 취소 ............................................................................................................... 268AWS Management 콘솔 사용 ............................................................................................ 268AWS CLI 사용 ................................................................................................................ 269AWS SDK for Java 사용 .................................................................................................. 269

v

Page 6: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드

키 삭제 예약 및 취소를 위한 권한 추가 ....................................................................................... 270AWS Management 콘솔 사용 ............................................................................................ 270AWS CLI 사용 ................................................................................................................ 270

Amazon CloudWatch 경보 생성 ................................................................................................. 271CloudWatch 경보의 요구 사항 ........................................................................................... 272CloudWatch 경보 생성 ..................................................................................................... 272

과거의 과거 사용 CMK ............................................................................................................. 274검사 CMK 잠재적 사용 범위를 결정하기 위한 권한 ............................................................... 274AWS CloudTrail 로그 확인을 통한 실제 사용량 파악 ............................................................. 274

키 구성 요소 가져오기 ..................................................................................................................... 277가져온 키 구성 요소 정보 ......................................................................................................... 278키 구성 요소를 가져올 수 있는 권한 ........................................................................................... 279키 구성 요소를 가져오는 방법 ................................................................................................... 279키 구성 요소를 다시 가져오는 방법 ............................................................................................ 280가져온 키 구성 요소로 CMKs를 보는 방법 .................................................................................. 280

가져온 키 구성 요소로 CMKs를 식별하려면(console) ............................................................ 280가져온 키 구성 요소로 CMKs를 식별하려면(AWS KMS API) .................................................. 281

단계 1. 생성 CMK 핵심 재료 없이 .............................................................................................. 281생성 CMK 주요 재료(console) ........................................................................................... 281생성 CMK 주요 재료(AWS KMS API) ................................................................................. 283

단계 2: 퍼블릭 키 및 가져오기 토큰 다운로드 .............................................................................. 283퍼블릭 키 및 가져오기 토큰 다운로드(console) .................................................................... 284퍼블릭 키 및 가져오기 토큰 다운로드(AWS KMS API) ........................................................... 285

단계 3. 키 재료 암호화 ............................................................................................................. 286예: openssl으로 키 재료 암호화 ......................................................................................... 286

단계 4: 키 구성 요소 가져오기 .................................................................................................. 287키 구성 요소 가져오기(console) ......................................................................................... 287키 구성 요소 가져오기(AWS KMS API) ............................................................................... 288

키 구성 요소 삭제 ................................................................................................................... 288키 구성 요소 삭제가 AWS KMS와 통합된 AWS 서비스에 미치는 영향 ...................................... 289키 구성 요소 삭제(console) ............................................................................................... 289키 구성 요소 삭제(AWS KMS API) ..................................................................................... 290

사용자 지정 키 스토어 사용 .............................................................................................................. 291사용자 지정 키 스토어란 무엇입니까? ........................................................................................ 293

AWS KMS 사용자 지정 키 스토어 ...................................................................................... 293AWS CloudHSM 클러스터 ................................................................................................ 293kmsuser CU(Crypto User) ............................................................................................... 294CMKs 사용자 지정 키 스토어에서 ...................................................................................... 294

사용자 지정 키 스토어에 대한 액세스 제어 .................................................................................. 295사용자 지정 키 스토어 관리자 및 사용자에 대한 권한 부여 ..................................................... 295AWS KMS에 AWS CloudHSM 및 Amazon EC2 리소스를 관리할 수 있는 권한 부여 .................... 295

사용자 지정 키 스토어 생성 ...................................................................................................... 297사전 조건 수집 ................................................................................................................ 297사용자 지정 키 스토어 생성(콘솔) ...................................................................................... 299사용자 지정 키 스토어 생성(API) ....................................................................................... 299

사용자 지정 키 스토어 관리 ...................................................................................................... 300사용자 지정 키 스토어 보기 .............................................................................................. 300사용자 지정 키 스토어 설정 편집 ....................................................................................... 302사용자 지정 키 스토어 연결 및 연결 해제 ............................................................................ 304사용자 지정 키 스토어 삭제 .............................................................................................. 308

관리 CMKs 사용자 지정 키 스토어에서 ....................................................................................... 310생성 CMKs 사용자 지정 키 스토어에서 ............................................................................... 310사용자 지정 키 스토어에서 CMKs 보기 ............................................................................... 314사용 CMKs 사용자 지정 키 스토어에서 ............................................................................... 315찾기 CMKs 주요 재료 ...................................................................................................... 316삭제 일정 CMKs 맞춤형 키 스토어에서 ............................................................................... 320

사용자 지정 키 스토어 문제 해결 ............................................................................................... 320

vi

Page 7: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드

사용 불가능한 픽스 CMKs ................................................................................................ 320실패 해결 방법 CMK ........................................................................................................ 321연결 오류를 수정하는 방법 ............................................................................................... 321유효하지 않은 kmsuser 자격 증명을 수정하는 방법 ............................................................. 323불필요한 키 구성 요소를 삭제하는 방법 .............................................................................. 324삭제된 키 자료를 복구하는 방법 CMK ................................................................................ 324kmsuser로 로그인하는 방법 ............................................................................................. 325

VPC 엔드포인트 사용 ...................................................................................................................... 328AWS KMS VPC 엔드포인트 고려 사항 ....................................................................................... 328AWS KMS용 VPC 엔드포인트 생성 ........................................................................................... 328VPC 엔드포인트에 연결 ........................................................................................................... 329VPC 엔드포인트에 대한 액세스 제어 .......................................................................................... 329

VPC 엔드포인트 정책 정보 ............................................................................................... 330기본 VPC 엔드포인트 정책 ............................................................................................... 330VPC 엔드포인트 정책 생성 ............................................................................................... 331VPC 엔드포인트 정책 보기 ............................................................................................... 332

정책 설명에 VPC 엔드포인트 사용 ............................................................................................. 332VPC 엔드포인트 로깅 .............................................................................................................. 334

하이브리드 포스트 양자 TLS 사용 ..................................................................................................... 336포스트 양자 TLS 소개 .............................................................................................................. 337사용 방법 ............................................................................................................................... 337구성 방법 ............................................................................................................................... 338테스트 방법 ............................................................................................................................ 339자세히 알아보기 ...................................................................................................................... 339

AWS 서비스의 AWS KMS 활용 방식 .................................................................................................. 341AWS CloudTrail ...................................................................................................................... 341

귀하의 CMK 사용됨 ......................................................................................................... 341얼마나 자주 CMK 사용됨 .................................................................................................. 345

Amazon DynamoDB ................................................................................................................ 345DynamoDB의 클라이언트측 암호화 .................................................................................... 346사용 CMKs 데이터 키 ...................................................................................................... 346사용자 권한 부여 CMK ..................................................................................................... 348DynamoDB 암호화 컨텍스트 ............................................................................................. 351DynamoDB와 AWS KMS의 상호작용 모니터링 .................................................................... 352

Amazon Elastic Block Store (Amazon EBS) ................................................................................ 355Amazon EBS 암호화 ....................................................................................................... 355사용 CMKs 데이터 키 ...................................................................................................... 356Amazon EBS 암호화 컨텍스트 .......................................................................................... 356Amazon EBS 오류 감지 ................................................................................................... 356AWS CloudFormation을 이용해 암호화된 Amazon EBS 볼륨 생성하기 ..................................... 357

Amazon Elastic Transcoder ...................................................................................................... 357입력 파일 암호화 ............................................................................................................. 357입력 파일 해독 ................................................................................................................ 358출력 파일 암호화 ............................................................................................................. 359HLS 콘텐츠 보호 ............................................................................................................. 360Elastic Transcoder 암호화 컨텍스트 ................................................................................... 360

Amazon EMR ......................................................................................................................... 361EMR 파일 시스템(EMRFS)에서 데이터 암호화 ..................................................................... 361클러스터 노드의 스토리지 볼륨에서 데이터 암호화 ............................................................... 363암호화 컨텍스트 .............................................................................................................. 363

Amazon Redshift ..................................................................................................................... 364Amazon Redshift 암호화 .................................................................................................. 364암호화 컨텍스트 .............................................................................................................. 365

Amazon Relational Database Service (Amazon RDS) ................................................................... 365Amazon RDS 암호화 컨텍스트 .......................................................................................... 365

AWS Secrets Manager ............................................................................................................. 366암호 값 보호 ................................................................................................................... 366

vii

Page 8: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드

암호 암호화 및 해독 ........................................................................................................ 366사용자 AWS KMS CMK ................................................................................................... 368사용 권한 부여 CMK ........................................................................................................ 369Secrets Manager 암호화 컨텍스트 ..................................................................................... 370Secrets Manager와 AWS KMS의 상호작용 모니터링 ............................................................ 371

Amazon Simple Email Service (Amazon SES) ............................................................................. 373AWS KMS를 이용한 Amazon SES 암호화 개요 ................................................................... 373Amazon SES 암호화 컨텍스트 .......................................................................................... 374기부 Amazon SES 사용 권한 AWS KMS 고객 마스터 키 (CMK) .............................................. 374이메일 메시지 가져오기 및 해독 ........................................................................................ 375

Amazon Simple Storage Service (Amazon S3) ............................................................................ 375서버 측 암호화 SSE-KMS 사용 ......................................................................................... 376Amazon S3 암호화 클라이언트 사용 .................................................................................. 376암호화 컨텍스트 .............................................................................................................. 377

AWS 시스템 관리자 Parameter Store ......................................................................................... 377표준 보안 문자열 파라미터 보호 ........................................................................................ 378고급 보안 문자열 파라미터 보호 ........................................................................................ 380파라미터 값 암호화 및 해독 권한 설정 ................................................................................ 382Parameter Store 암호화 컨텍스트 ...................................................................................... 384문제 해결 CMK 문제 Parameter Store ................................................................................ 385

Amazon WorkMail ................................................................................................................... 385Amazon WorkMail 개요 .................................................................................................... 386Amazon WorkMail 암호화 ................................................................................................. 386사용 권한 부여 CMK ........................................................................................................ 389Amazon WorkMail 암호화 컨텍스트 .................................................................................... 390Amazon WorkMail와 AWS KMS의 상호작용 모니터링 ........................................................... 390

Amazon WorkSpaces ............................................................................................................... 392AWS KMS를 이용한 Amazon WorkSpaces 암호화 개요 ........................................................ 392Amazon WorkSpaces 암호화 컨텍스트 ............................................................................... 393에 사용자 대신 Amazon WorkSpaces를 사용할 권한 부여하기CMK ......................................... 394

할당량 ........................................................................................................................................... 396리소스 할당량 ......................................................................................................................... 396

고객 마스터 키(CMKs): 10,000 .......................................................................................... 397리전당 별칭: 10,000개 ..................................................................................................... 397당 별칭:CMK 50 .............................................................................................................. 397당 권한 부여:CMK 50,000 ................................................................................................. 397당 지정된 보안 주체에 대한 권한 부여:CMK 500개 ............................................................... 397키 정책 문서 크기: 32KB .................................................................................................. 398

요청 할당량 ............................................................................................................................ 398요청 할당량 적용 ............................................................................................................. 398암호화 작업에 대한 공유 할당량 ........................................................................................ 399자동으로 이루어지는 API 요청 .......................................................................................... 399교차 계정 요청 ................................................................................................................ 400사용자 지정 키 스토어 할당량 ........................................................................................... 400각 AWS KMS API 작업에 대한 요청 할당량 ......................................................................... 400

AWS KMS 할당량 증가 요청 ..................................................................................................... 403서비스 할당량 콘솔 사용 .................................................................................................. 403서비스 할당량 API 사용 ................................................................................................... 404

문서 기록 ....................................................................................................................................... 406최신 업데이트 ......................................................................................................................... 406이전 업데이트 ......................................................................................................................... 407

..................................................................................................................................................... cdx

viii

Page 9: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드

AWS Key Management Service(이)란무엇입니까?

AWS Key Management Service (AWS KMS)은 관리형 서비스로서 사용자가 쉽게 생성 및 제어할 수 있습니다. 고객 마스터 키 (CMKs), 데이터 암호화에 사용되는 암호화 키. AWS KMS CMKs 하드웨어 보안 모듈(HSM)에 의해 보호되며 FIPS 140-2 암호화 모듈 검증 프로그램 단, 중국(베이징) 및 중국(닝샤) 지역.

AWS KMS 대부분의 기타 AWS 서비스 데이터를 암호화합니다. AWS KMS 또한 AWS CloudTrail 사용자 ID를 사용하여 CMKs 감사, 규제 및 규정 준수 요구 사항

다음을 생성하고 관리할 수 있습니다. AWS KMS 고객 마스터 키 (CMKs):

• 생성 (p. 21), 편집 (p. 43), 및 보기 (p. 27) 대칭 및 비대칭 CMKs (p. 157)• 활성화 및 비활성화 (p. 47) CMKs• 생성. 편집 및 보기 주요 정책 (p. 65) 및 보조금 (p. 136) 을(를) 위해 CMKs• 활성화 및 비활성화 자동 회전 (p. 170) 암호화 자료의 CMK• 태그 지정 CMKs (p. 44) 확인, 자동화 및 비용 추적• 생성, 삭제, 목록 작성 및 업데이트 별칭 (p. 231)을(를) 찾을 수 있습니다. CMKs• 삭제 CMKs (p. 266) 주요 라이프사이클을

다음을 사용할 수 있습니다. CMKs 에서 암호화 작업 (p. 11). 예제는 AWS KMS API 프로그래밍 (p. 219)을 참조하십시오.

• 대칭 또는 비대칭 데이터를 암호화, 해독 및 재암호화 CMKs• 비대칭으로 메시지 서명 및 확인 CMKs• 내보낼 수 있는 대칭 데이터 키 및 비대칭 데이터 키 페어 생성• 암호화 애플리케이션에 적합한 난수 생성

AWS KMS의 고급 기능을 사용할 수 있습니다.

• 암호화 자료 가져오기 (p. 277) 을(를) CMK• 생성 CMKs 스스로에게 사용자 지정 키 저장소 (p. 291) 지원: AWS CloudHSM 클러스터• VPC의 프라이빗 엔드포인트 (p. 328)를 통해 AWS KMS에 직접 연결• AWS KMS를 보내는 데이터에 대해 전송 중 미래 지향적인 암호화를 제공하기 위해 하이브리드 포스트 양

자 TLS (p. 336) 사용

AWS KMS를 사용하면 암호화하는 데이터에 대한 액세스 제어가 강화됩니다. 애플리케이션에 바로 키 관리와 암호화 기능을 사용하거나 AWS KMS와 통합된 AWS 서비스를 통해 이용할 수 있습니다. 에 대한 신청서를 작성하는지 여부 AWS 또는 사용 AWS 서비스, AWS KMS 를 사용하면 을 사용할 수 있는 사용자를 계속제어할 수 있습니다. 고객 마스터 키 암호화된 데이터에 액세스할 수 있습니다.

AWS KMS는 로그 파일을 사용자가 지정한 Amazon S3 버킷에 전달하는 서비스인 AWS CloudTrail와 통합되어 있습니다. 사용 방법 CloudTrail 언제 어떻게 CMKs 이(가) 사용되었으며 이(가) 에 의해 사용되었습니다.

AWS 리전의 AWS KMS

1

Page 10: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드개념

AWS KMS가 지원되는 AWS 리전은 AWS Key Management Service 엔드포인트 및 할당량에 나열되어 있습니다. AWS KMS를 지원하는 AWS 리전에서 특정 AWS KMS 기능이 지원되지 않는 경우 리전별 차이는 해당기능에 대한 주제에서 설명합니다.

AWS KMS 요금

다른 AWS 사용 계약이나 최소 구매 요건이 없는 경우 AWS KMS. AWS KMS 요금에 대한 자세한 정보는AWS Key Management Service 요금을 참조하십시오.

서비스 수준 계약

AWS Key Management Service는 AWS 서비스 가용성 정책을 정의하는 서비스 수준 계약에 의해 지원됩니다.

자세히 알아보기

• AWS KMS에서 사용되는 용어 및 개념에 대한 자세한 내용은 AWS KMS 개념 (p. 2)을 참조하십시오.• AWS KMS API에 대한 자세한 내용은 AWS Key Management Service API Reference 단원을 참조하십시

오. 다른 프로그래밍 언어의 예는 AWS KMS API 프로그래밍 (p. 219) 단원을 참조하십시오• 사용 방법에 대한 자세한 기술 정보는 AWS KMS 암호화 및 보안 사용 CMKs, 참조 AWS Key

Management Service 암호화 세부 정보 백서. 이 백서에는 AWS KMS의 중국(베이징) 및 중국(닝샤) 리전내 작동 방식 설명이 없습니다.

• AWS KMS 관련 질문에 대한 도움말은 AWS Key Management Service 토론 포럼 단원을 참조하십시오.

AWS KMS 에서 AWS SDK

• AWS Command Line Interface• .NET용 AWS SDK• C++용 AWS SDK• Go용 AWS SDK• AWS SDK for Java• AWS SDK for JavaScript• PHP용 AWS SDK• Python용 AWS SDK(Boto3)• Ruby용 AWS SDK

AWS Key Management Service 개념AWS Key Management Service(AWS KMS)의 기본 용어와 개념, 어떤 상호 작용을 통해 데이터를 보호하는지 알아봅니다.

주제• 고객 마스터 키 (CMKs) (p. 3)• 데이터 키 (p. 5)• 데이터 키 페어 (p. 6)• Aliases (p. 10)• 암호화 작업 (p. 11)• 키 식별자(KeyId) (p. 12)• 키 구성 요소 오리진 (p. 13)• 키 사양 (p. 14)• 키 사용 (p. 14)

2

Page 11: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드고객 마스터 키 (CMKs)

• 봉투 암호화 (p. 15)• 암호화 컨텍스트 (p. 16)• 키 정책 (p. 19)• Grants (p. 19)• 권한 부여 토큰 (p. 19)• 사용 감사CMK (p. 19)• 키 관리 인프라 (p. 20)

고객 마스터 키 (CMKs)고객 마스터 키는 AWS KMS의 기본 리소스입니다.

고객 마스터 키()은 CMK의 논리적 표현입니다.마스터 키 에는 키 ID, 생성 날짜, 설명 및 키 상태와 같은 메타데이터가 포함됩니다.CMK 에는 데이터를 암호화하고 해독하는 데 사용되는 키 구성 요소도 포함되어 있습니다.CMK

AWS KMS는 대칭 및 비대칭 CMKs를 지원합니다. 대칭 CMK는 암호화 및 암호 해독에 사용되는 256비트키를 나타냅니다. 비대칭 CMK는 암호화 및 암호 해독 또는 서명 및 확인에 사용되는(둘 모두에 사용할 수는 없음) RSA 키 페어 또는 서명 및 확인에 사용되는 타원 곡선(ECC) 키 페어를 나타냅니다. 대칭 및 비대칭CMKs에 대한 자세한 내용은 대칭 및 비대칭 키 사용 (p. 157) 단원을 참조하십시오.

CMKs는 AWS KMS에서 생성됩니다. 대칭 CMKs와 비대칭 CMKs의 프라이빗 키는 절대로 암호화되지 않은상태로 AWS KMS를 벗어나지 않습니다. 를 관리하려면 CMK 또는 AWS Management 콘솔 APIAWS KMS를 사용할 수 있습니다. 암호화 작업CMK에서 를 사용하려면 (p. 11) API를 사용해야 합니다.AWS KMS이 전략은 데이터 키 (p. 5)와 다릅니다. AWS KMS는 데이터 키를 저장, 관리 또는 추적하지 않습니다.AWS KMS 밖에서 이들을 사용해야 합니다.

기본적으로 AWS KMS는 CMK에 대한 키 구성 요소를 생성합니다. 이 키 구성 요소를 추출, 내보내기, 보기또는 관리할 수 없습니다. 또한 이 키 구성 요소를 삭제할 수 없으며 를 삭제CMK해야 합니다. (p. 266) 그러나 자체 키 구성 요소를 (p. 277)로 가져오거나CMK 사용자 지정 키 스토어와 연결된 CMK 클러스터에서AWS CloudHSM에 대한 키 구성 요소를 생성할 수 있습니다.AWS KMS (p. 291)

생성 및 관리에 대한 자세한 내용은 CMKs 단원을 참조하십시오.시작하기 (p. 21) CMKs 사용에 대한 자세한 내용은 AWS Key Management Service API Reference를 참조하십시오.

AWS KMS는 고객 관리형 CMKs, CMKs 관리형 AWS 및 CMKs 소유 AWS의 세 가지 CMKs 유형을 지원합니다.

유형CMK 메타데이터를볼 수 있음CMK

관리 가능CMK 내 AWS 계정에서만 사용

자동 회전 (p. 170)

고객 관리형CMK (p. 4)

예 예 예 선택 사항입니다. 365일(1년)마다.

AWS 관리형CMK (p. 4)

예 아니요 예 필수. 1,095일(3년)마다.

AWS 소유CMK (p. 4)

아니요 아니요 아니요 다양

고객 관리형 CMKs를 AWS 관리형 CMKs와 구별하려면 KeyManagerDescribeKey 작업 응답에서 필드를사용합니다. 고객 관리형 CMKs의 경우 KeyManager 값은 Customer입니다. 관리형 AWS의 경우 CMKs 값은 KeyManager입니다.AWS

3

Page 12: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드고객 마스터 키 (CMKs)

와 통합되는 AWSAWS KMS 서비스는 (p. 341) 지원에 차이가 있습니다.CMKs 일부 AWS 서비스는 기본적으로 AWS 소유 CMK 또는 AWS 관리형 CMK를 사용하여 데이터를 암호화합니다. 다른 AWS 서비스는 선택한 고객 관리형 CMK로 데이터를 암호화할 수 있는 서비스를 제공합니다. 또한 다른 AWS 서비스는 CMKs소유 AWS의 용이성, CMK 관리형 AWS의 가시성, 고객 관리형 CMK의 제어 기능을 지원하기 위해 모든 유형의 CMK를 지원합니다. AWS 서비스에서 제공하는 암호화 옵션에 대한 자세한 내용은 해당 서비스에 대한사용 설명서 또는 개발자 안내서의 저장 데이터 암호화 주제를 참조하십시오.

고객 관리형 CMKs고객 관리형 CMKs는 사용자가 생성, 소유 및 관리하는 CMKs 계정의 AWS입니다. 사용자는 CMKs키 정책, 정책 및 권한 부여IAM 설정 및 유지 관리, (p. 62)활성화 및 비활성화, (p. 47)암호화 구성 요소 교체, (p. 170)태그 추가, (p. 44)을 참조하는 별칭 생성 (p. 231), CMK삭제를 위해 예약CMKs을 비롯하여이러한 (p. 266)를 완벽하게 제어할 수 있습니다.

고객 관리형 CMKs는 용 의 AWS Management 콘솔고객 관리형 키AWS KMS 페이지에 표시됩니다. 고객 관리형 CMK를 명확하게 식별하려면 DescribeKey 작업을 사용합니다. 고객 관리형 CMKs의 경우KeyManager 응답의 DescribeKey 필드 값은 CUSTOMER입니다.

암호화 작업에서 고객 관리형 CMKs를 사용하고 AWS CloudTrail 로그에서 사용을 감사할 수 있습니다. 또한AWS와 통합되는 많은 AWS KMS (p. 341) 서비스를 통해 고객 관리형 CMK를 지정하여 고객이 사용자를위해 저장 및 관리하는 데이터를 보호할 수 있습니다.

고객 관리형 CMKs에는 월별 요금과 프리 티어를 초과하는 사용에 대한 요금이 부과됩니다. 계정의 AWSKMS 할당량 (p. 396)에 대해 요금이 계산됩니다. 자세한 내용은 AWS Key Management Service 요금 및할당량 (p. 396) 단원을 참조하십시오.

AWS관리형CMKsAWS 관리형 CMKs는 CMKs와 통합된 AWS 서비스AWS KMS가 사용자를 대신하여 생성, 관리 및 사용하는계정 내 입니다. 일부 AWS 서비스는 AWS 관리형 CMK만 지원합니다. 다른 사용자는 AWS 소유 CMK를 사용하거나 CMKs 중 하나를 선택할 수 있습니다.

계정에서 관리형 AWS를 보고CMKs, (p. 27)키 정책을 보고 로그에서 (p. 76)사용을 감사할 수 있습니다. (p. 181)AWS CloudTrail 그러나 이러한 CMKs를 관리하거나, 교체하거나, 키 정책을 변경할 수는 없습니다. 또한 암호화 작업에서 직접 AWS 관리형 CMKs를 사용할 수 없습니다. 즉, 이러한 작업을 생성하는서비스는 사용자를 대신하여 이러한 작업을 사용합니다.

AWS 관리형 CMKs는 용 AWS의 관리형 키AWS Management 콘솔 페이지에 표시됩니다.AWS KMS 또한대부분의 AWS 관리형 CMKs는 aws/service-name 형식(예: aws/redshift)을 갖는 별칭으로 식별할 수있습니다. 관리형 AWS를 명확하게 식별하려면 CMKDescribeKey 작업을 사용합니다. 관리형 AWS의 경우CMKs 응답의 KeyManager 필드 값은 DescribeKey입니다.AWS

관리형 AWS에 대해서는 월별 요금을 지불하지 않습니다.CMKs 프리 티어를 초과하는 사용에 대해서 요금이부과될 수 있으며, 일부 AWS 서비스는 이러한 요금을 사용자 대신 부담합니다. 자세한 내용은 해당 서비스에 대한 사용 설명서 또는 개발자 안내서의 저장 데이터 암호화 주제를 참조하십시오. AWS 관리형 CMKs는계정의 각 리전에 있는 CMKs의 수에 대한 리소스 할당량에 포함되지 않습니다. 그러나 계정의 보안 주체 대신 사용되는 CMKs는 요청 할당량에 포함됩니다. 자세한 내용은 AWS Key Management Service 요금 및 할당량 (p. 396) 단원을 참조하십시오.

AWS소유CMKsAWS 소유 CMKs는 CMKs 서비스가 여러 AWS 계정에서 사용하도록 소유하고 관리하는 AWS의 모음입니다. 소유 AWS는 CMKs 계정에 없지만 AWS 서비스는 AWS 소유 AWS를 사용하여 계정의 리소스를 보호할수 있습니다.CMKs

AWS 소유 CMKs는 생성하거나 관리할 필요가 없습니다. 그러나 AWS 소유 CMK를 보거나, 사용하거나, 추적하거나, 감사할 수 없습니다. 월별 요금 또는 AWS 소유 CMKs에 대한 사용 요금이 부과되지 않으며, 계정에서 AWS KMS 할당량 (p. 396)이 적용되지 않습니다.

4

Page 13: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드데이터 키

AWS에서 소유한 CMK에 대한 키 교체 (p. 170) 전략은 CMK를 생성하고 관리하는 AWS 서비스에 의해 결정됩니다. 소유 CMKs를 포함하여 AWS 서비스가 지원하는 AWS 유형에 대한 자세한 내용은 해당 서비스에대한 사용 설명서 또는 개발자 안내서의 CMKs저장 데이터 암호화 주제를 참조하십시오.

데이터 키데이터 키는 많은 양의 데이터 및 기타 데이터 암호화 키를 포함하여 데이터를 암호화하는 데 사용할 수 있는암호화 키입니다.

AWS KMS고객 마스터 키( (p. 3))를 사용하여 데이터 키를 생성, 암호화 및 암호화 해제할 수 있습니다.CMKs 그러나 AWS KMS는 데이터 키를 저장, 관리 또는 추적하거나 데이터 키로 암호화 작업을 수행하지않습니다. 따라서 AWS KMS 밖에서 데이터 키를 사용하고 관리해야 합니다.

데이터 키 생성데이터 키를 생성하려면 GenerateDataKey 작업을 호출합니다. AWS KMS는 사용자가 지정한 CMK를 사용하여 데이터 키를 생성합니다. 이 작업은 데이터 키의 일반 텍스트 복사본과 CMK로 암호화된 데이터 키 복사본을 반환합니다. 다음 그림은 이 작업을 보여 줍니다.

AWS KMS는 암호화된 데이터 키만 반환하는 GenerateDataKeyWithoutPlaintext 작업도 지원합니다. 데이터키를 사용해야 할 때는 AWS KMS에 데이터 키를 해독하도록 요청합니다.

데이터 키로 데이터 암호화AWS KMS는 데이터 키를 사용하여 데이터를 암호화할 수 없습니다. 그러나 OpenSSL 또는 AWS 암호화SDK 같은 암호화 라이브러리를 사용하는 등의 방식으로 KMS 외부에서 데이터 키를 사용할 수 있습니다.

5

Page 14: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드데이터 키 페어

일반 텍스트 데이터 키를 사용하여 데이터를 암호화한 다음에는 가능한 빨리 메모리에서 제거하십시오. 데이터 암호화를 해제하는 데 사용할 수 있도록 암호화된 데이터와 함께 암호화된 데이터 키를 안전하게 저장할수 있습니다.

데이터 키로 데이터 복호화데이터를 해독하려면 암호화된 데이터 키를 Decrypt 작업에 전달합니다. AWS KMS는 CMK를 사용하여 데이터 키를 해독한 후 일반 텍스트 데이터 키를 반환합니다. 일반 텍스트 데이터 키를 사용하여 데이터를 복호화한 다음, 가능한 빨리 메모리에서 일반 텍스트 데이터 키를 제거하십시오.

다음 다이어그램은 Decrypt 작업을 사용하여 암호화된 데이터 키를 암호화 해제하는 방법을 보여줍니다.

데이터 키 페어데이터 키 페어는 수학적으로 관련된 퍼블릭 키와 프라이빗 키로 구성된 비대칭 데이터 키입니다. AWS KMS외부에서 클라이언트 측 암호화 및 암호 해독 또는 서명 및 확인에 사용하도록 설계되었습니다.

와 같은 도구가 생성하는 데이터 키 페어와 달리 OpenSSL는 사용자가 지정한 AWS KMS의 대칭 CMK에 있는 각 데이터 키 페어의 프라이빗 키를 보호합니다.AWS KMS 그러나 AWS KMS는 데이터 키 페어를 저장,

6

Page 15: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드데이터 키 페어

관리 또는 추적하거나 데이터 키 페어로 암호화 작업을 수행하지 않습니다. 따라서 AWS KMS 외부에서 데이터 키를 사용하고 관리해야 합니다.

AWS KMS가 지원하는 데이터 키 페어의 유형은 다음과 같습니다.

• RSA 키 페어: RSA_2048, RSA_3072 및 RSA_4096• 타원 곡선 키 페어, ECC_NIST_P256, ECC_NIST_P384, ECC_NIST_P521, ECC_SECG_P256K1

일반적으로 선택할 데이터 키 페어의 유형은 사용 사례 또는 규정 요구 사항에 따라 다릅니다. 대부분의 인증서에는 RSA 키가 필요합니다. 타원 곡선 키는 흔히 디지털 서명에 사용됩니다. ECC_SECG_P256K1 키는암호 화폐에 공통적으로 사용입니다.

데이터 키 페어 생성데이터 키 페어를 생성하려면 GenerateDataKeyPair 또는 GenerateDataKeyPairWithoutPlaintext 작업을 호출합니다. 프라이빗 키를 암호화하는 데 사용할 대칭 CMK를 지정합니다.

GenerateDataKeyPair는 일반 텍스트 퍼블릭 키, 일반 텍스트 프라이빗 키 및 암호화된 프라이빗 키를 반환합니다. 디지털 서명을 생성하는 경우와 같이 일반 텍스트 프라이빗 키가 즉시 필요할 때 이 작업을 사용합니다.

GenerateDataKeyPairWithoutPlaintext는 일반 텍스트 퍼블릭 키 및 암호화된 프라이빗 키를 반환하지만 일반 텍스트 프라이빗 키는 반환하지 않습니다. 퍼블릭 키로 암호화하는 경우와 같이 일반 텍스트 프라이빗 키가 즉시 필요하지 않은 경우 이 작업을 사용합니다. 나중에 데이터를 암호 해독하기 위해 일반 텍스트프라이빗 키가 필요할 때 Decrypt 작업을 호출 할 수 있습니다.

다음 그림은 GenerateDataKeyPair 작업을 보여 줍니다. GenerateDataKeyWithoutPlaintext 작업은 일반 텍스트 프라이빗 키를 생략합니다.

7

Page 16: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드데이터 키 페어

데이터 키 페어로 데이터 암호화데이터 키 페어를 사용하여 암호화하는 경우 해당 페어의 퍼블릭 키를 사용하여 데이터를 암호화하고 동일한페어의 프라이빗 키를 사용하여 데이터를 해독합니다. 일반적으로 데이터 키 페어는 많은 당사자가 프라이빗키를 보유한 당사자만 해독할 수 있는 데이터를 암호화해야 할 때 사용됩니다.

퍼블릭 키가 있는 당사자는 다음 다이어그램과 같이 해당 키를 사용하여 데이터를 암호화합니다.

8

Page 17: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드데이터 키 페어

데이터 키 페어로 데이터 암호 해독데이터를 암호 해독하려면 데이터 키 페어의 프라이빗 키를 사용합니다. 작업이 성공하려면 퍼블릭 키와 프라이빗 키가 동일한 데이터 키 페어에 속해야 하며 동일한 암호화 알고리즘을 사용해야 합니다.

암호화된 프라이빗 키를 해독하려면 Decrypt 작업에 키를 전달합니다. 일반 텍스트 프라이빗 키를 사용하여데이터를 암호 해독합니다. 그런 다음 가능한 한 빨리 메모리에서 일반 텍스트 프라이빗 키를 제거하십시오.

다음 다이어그램은 데이터 키 페어의 프라이빗 키를 사용하여 암호화 텍스트를 해독하는 방법을 보여줍니다.

데이터 키 페어를 사용하여 메시지 서명메시지에 대한 암호화 서명을 생성하려면 데이터 키 페어의 프라이빗 키를 사용합니다. 퍼블릭 키를 가진 사람은 누구나 이 키를 사용하여 메시지가 프라이빗 키로 서명되었는지, 서명 이후 변경되지 않았는지 확인할수 있습니다.

프라이빗 키가 암호화된 경우 암호화된 프라이빗 키를 Decrypt 작업에 전달합니다. AWS KMS는 CMK를 사용하여 데이터 키를 해독한 후 일반 텍스트 프라이빗 키를 반환합니다. 일반 텍스트 프라이빗 키를 사용하여서명을 생성합니다. 그런 다음 가능한 한 빨리 메모리에서 일반 텍스트 프라이빗 키를 제거하십시오.

메시지에 서명하려면 의 dgstOpenSSL 명령과 같은 암호화 해시 함수를 사용하여 메시지 다이제스트를 생성합니다. 그런 다음 일반 텍스트 프라이빗 키를 서명 알고리즘에 전달합니다. 결과는 메시지의 내용을 나타내는 서명입니다.

다음 다이어그램은 데이터 키 페어의 프라이빗 키를 사용하여 메시지에 서명하는 방법을 보여줍니다.

9

Page 18: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드Aliases

데이터 키 페어를 사용하여 서명 확인데이터 키 페어의 퍼블릭 키가 있는 사람은 누구나 이 키를 사용하여 프라이빗 키로 생성한 서명을 확인할 수있습니다. 확인은 권한이 부여된 사용자가 지정된 프라이빗 키 및 서명 알고리즘을 사용하여 메시지에 서명했으며 서명된 이후 메시지가 변경되지 않았음을 확인합니다.

확인이 성공하려면 서명을 확인하는 당사자가 동일한 유형의 다이제스트를 생성하고 동일한 알고리즘을 사용하며 메시지에 서명하는 데 사용되는 프라이빗 키에 해당하는 퍼블릭 키를 사용해야 합니다.

다음 다이어그램은 데이터 키 페어의 퍼블릭 키를 사용하여 메시지 서명을 확인하는 방법을 보여 줍니다.

Aliases별칭은 CMK의 표시 이름입니다. 예를 들어 CMK를 대신 test-key1234abcd-12ab-34cd-56ef-1234567890ab로 참조할 수 있습니다.

10

Page 19: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드암호화 작업

별칭을 사용하면 AWS Management 콘솔에서 CMK를 보다 쉽게 식별할 수 있습니다. 별칭을 사용하여 AWSKMS암호화 작업을 포함한 일부 (p. 11) 작업에서 CMK를 식별할 수도 있습니다. 애플리케이션에서는 단일 별칭을 사용하여 각 CMKs 리전에서 서로 다른 AWS를 참조할 수 있습니다.

에서 별칭은 CMK의 속성이 아니라 독립적인 리소스입니다.AWS KMS 따라서 연결된 CMK에 영향을 주지않고 별칭을 추가, 변경 및 삭제할 수 있습니다.

자세히 알아보기:

• 별칭에 대한 자세한 내용은 별칭 사용 (p. 50) 단원을 참조하십시오.• 별칭을 포함한 키 식별자의 형식에 대한 자세한 내용은 키 식별자(KeyId) (p. 12) 단원을 참조하십시오.• CMK와 연결된 별칭을 찾는 방법에 대한 도움말은 별칭 이름 및 별칭 ARN 찾기 (p. 38) 단원을 참조하

십시오.• 여러 프로그래밍 언어로 별칭을 생성하고 관리하는 예제는 별칭으로 작업 (p. 231) 단원을 참조하십시오.

암호화 작업에서 AWS KMS암호화 작업은 를 사용하여 데이터를 보호하는 API 작업입니다.CMKs 는 CMKs 내에 남아있으므로 AWS KMS를 호출하여 암호화 작업에서 AWS KMS를 사용해야 합니다.CMK

를 사용하여 암호화 작업을 수행하려면 CMKs AWS, SDKs(AWS Command Line Interface) 또는 AWS CLI를사용합니다.PowerShell용 AWS 도구 AWS KMS 콘솔에서 암호화 작업을 수행할 수 없습니다. 여러 프로그래밍 언어로 암호화 작업을 호출하는 예는 AWS KMS API 프로그래밍 (p. 219) 단원을 참조하십시오.

다음 표에는 AWS KMS 암호화 작업이 나와 있습니다. 또한 작업에 사용되는 의 키 유형 및 (p. 14)키 사용CMKs 요구 사항을 보여줍니다.

연산 CMK 키 유형 CMK 키 사용

암호화 해제 모두 ENCRYPT_DECRYPT

Encrypt 모두 ENCRYPT_DECRYPT

GenerateDataKey 대칭 ENCRYPT_DECRYPT

GenerateDataKeyPair 대칭 [1] ENCRYPT_DECRYPT

GenerateDataKeyPairWithoutPlaintext 대칭 [1] ENCRYPT_DECRYPT

GenerateDataKeyWithoutPlaintext 대칭 ENCRYPT_DECRYPT

GenerateRandom 해당 사항 없음 이 작업은 CMK를 사용하지 않습니다.

해당 사항 없음

ReEncrypt 모두 ENCRYPT_DECRYPT

Sign 비대칭 SIGN_VERIFY

확인 비대칭 SIGN_VERIFY

[1] GenerateDataKeyPair 및 GenerateDataKeyPairWithoutPlaintext는 대칭 CMK로 보호되는비대칭 데이터 키 페어를 생성합니다.

암호화 작업과 관련한 권한에 대한 자세한 내용은 the section called “AWS KMS API 권한 참조” (p. 96)를참조하십시오.

11

Page 20: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 식별자(KeyId)

모든 사용자에 대한 AWS KMS 응답성 및 성능을 유지하기 위해 AWS KMS는 초당 호출할 수 있는 암호화 작업 수에 대한 할당량을 설정합니다. 자세한 내용은 the section called “암호화 작업에 대한 공유 할당량” (p. 399) 단원을 참조하십시오.

키 식별자(KeyId)키 식별자는 AWS KMS 고객 마스터 키(CMKs)의 이름 역할을 합니다. 콘솔에서 CMKs를 인식하는 데 도움이 됩니다. 이를 사용하여 CMKs API 작업, AWS KMS 정책 및 권한 부여에 사용할 IAM를 나타냅니다.

AWS KMS는 몇 가지 키 식별자를 정의합니다. 를 생성하면 CMK에서 키 ARN 및 키 ID를 생성하는데, 이는AWS KMS의 속성입니다.CMK 별칭을 만들면 정의한 별칭 이름을 기반으로 AWS KMS가 별칭 ARN을 생성합니다. AWS Management 콘솔 및 AWS KMS API에서 키 및 별칭 식별자를 볼 수 있습니다.

콘솔에서 키 ARN, 키 ID 또는 별칭 이름으로 AWS KMS를 보고 필터링하고 키 ID 및 별칭 이름으로 정렬할수 있습니다.CMKs 콘솔에서 키 식별자를 찾는 방법에 대한 도움말은 the section called “키 ID 및 ARN 찾기” (p. 37) 단원을 참조하십시오.

API에서 AWS KMS를 식별하는 데 사용하는 파라미터는 CMK 또는 변형(예: KeyId 또는 TargetKeyId)입니다.DestinationKeyId 그러나 이러한 파라미터의 값은 키 IDs로 제한되지 않습니다. 일부는 유효한키 식별자를 취할 수 있습니다. 각 파라미터의 값에 대한 자세한 내용은 AWS Key Management Service APIReference의 파라미터 설명을 참조하십시오.

Note

AWS KMS API를 사용할 때는 사용하는 키 식별자를 주의해야 합니다. 마다 다른 키 식별자가 필요합니다.APIs 일반적으로 작업에 실용적인 가장 완벽한 키 식별자를 사용하십시오.

AWS KMS는 다음 키 식별자를 지원합니다.

키 ARN

키 ARN은 CMK의 Amazon 리소스 이름(ARN)입니다. 에 대한 고유한 정규화된 식별자입니다.CMK 키ARN에는 AWS 계정, 리전 및 키 ID가 포함됩니다. 의 키 ARN을 찾는 방법은 CMK 단원을 참조하십시오.the section called “키 ID 및 ARN 찾기” (p. 37)

키 ARN의 형식은 다음과 같습니다.

arn:<partition>:kms:<region>:<account-id>:key/<key-id>

다음은 키 ARN의 예입니다.

arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

키 ID

키 ID는 계정 및 리전 내에서 CMK를 고유하게 식별합니다. 의 키 ID를 찾는 방법은 CMK 단원을 참조하십시오.the section called “키 ID 및 ARN 찾기” (p. 37)

다음은 키 ID의 예입니다.

1234abcd-12ab-34cd-56ef-1234567890ab

별칭 ARN

별칭 ARN은 별칭 AWS KMS의 Amazon 리소스 이름(ARN)입니다. 별칭에 대한 고유한 정규화된 식별자이며 CMK에 대해 나타냅니다. 별칭 ARN에는 AWS 계정, 리전 및 별칭 이름이 포함됩니다.

12

Page 21: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 구성 요소 오리진

별칭 ARN은 특정 CMK 하나를 식별합니다. 그러나 별칭과 연결된 CMK를 변경할 수 있으므로 별칭ARN은 서로 다른 시간에 서로 다른 CMKs를 식별할 수 있습니다. 의 별칭 ARN을 찾는 방법은 CMK 단원을 참조하십시오.별칭 이름 및 별칭 ARN 찾기 (p. 38)

별칭 ARN의 형식은 다음과 같습니다.

arn:<partition>:kms:<region>:<account-id>:alias/<alias-name>

다음은 가상 ExampleAlias의 별칭 ARN입니다.

arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias

별칭 이름

별칭 이름은 계정 및 리전 내에서 연결된 CMK를 고유하게 식별합니다. API에서 별칭 이름은 항상 AWSKMS로 시작합니다.alias 의 별칭 이름을 찾는 방법에 대한 도움말은 CMK 단원을 참조하십시오.별칭이름 및 별칭 ARN 찾기 (p. 38)

별칭 이름의 형식은 다음과 같습니다.

alias/<alias-name>

다음 예를 참조하십시오.

alias/ExampleAlias

별칭 이름의 aws/ 접두사는 AWS 관리형 CMKs (p. 4)용으로 예약되어 있습니다. 이 접두사를 가진별칭은 만들 수 없습니다. 예를 들어 AWS(CMK)용 Amazon Simple Storage Service 관리형 Amazon S3의 별칭 이름은 다음과 같습니다.

alias/aws/s3

키 구성 요소 오리진키 구성 요소 오리진은 CMK에서 키 구성 요소의 소스를 식별하는 CMK 속성입니다. 를 생성할 때 키구성 요소 오리진을 선택하면 이 설정을 변경할 수 없습니다.CMK 의 키 구성 요소 오리진을 찾으려면CMKDescribeKey 작업을 사용하거나 콘솔의 에 대한 세부 정보 페이지의 암호화 구성 탭에 있는 오리진CMK 값을 참조하십시오.AWS KMS 자세한 내용은 키 보기 (p. 27)를 참조하십시오.

CMKs는 다음 키 구성 요소 오리진 값 중 하나를 가질 수 있습니다.

KMS(기본값)

API 값: AWS_KMS

AWS KMS는 자체 키 스토어에서 CMK에 대한 키 구성 요소를 생성하고 관리합니다. 이것이 기본값이며대부분의 CMKs에 권장되는 값입니다.

AWS KMS에서 키 구성 요소로 키를 생성하는 방법에 대한 자세한 내용은 키 생성 (p. 21) 단원을 참조하십시오.

외부

API 값: EXTERNAL

13

Page 22: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 사양

에는 CMK가져온 키 구성 요소가 있습니다. (p. 277) 키 구성 요소 오리진을 사용하여 CMK를 생성할 때 External에는 키 구성 요소가 없습니다.CMK 나중에 키 구성 요소를 CMK로 가져올 수 있습니다. 가져온 키 구성 요소를 사용하는 경우 만료되는 키 구성 요소를 교체하는 것을 포함하여 AWSKMS 외부에서 해당 키 구성 요소를 보호하고 관리해야 합니다. 자세한 내용은 가져온 키 구성 요소 정보 (p. 278) 단원을 참조하십시오.

가져온 키 구성 요소에 대한 CMK 생성에 대한 도움말은 단계 1. 생성 CMK 핵심 재료 없이 (p. 281) 단원을 참조하십시오.

사용자 지정 키 스토어(CloudHSM)

API 값: AWS_CLOUDHSM

AWS KMS가 CMK사용자 지정 키 스토어에서 (p. 291)에 대한 키 구성 요소를 생성했습니다.

사용자 지정 키 스토어에서 CMK 생성에 대한 도움말은 생성 CMKs 사용자 지정 키 스토어에서 (p. 310) 단원을 참조하십시오.

키 사양키 사양은 CMK의 암호화 구성을 나타내는 CMK 속성입니다. 키 사양에 따라 CMK가 대칭 또는 비대칭인지여부, CMK의 키 구성 요소 유형, CMK에 사용할 수 있는 암호화 알고리즘 또는 서명 알고리즘이 결정됩니다.

일반적으로 CMK에 대해 선택하는 키 사양은 사용 사례 및 규정 요구 사항을 기반으로 합니다. 키 사양은를 생성CMK할 때 선택하며 이후에는 변경할 수 없습니다. (p. 21) 잘못된 키 사양을 선택한 경우 를 삭제CMK하고 새 사양을 생성합니다. (p. 266)

키 사양 목록 및 키 사양 선택에 대한 도움말은 키 사양 선택 (p. 161) 단원을 참조하십시오. 의 키 사양을 찾으려면 CMKDescribeKey 작업을 사용하거나 콘솔의 에 대한 세부 정보 페이지의 암호화 구성CMK 탭을 참조하십시오.AWS KMS 자세한 내용은 키 보기 (p. 27)를 참조하십시오.

Note

AWS KMS API 작업에서 CMK에 대한 키 사양은 CustomerMasterKeySpec으로 알려져 있습니다. 따라서 이 사양은 데이터 키(KeySpec) 및 데이터 키 페어(KeyPairSpec)에 대한 키 사양 및 가져오기를 위해 키 재료를 래핑할 때 사용되는 키 사양(WrappingKeySpec)과 구분됩니다. 키 사양유형별로 값이 서로 다릅니다.

를 생성할 때 보안 주체가 사용할 수 있는 키 사양을 제한하려면 CMKskms:CustomerMasterKeySpec조건 키를 사용합니다. (p. 111) 조건 키를 사용하여 보안 주체가 키 사양을 기반으로kms:CustomerMasterKeySpec에 대한 AWS KMS 작업을 호출하도록 허용할 수도 있습니다.CMK 예를들어 CMK 키 사양을 사용하여 RSA_4096 삭제를 예약할 수 있는 권한을 거부할 수 있습니다.

키 사용키 사용은 CMK가 암호화 및 암호 해독 또는 서명 및 확인에 사용되는지 여부를 결정하는 CMK 속성입니다.둘 다 선택할 수는 없습니다. 두 가지 이상의 작업 유형에 CMK를 사용하면 두 작업의 제품이 공격에 더 취약해집니다.

대칭 CMKs의 키 사용은 항상 암호화 및 암호 해독입니다. 타원 곡선(ECC) CMKs의 키 사용은 항상 서명및 확인입니다. RSA CMKs에 대한 키 사용만 선택하면 됩니다. 키 사용은 를 생성CMK할 때 선택하며 이후에는 변경할 수 없습니다. (p. 21) 잘못된 키 사용을 선택한 경우 를 삭제CMK하고 새 키를 생성합니다. (p. 266)

키 사용을 선택하는 방법은 키 사용 선택 (p. 160) 단원을 참조하십시오. 의 키 사용을 찾으려면CMKDescribeKey 작업을 사용하거나 콘솔의 에 대한 세부 정보 페이지에서 암호화 구성CMK 탭을 선택합니다.AWS KMS 자세한 내용은 키 보기 (p. 27)를 참조하십시오.

14

Page 23: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드봉투 암호화

보안 주체가 서명 및 확인 또는 암호화 및 암호 해독을 위해서만 CMKs를 생성하도록 허용하려면kms:CustomerMasterKeyUsage (p. 112) 조건 키를 사용합니다. 조건 키를 사용하여 보안 주체가 키 사용을 기반으로 kms:CustomerMasterKeyUsage에 대한 API 작업을 호출하도록 허용할 수도 있습니다.CMK예를 들어 키 사용이 SIGN_VERIFY인 경우에만 CMK를 비활성화할 수 있는 권한을 허용할 수 있습니다.

봉투 암호화데이터를 암호화하면 데이터가 보호되지만 암호화 키를 보호해야 합니다. 암호화하는 것도 하나의 전략입니다. 봉투 암호화는 데이터 키로 일반 텍스트 데이터를 암호화한 후, 다른 키 아래에서 데이터 키를 암호화하는 방법입니다.

데이터 암호화 키를 다른 암호화 키로 암호화하고 해당 암호화 키를 다른 암호화 키로 암호화할 수도 있습니다. 그러나 궁극적으로는 키와 데이터를 복호화할 수 있도록 하나의 키는 일반 텍스트로 남겨둬야 합니다. 이최상위 일반 텍스트 키 암호화 키를 마스터 키라고 합니다.

AWS KMS를 사용하면 마스터 키를 안전하게 저장하고 관리하여 보호할 수 있습니다. 에 저장된 마스터 키(AWS KMS고객 마스터 키( (p. 3)))는 CMKsFIPS 확인 하드웨어 보안 모듈AWS KMS을 암호화되지 않은 상태로 두지 않습니다.https://csrc.nist.gov/projects/cryptographic-module-validation-program/Certificate/3139 AWS KMS를 사용하려면 CMK를 호출해야 합니다.AWS KMS

봉투 암호화는 여러 가지 장점을 제공합니다.

• 데이터 키 보호

데이터 키를 암호화하면 해당 데이터 키의 보안이 암호화에 의해 근본적으로 보호되기 때문에 암호화한 데이터 키의 저장에 대해 고민할 필요가 없습니다. 암호화한 데이터 키를 암호화한 데이터와 함께 안전하게저장할 수 있습니다.

• 여러 개의 하에 동일한 데이터 암호화 마스터 키

암호화 작업, 특히 암호화되는 데이터가 대용량 객체일 경우 긴 시간이 걸릴 수 있습니다. 서로 다른 키로원시 데이터를 여러 차례 다시 암호화하는 대신, 원시 데이터를 보호하는 데이터 키만 다시 암호화할 수 있습니다.

• 여러 알고리즘의 강점 결합

15

Page 24: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드암호화 컨텍스트

일반적으로 대칭 키 알고리즘이 퍼블릭 키 알고리즘보다 빠르고 더 작은 암호화 텍스트를 생성합니다. 그러나 퍼블릭 키 알고리즘은 고유한 역할 구분을 제공하고 키 관리가 더 쉽습니다. 봉투 암호화는 각 전략의장점을 하나로 결합하게 해 줍니다.

암호화 컨텍스트대칭 AWS KMS를 사용하는 모든 암호화 작업 (p. 11)은 데이터에 대한 추가 컨텍스트 정보를 포함할 수있는 선택적 키CMKs값 페어 세트인 암호화 컨텍스트를 수락합니다. –는 암호화 컨텍스트를 AWS KMS추가인증 데이터(AAD)로 사용하여 인증된 암호화를 지원합니다.

비대칭 CMK (p. 158)를 사용하여 암호화 작업에서 암호화 컨텍스트를 지정할 수 없습니다. AWS KMS에서사용하는 표준 비대칭 암호화 알고리즘은 암호화 컨텍스트를 지원하지 않습니다.

암호화 요청에 암호화 컨텍스트를 포함하면 데이터를 암호화 해제(또는 암호화 해제한 다음 다시 암호화)하는 데 동일한 암호화 컨텍스트가 필요하도록 암호 텍스트에 암호화 방식으로 바인딩됩니다. 복호화 요청에제공된 암호화 컨텍스트가 대소문자가 정확히 일치하지 않으면 복호화 요청이 실패합니다. 암호화 컨텍스트에서 키-값 페어의 순서만 다를 수 있습니다.

암호화 컨텍스트는 보안 사항이 아닙니다. AWS CloudTrail 로그 (p. 181)에 일반 텍스트로 표시되므로 암호화 작업을 식별하고 분류하는 데 사용할 수 있습니다.

암호화 컨텍스트는 원하는 키와 값으로 구성할 수 있습니다. 하지만 암호화되지 않으므로 암호화 컨텍스트에민감한 정보가 포함되면 안 됩니다. 암호화 컨텍스트가 암호화 또는 복호화되는 데이터를 설명하는 것이 좋습니다. 예를 들어 파일을 암호화하는 경우, 파일 경로의 일부를 암호화 컨텍스트로 사용할 수 있습니다.

암호화 컨텍스트 쌍의 키와 값은 단순 리터럴 문자열이어야 합니다. 정수나 객체, 또는 완전히 해결되지 않는어떤 형식도 사용할 수 없습니다. 정수 또는 부동 소수점과 같은 다른 형식을 사용할 경우 AWS KMS는 이를문자열로 해석합니다.

"encryptionContext": { "department": "10103.0"}

암호화 컨텍스트 키와 값은 밑줄(_), 대시(-), 슬래시(/, \), 콜론(:) 같은 특수 문자를 포함할 수 있습니다.

예를 들어 Amazon Simple Storage Service( (p. 377))는 키가 Amazon S3인 암호화 컨텍스트를 사용합니다.aws:s3:arn 이 값은 암호화되는 파일의 S3 버킷 경로입니다.

"encryptionContext": { "aws:s3:arn": "arn:aws:s3:::bucket_name/file_name"}

암호화 컨텍스트를 사용하여 계정에서 고객 마스터 키(CMKs)에 대한 액세스를 구체화하거나 제한할 수도있습니다. 정책문 에서 암호화 컨텍스트 를 허가 (p. 136)의 제약 조건과 (p. 107) 조건으로 사용할 수 있습니다.

암호화 컨텍스트를 사용하여 암호화된 데이터의 무결성을 보호하는 방법을 알아보려면 보안 블로그의 AWSKey Management Service 및 EncryptionContext를 사용하여 암호화된 데이터의 무결성을 보호하는 방법 게시물을 참조하십시오.AWS

암호화 컨텍스트 관련 추가 내용.

정책의 암호화 컨텍스트암호화 컨텍스트는 주로 무결성 및 신뢰성을 확인하는 데 사용됩니다. 그러나 암호화 컨텍스트를 사용하여키 정책 및 고객 마스터 키 정책에서 대칭 CMKs(IAM)에 대한 액세스를 제어할 수도 있습니다.

16

Page 25: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드암호화 컨텍스트

kms:EncryptionContext: (p. 116) 및 kms:EncryptionContextKeys (p. 116) 조건 키는 요청이 특정 암호화컨텍스트 키 또는 키–값 페어를 포함하는 경우에만 권한을 허용(또는 거부)합니다.

예를 들어 다음 키 정책 문을 사용하면 RoleForExampleApp 역할이 CMK 작업에서 Decrypt를 사용할수 있습니다. 이 정책 문은 kms:EncryptionContext: 조건 키를 사용하여 요청의 암호화 컨텍스트가AppName:ExampleApp 암호화 컨텍스트 쌍을 포함하는 경우에만 이 권한을 허용합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } }}

이러한 암호화 컨텍스트 키에 대한 자세한 내용은 AWS KMS의 정책 조건 사용 (p. 107) 단원을 참조하십시오.

권한 부여의 암호화 컨텍스트권한 부여를 생성 (p. 136)할 때 요청에 특정 암호화 컨텍스트 또는 암호화 컨텍스트 키가 포함되는 경우에만 액세스를 허용하는 권한 부여 제약 조건을 포함시킬 수 있습니다. EncryptionContextEquals 및EncryptionContextSubset 권한 부여 제약 조건에 대한 자세한 내용은 제약 편집 (p. 138) 단원을 참조하십시오.

대칭 CMK에 대한 권한 부여에서 암호화 컨텍스트 제약 조건을 지정하려면 Constraints 작업에서CreateGrant 파라미터를 사용합니다. 이 예제에서는 AWS Command Line Interface를 사용하지만 원하는 AWS SDK를 사용할 수 있습니다. 이 명령이 생성하는 권한 부여는 Decrypt 작업을 호출할 수 있는exampleUser 권한입니다. 그러나 이 권한은 Decrypt 요청의 암호화 컨텍스트가 "Department": "IT"암호화 컨텍스트 쌍을 포함하는 경우에만 유효합니다.

$ aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:user/exampleUser \ --operations Decrypt \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --constraints EncryptionContextSubset={Department=IT}

결과 권한 부여는 다음과 같습니다. exampleUser에 부여된 권한은 Decrypt 요청이 권한 부여 제약 조건에 지정된 암호화 컨텍스트 쌍을 포함하는 경우에만 유효합니다. 의 권한 부여를 찾으려면 CMKListGrants작업을 사용합니다.

$ aws kms list-grants --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

{ "Grants": [ { "Name": "", "IssuingAccount": "arn:aws:iam::111122223333:root", "GrantId": "8c94d1f12f5e69f440bae30eaec9570bb1fb7358824f9ddfa1aa5a0dab1a59b2", "Operations": [ "Decrypt" ], "GranteePrincipal": "arn:aws:iam::111122223333:user/exampleUser", "Constraints": {

17

Page 26: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드암호화 컨텍스트

"EncryptionContextSubset": { "Department": "IT" } }, "CreationDate": 1568565290.0, "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole" } ]}

AWS 서비스는 CMKs 계정에서 AWS를 사용할 수 있는 권한을 부여하는 권한 부여에서 암호화 컨텍스트 제약 조건을 사용하는 경우가 많습니다. 예를 들어 Amazon DynamoDB는 다음과 같은 권한 부여를사용하여 계정에서 용 AWSCMK 관리형 (p. 4)DynamoDB 사용 권한을 얻습니다. 이 권한 부여의EncryptionContextSubset 권한 부여 제약 조건은 권한 부여에 지정된 권한이 요청의 암호화 컨텍스트가 "subscriberID": "111122223333" 및 "tableName": "Services" 쌍을 포함하는 경우에만 유효하게 만듭니다. 이 권한 부여 제약 조건은 권한 부여가 DynamoDB가 CMK 계정의 특정 테이블에 대해서만지정된 AWS를 사용하도록 허용한다는 의미입니다.

이 출력을 얻으려면 계정의 용 ListGrants 관리형 에서 AWSCMKDynamoDB 작업을 실행합니다.

$ aws kms list-grants --key-id 0987dcba-09fe-87dc-65ba-ab0987654321

{ "Grants": [ { "Operations": [ "Decrypt", "Encrypt", "GenerateDataKey", "ReEncryptFrom", "ReEncryptTo", "RetireGrant", "DescribeKey" ], "IssuingAccount": "arn:aws:iam::111122223333:root", "Constraints": { "EncryptionContextSubset": { "aws:dynamodb:tableName": "Services", "aws:dynamodb:subscriberId": "111122223333" } }, "CreationDate": 1518567315.0, "KeyId": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "GranteePrincipal": "dynamodb.us-west-2.amazonaws.com", "RetiringPrincipal": "dynamodb.us-west-2.amazonaws.com", "Name": "8276b9a6-6cf0-46f1-b2f0-7993a7f8c89a", "GrantId": "1667b97d27cf748cf05b487217dd4179526c949d14fb3903858e25193253fe59" } ]}

암호화 컨텍스트 로깅AWS KMS는 AWS CloudTrail를 사용하여 암호화 컨텍스트를 로깅하므로 어떤 CMKs 및 데이터에 액세스했는지 확인할 수 있습니다. 로그 항목은 로그 항목에서 암호화 컨텍스트가 참조하는 특정 데이터를 암호화하거나 해독하는 데 사용된 CMK를 정확히 보여줍니다.

Important

암호화 컨텍스트가 로깅되기 때문에 민감한 정보가 포함될 수 없습니다.

18

Page 27: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 정책

암호화 컨텍스트 저장

Decrypt 또는 ReEncrypt 작업 호출 시 암호화 컨텍스트 사용을 간소화하기 위해 암호화된 데이터와 함께암호화 컨텍스트를 저장할 수 있습니다. 암호화 또는 해독을 위해 필요할 때 전체 암호화 컨텍스트를 만드는데 도움이 되는 암호화 컨텍스트만 저장하는 것이 좋습니다.

예를 들어 암호화 컨텍스트가 파일의 정규화된 경로인 경우 해당 경로의 일부만 암호화된 파일 내용과 함께저장합니다. 그런 다음 전체 암호화 컨텍스트가 필요할 때 저장된 조각으로부터 다시 구성합니다. 파일 이름을 변경하거나 다른 위치로 이동하는 등 파일을 변조하면 암호화 컨텍스트 값이 변경되고 해독 요청이 실패합니다.

키 정책를 생성할 때 해당 CMK를 사용하고 관리할 수 있는 사용자를 결정합니다.CMK 이러한 권한은 키 정책이라는문서에 포함됩니다. 키 정책을 사용하여 고객 관리형 CMK에 대한 권한을 언제든 추가, 제거 또는 변경할 수있습니다. 그러나 AWS 관리형 CMK에 대한 키 정책은 편집할 수 없습니다. 자세한 정보는 AWS KMS에 대한 인증 및 액세스 제어 (p. 62) 단원을 참조하십시오.

Grants권한 부여는 권한을 제공하기 위한 또 하나의 메커니즘입니다. 이는 키 정책의 대안입니다. 권한 부여는 매우구체적일 수 있고 생성 및 취소가 간편하므로 임시 권한 또는 보다 세부적인 권한을 제공하는 데 자주 사용됩니다.

권한 부여 토큰권한 부여를 생성할 때 최종 일관성으로 인해 권한 부여에 지정된 권한이 즉시 적용되지 않을 수 있습니다.지연 가능성을 완화해야 하는 경우 요청에 대한 응답으로 수신한 CreateGrant권한 부여 토큰을 사용합니다.AWS KMS API 요청을 통한 권한 부여 토큰을 전달하여 권한 부여의 권한이 즉시 적용되도록 할 수 있습니다. 다음 AWS KMS API 작업이 권한 부여 토큰을 수락합니다.

• CreateGrant• 암호화 해제• DescribeKey• Encrypt• GenerateDataKey• GenerateDataKeyWithoutPlaintext• ReEncrypt• RetireGrant

권한 부여 토큰은 비밀이 아닙니다. 권한 부여 토큰에는 권한 부여의 대상 및 그에 따라 사용할 수 있는 사람에 대한 정보가 포함되므로 권한 부여의 권한이 즉시 적용될 수 있습니다.

사용 감사CMKAWS CloudTrail을 사용해 키 사용을 감사할 수 있습니다. CloudTrail은 계정의 AWS API 호출 및 관련 이벤트 내역이 포함된 로그 파일을 생성합니다. 이러한 로그 파일에는 AWS KMS Management Console, AWSAWS 및 명령줄 도구를 사용하여 만든 모든 SDKs API 요청이 포함됩니다. 또한 로그 파일은 AWS 서비스가사용자 대신 생성한 AWS KMS에 대한 요청도 포함합니다. 이러한 로그 파일을 사용하여 CMK가 사용된 시간, 요청된 작업, 요청자의 자격 증명 및 소스 IP 주소를 포함한 중요한 정보를 찾을 수 있습니다. 자세한 내용은 AWS CloudTrail를 사용한 로깅 (p. 181) 및 AWS CloudTrail User Guide를 참조하십시오.

19

Page 28: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 관리 인프라

키 관리 인프라암호화 기법에서 일반적인 방법은 AES(Advanced Encryption Standard)와 비밀 키처럼 공개적으로 사용할수 있고 피어 검토를 거친 알고리즘으로 암호화하고 복호화하는 것입니다. 암호화 기법에서 가장 큰 문제 중하나는 키를 비밀로 유지하기 매우 어렵다는 점입니다. 이는 일반적으로 키 관리 인프라(KMI)의 작업입니다. AWS KMS는 KMI를 자동으로 실행합니다. AWS KMS는 마스터 키라고 하는 고객 마스터 키를 생성하고 안전하게 저장합니다. (p. 3) 작동 방식에 대한 자세한 내용은 AWS KMS를 참조하십시오.AWS KeyManagement Service 암호화 세부 정보 백서

20

Page 29: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 생성

시작하기시작하려면 AWS KMS 고객 마스터 키 (p. 3) (CMK) ). 이 섹션의 주제는 CMK. 또한, 대중 메트릭의 공개 키를 다운로드하는 방법을 설명합니다. CMK.

AWS Management 콘솔에서 이러한 AWS Key Management Service(AWS KMS) 작업을 수행할 수 있습니다. AWS KMS API 작업을 사용하여 모든 AWS KMS 기능에 액세스할 수 있습니다. AWS KMS API 작업을실행하려면 AWS SDK, AWS Command Line Interface(AWS CLI) 또는 PowerShell용 AWS 도구을 사용합니다.

주제• 키 생성 (p. 21)• 키 보기 (p. 27)• 키 편집 (p. 43)• 키 태그 지정 (p. 44)• 키 활성화 및 비활성화 (p. 47)• 퍼블릭 키 다운로드 (p. 48)• 별칭 사용 (p. 50)

키 생성에서 또는 고객 마스터 키 작업을 사용하여 (p. 157)대칭 및 비대칭 CMKsAWS Management 콘솔()를 생성할 수 있습니다.CreateKey 이 프로세스 중에 CMK의 암호화 구성과 키 구성 요소의 출처를 결정합니다. 가생성된 후에는 이러한 속성을 변경할 수 없습니다.CMK 에 대한 키 정책도 설정합니다. 이 정책은 언제든지변경할 수 있습니다.CMK

서비스에 저장하거나 관리하는 데이터를 암호화하기 위해 CMK를 생성하는 경우 대칭 AWS를 생성합니다.CMKAWS KMS와 통합되는 AWS 서비스는 대칭 CMK를 사용하여 데이터를 암호화합니다. 이러한 서비스는비대칭 CMK를 사용한 암호화를 지원하지 않습니다. 생성할 CMK 유형을 결정하는 데 도움이 필요하면 구성을 선택하는 방법CMK (p. 159) 단원을 참조하십시오.

콘솔에서 CMK를 생성할 때 별칭(대화명)을 지정해야 합니다.AWS KMS 작업은 새 CMK에 대한 별칭을 생성하지 않습니다.CreateKey 새 CMK나 기존 CMK의 별칭을 만들려면 CreateAlias 작업을 사용합니다. 의 별칭에 대한 자세한 내용은 AWS KMS 단원을 참조하십시오.별칭 사용 (p. 50)

를 생성하려면 콘솔에서 또는 CMK를 사용하여 APIs 정책에 kms:CreateKey 권한이 있어야 합니다.IAM키를 생성하는 동안 태그 (p. 44)를 추가하려면 kms:TagResource 권한이 있어야 합니다. 새로운 마다 (p. 50)별칭CMK이 필요한 콘솔을 사용하는 경우 kms:CreateAlias 및 별칭에 대한 CMK 권한이 필요합니다. 정책 예제를 비롯한 자세한 내용은 사용자가 CMKs을 생성하도록 허용 (p. 89) 단원을 참조하십시오.

자세히 알아보기:

• 가져온 키 구성 요소를 사용하여 CMK를 생성하는 방법(키 구성 요소 오리진 (p. 13)이 외부인 경우)은 키구성 요소 없이 고객 마스터 키 생성 (p. 281)을 참조하십시오.

• 사용자 지정 키 스토어에서 CMK를 생성하는 방법에 대한 도움말은(키 구성 요소 오리진 (p. 13)은 사용자지정 키 스토어(CloudHSM)) 사용자 지정 키 스토어에서 CMKs 생성 (p. 310)을 참조하십시오.

• 기존 CMK가 대칭 또는 비대칭인지 여부를 확인하는 방법은 대칭 및 비대칭 CMKs 식별 (p. 40) 단원을참조하십시오.

21

Page 30: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드대칭 CMKs 생성

• 프로그래밍 방식으로 명령줄 인터페이스 작업에서 CMKs를 사용하려면 키 ID (p. 12) 또는 키ARN (p. 12)이 필요합니다. 자세한 지침은 키 ID 및 ARN 찾기 (p. 37) 단원을 참조하십시오.

• 에 적용되는 할당량에 대한 자세한 내용은 CMKs 단원을 참조하십시오.할당량 (p. 396)

주제• 대칭 CMKs 생성 (p. 22)• 비대칭 CMKs 생성 (p. 24)

대칭 CMKs 생성에서 또는 API를 사용하여 CMKs대칭 (p. 158)AWS Management 콘솔를 생성할 수 있습니다.AWS KMS대칭 키 암호화는 동일한 키를 사용하여 데이터를 암호화하고 해독합니다.

대칭 CMKs 생성(console)

를 사용하여 AWS Management 콘솔(고객 마스터 키)를 생성할 수 있습니다.CMKs

1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/kms에서 AWS KeyManagement Service(AWS KMS) 콘솔을 엽니다.

2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 탐색 창에서 고객 관리형 키를 선택합니다.4. [Create key]를 선택합니다.5. 대칭 CMK를 생성하려면 키 유형에서 대칭을 선택합니다.

콘솔에서 비대칭 CMK를 생성하는 방법에 대한 자세한 내용은 AWS KMS 단원을 참조하십시오.비대칭생성CMKs(console) (p. 24)

6. 다음을 선택합니다.7. 에 대한 별칭을 입력합니다.CMK 별칭 이름은 aws/로 시작할 수 없습니다. 접두사는 계정에서 aws/ 관

리형 Amazon Web Services를 나타내기 위해 AWS에 의해 예약됩니다.CMKs

별칭은 CMK를 식별하는 데 사용할 수 있는 표시 이름입니다. 보호하려는 데이터의 유형 또는 CMK와 함께 사용할 애플리케이션을 나타내는 별칭을 선택하는 것이 좋습니다.

에서 CMK를 생성할 때 별칭이 필요합니다.AWS Management 콘솔 이는 CreateKey 작업을 사용할 때선택 사항입니다.

8. (선택 사항) CMK에 대한 설명을 입력합니다.

보호하려는 데이터의 유형 또는 CMK와 함께 사용하려는 애플리케이션을 설명하는 내용을 입력합니다. 관리형 AWSCMKs에 사용되는 설명 형식은 사용하지 마십시오. (p. 4) 다른 키가 정의되지 않은 경우 내 ...를 보호하는 기본 마스터 키 설명 형식은 관리형 AWS용으로 예약됩니다.CMKs

키 상태가 (p. 175)이 아닌 한 지금 설명을 추가하거나 언제든지 설명을 업데이트할 수 있습니다.Pending Deletion 기존 고객 관리형 CMK의 설명을 추가, 변경 또는 삭제하려면 에서 CMK를 편집 (p. 43)하거나 AWS Management 콘솔 작업을 사용합니다.UpdateKeyDescription

9. 다음을 선택합니다.10. (선택 사항) 태그 키와 태그 값(선택)을 입력합니다. 에 두 개 이상의 태그를 추가하려면 CMK태그 추

가를 선택합니다.

AWS 리소스에 태그를 추가하면 AWS에서 사용 내역 및 비용을 태그별로 집계한 비용 할당 보고서를 생성합니다. CMK 태그 지정에 대한 자세한 정보는 키 태그 지정 (p. 44) 단원을 참조하십시오.

11. 다음을 선택합니다.12. 를 관리할 수 있는 IAM 사용자 및 역할을 선택합니다.CMK

22

Page 31: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드대칭 CMKs 생성

Note

IAM 정책은 다른 IAM 사용자 및 역할에 CMK 관리 권한을 제공할 수 있습니다.13. (선택 사항) 선택한 IAM 사용자 및 역할이 이 CMK을 삭제하지 못하도록 페이지 하단의 Key deletion(키

삭제) 섹션에서 Allow key administrators to delete this key(키 관리자가 이 키를 삭제하도록 허용) 확인란의 선택을 취소합니다.

14. 다음을 선택합니다.15. 암호화 작업IAM에 CMK를 사용할 수 있는 사용자 및 역할을 선택합니다. (p. 11)

Note

기본적으로 AWS 계정(루트 사용자)에게는 모든 권한이 있습니다. 따라서 IAM 정책은 사용자및 역할에게 암호화 작업에 CMK를 사용할 수 있는 권한을 부여할 수도 있습니다.

16. (선택 사항) 다른 AWS 계정이 암호화 작업에 이 CMK를 사용하도록 허용할 수 있습니다. 이렇게 하려면페이지 하단의 Other AWS accounts(다른 AWS 계정) 섹션에서 Add another AWS account(다른 AWS계정 추가)를 선택하고 외부 계정의 AWS 계정 식별 번호를 입력합니다. 외부 계정을 여러 개 추가하려면 이 단계를 반복합니다.

Note

외부 계정의 보안 주체가 CMK를 사용하도록 허용하려면 외부 계정의 관리자가 이러한 권한을제공하는 IAM 정책을 생성해야 합니다. 자세한 정보는 다른 계정의 사용자가 CMK를 사용하도록 허용 (p. 91) 단원을 참조하십시오.

17. 다음을 선택합니다.18. 옵션에서 생성한 키 정책 문서를 검토합니다. 이를 편집하는 것도 가능합니다.19. 완료를 선택하여 를 생성합니다.CMK

대칭 CMKs 생성(AWS KMS API)

CreateKey 작업을 사용하여 새 대칭 (고객 마스터 키)를 생성할 수 있습니다.CMK 이 예제들은 AWSCommand Line Interface(AWS CLI)를 사용하지만, 사용자는 어떤 지원되는 프로그래밍 언어라도 사용할 수있습니다.

이 작업에는 필수 파라미터가 없습니다. 그러나 Policy 파라미터를 사용하여 키 정책을 지정할 수도 있습니다. 언제든지 키 정책(PutKeyPolicy)을 변경하고 설명 및 태그와 같은 선택적 요소를 추가할 수 있습니다. 또한 CMK가져온 키 구성 요소에 대해 (p. 277)를 생성하거나 CMK사용자 지정 키 스토어에서 (p. 291)를생성하는 경우 Origin 파라미터가 필요합니다.

다음은 파라미터 없이 CreateKey 작업을 호출하는 예제입니다. 이 명령은 모든 기본값을 사용합니다. 에서생성된 키 구성 요소로 암호화 및 해독을 위한 대칭 CMK를 생성합니다.AWS KMS

$ aws kms create-key{ "KeyMetadata": { "Origin": "AWS_KMS", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Description": "", "KeyManager": "CUSTOMER", "Enabled": true, "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "CreationDate": 1502910355.475, "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333" "EncryptionAlgorithms": [

23

Page 32: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드비대칭 CMKs 생성

"SYMMETRIC_DEFAULT" ] }}

새 CMK에 대한 키 정책을 지정하지 않으면 가 적용하는 (p. 67)기본 키 정책CreateKey은 새 CMK를 생성할 때 콘솔이 적용하는 기본 키 정책과 다릅니다.

예를 들어 이 GetKeyPolicy 작업 호출은 CreateKey가 적용하는 키 정책을 반환합니다. 이 정책은 AWS 계정에 CMK에 대한 액세스 권한을 부여하고 AWS Identity and Access Management에 대한 IAM(CMK) 정책을 생성하도록 허용합니다. 정책 및 IAM의 키 정책에 대한 자세한 내용은 CMKs 단원을 참조하십시오.AWSKMS에 대한 인증 및 액세스 제어 (p. 62)

$ aws kms get-key-policy --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --policy-name default --output text{ "Version" : "2012-10-17", "Id" : "key-default-1", "Statement" : [ { "Sid" : "Enable IAM User Permissions", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : "kms:*", "Resource" : "*" } ]}

비대칭 CMKs 생성에서 또는 API를 사용하여 CMKs비대칭 (p. 158)AWS Management 콘솔를 생성할 수 있습니다.AWSKMS 비대칭 CMK는 암호화 또는 서명에 사용할 수 있는 퍼블릭 및 프라이빗 키 페어를 나타냅니다.

서비스에 저장하거나 관리하는 데이터를 암호화하기 위해 CMK를 생성하는 경우 대칭 AWS를 사용합니다.CMK와 통합되는 AWS 서비스는 비대칭 AWS KMS를 지원하지 않습니다.CMKs 대칭 또는 비대칭 CMK를생성할지 여부를 결정하는 방법은 구성 선택 방법CMK을 참조하십시오. (p. 159)

비대칭 생성CMKs(console)

를 사용하여 비대칭 AWS Management 콘솔(고객 마스터 키)를 생성할 수 있습니다.CMKs 각 비대칭 CMK는퍼블릭 및 프라이빗 키 페어를 나타냅니다.

1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/kms에서 AWS KeyManagement Service(AWS KMS) 콘솔을 엽니다.

2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 탐색 창에서 고객 관리형 키를 선택합니다.4. [Create key]를 선택합니다.5. 비대칭 CMK를 생성하려면 키 유형에서 비대칭을 선택합니다.

콘솔에서 대칭 CMK를 생성하는 방법에 대한 자세한 내용은 AWS KMS 단원을 참조하십시오.대칭CMKs 생성(console) (p. 22)

6. 퍼블릭 키 암호화를 위한 비대칭 CMK를 생성하려면 키 사용에서 암호화 및 암호 해독을 선택합니다.또는 메시지 서명 및 서명 확인을 위한 비대칭 CMK를 생성하려면 Key usage(키 사용)에서 Sign andverify(서명 및 확인)를 선택합니다.

키 사용 값 선택에 대한 도움말은 키 사용 선택 (p. 160) 단원을 참조하십시오.

24

Page 33: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드비대칭 CMKs 생성

7. 비대칭 에 대한 사양(키 사양CMK)을 선택합니다.

선택하는 키 사양은 규정, 보안 또는 비즈니스 요구 사항에 따라 결정됩니다. 또한 암호화하거나 서명해야 하는 메시지의 크기에 영향을 받을 수 있습니다. 일반적으로 암호화 키가 길수록 무차별 대입 공격에더 강합니다.

키 사양 선택에 대한 도움말은 키 사양 선택 (p. 161) 단원을 참조하십시오.8. 다음을 선택합니다.9. 에 대한 별칭을 입력합니다.CMK 별칭 이름은 aws/로 시작할 수 없습니다. 접두사는 계정에서 aws/ 관

리형 Amazon Web Services를 나타내기 위해 AWS에 의해 예약됩니다.CMKs

별칭은 CMK를 식별하는 데 사용할 수 있는 표시 이름입니다. 보호하려는 데이터의 유형 또는 CMK와 함께 사용할 애플리케이션을 나타내는 별칭을 선택하는 것이 좋습니다.

에서 CMK를 생성할 때 별칭이 필요합니다.AWS Management 콘솔 이는 CreateKey 작업을 사용할 때선택 사항입니다.

10. (선택 사항) CMK에 대한 설명을 입력합니다.

보호하려는 데이터의 유형 또는 CMK와 함께 사용하려는 애플리케이션을 설명하는 내용을 입력합니다. 관리형 AWSCMKs에 사용되는 설명 형식은 사용하지 마십시오. (p. 4) 다른 키가 정의되지 않은 경우 내 ...를 보호하는 기본 마스터 키 설명 형식은 관리형 AWS용으로 예약됩니다.CMKs

키 상태가 (p. 175)이 아닌 한 지금 설명을 추가하거나 언제든지 설명을 업데이트할 수 있습니다.Pending Deletion 기존 고객 관리형 CMK의 설명을 추가, 변경 또는 삭제하려면 에서 CMK를 편집 (p. 43)하거나 AWS Management 콘솔 작업을 사용합니다.UpdateKeyDescription

11. (선택 사항) 태그 키와 태그 값(선택)을 입력합니다. 에 두 개 이상의 태그를 추가하려면 CMK태그 추가를 선택합니다.

AWS 리소스에 태그를 추가하면 AWS에서 사용 내역 및 비용을 태그별로 집계한 비용 할당 보고서를 생성합니다. CMK 태그 지정에 대한 자세한 정보는 키 태그 지정 (p. 44) 단원을 참조하십시오.

12. 다음을 선택합니다.13. 를 관리할 수 있는 IAM 사용자 및 역할을 선택합니다.CMK

Note

IAM 정책은 다른 IAM 사용자 및 역할에 CMK 관리 권한을 제공할 수 있습니다.14. (선택 사항) 선택한 IAM 사용자 및 역할이 이 CMK를 삭제하지 못하도록 페이지 하단의 Key deletion(키

삭제) 섹션에서 Allow key administrators to delete this key(키 관리자가 이 키를 삭제하도록 허용) 확인란의 선택을 취소합니다.

15. 다음을 선택합니다.16. 암호화 작업IAM에 CMK를 사용할 수 있는 사용자 및 역할을 선택합니다. (p. 11)

Note

기본적으로 AWS 계정(루트 사용자)에게는 모든 권한이 있습니다. 따라서 IAM 정책은 사용자및 역할에게 암호화 작업에 CMK를 사용할 수 있는 권한도 부여할 수 있습니다.

17. (선택 사항) 다른 AWS 계정이 암호화 작업에 이 CMK를 사용하도록 허용할 수 있습니다. 이렇게 하려면페이지 하단의 Other AWS accounts(다른 AWS 계정) 섹션에서 Add another AWS account(다른 AWS계정 추가)를 선택하고 외부 계정의 AWS 계정 식별 번호를 입력합니다. 외부 계정을 여러 개 추가하려면 이 단계를 반복합니다.

Note

외부 계정의 보안 주체가 CMK를 사용하도록 허용하려면 외부 계정의 관리자가 이러한 권한을제공하는 IAM 정책을 생성해야 합니다. 자세한 정보는 다른 계정의 사용자가 CMK를 사용하도록 허용 (p. 91) 단원을 참조하십시오.

18. 다음을 선택합니다.

25

Page 34: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드비대칭 CMKs 생성

19. 옵션에서 생성한 키 정책 문서를 검토합니다. 이를 편집하는 것도 가능합니다.20. 완료를 선택하여 를 생성합니다.CMK

비대칭 생성CMKs(AWS KMS API)CreateKey 작업을 사용하여 비대칭 (고객 마스터 키)를 생성할 수 있습니다.CMK 이 예제들은 AWSCommand Line Interface(AWS CLI)를 사용하지만, 사용자는 어떤 지원되는 프로그래밍 언어라도 사용할 수있습니다.

비대칭 CMK를 생성할 때 생성하는 키의 유형을 결정하는 CustomerMasterKeySpec 파라미터를 지정해야합니다. 또한 KeyUsage 값 ENCRYPT_DECRYPT 또는 SIGN_VERIFY를 지정해야 합니다. 가 생성된 후에는 이러한 속성을 변경할 수 없습니다.CMK

다음 예제에서는 CreateKey 작업을 사용하여 퍼블릭 키 암호화를 위해 설계된 4096비트 RSA 키의 비대칭CMK를 생성합니다.

$ aws kms create-key --customer-master-key-spec RSA_4096 --key-usage ENCRYPT_DECRYPT{ "KeyMetadata": { "KeyState": "Enabled", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "CustomerMasterKeySpec": "RSA_4096", "KeyManager": "CUSTOMER", "Description": "", "KeyUsage": "ENCRYPT_DECRYPT", "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1569973196.214, "EncryptionAlgorithms": [ "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256" ], "AWSAccountId": "111122223333", "Origin": "AWS_KMS", "Enabled": true }}

다음 예제 명령은 서명 및 확인에 사용되는 ECDSA 키 페어를 나타내는 비대칭 CMK를 생성합니다. 암호화및 암호 해독을 위한 타원 곡선 키 페어는 생성할 수 없습니다.

$ aws kms create-key --customer-master-key-spec ECC_NIST_P521 --key-usage SIGN_VERIFY{ "KeyMetadata": { "KeyState": "Enabled", "KeyId": "0987dcba-09fe-87dc-65ba-ab0987654321", "CreationDate": 1570824817.837, "Origin": "AWS_KMS", "SigningAlgorithms": [ "ECDSA_SHA_512" ], "Arn": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "AWSAccountId": "111122223333", "CustomerMasterKeySpec": "ECC_NIST_P521", "KeyManager": "CUSTOMER", "Description": "", "Enabled": true, "KeyUsage": "SIGN_VERIFY" }}

26

Page 35: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 보기

키 보기AWS Management 콘솔 또는 (AWS Key Management Service) APIAWS KMS를 사용하여 사용자가 관리하는 및 고객 마스터 키에서 관리하는 CMKs를 포함한 CMKs(CMKs)를 볼 수 있습니다.AWS

주제• 콘솔에서 CMKs 보기 (p. 27)• API를 사용하여 CMKs 보기 (p. 34)• 키 ID 및 ARN 찾기 (p. 37)• 별칭 이름 및 별칭 ARN 찾기 (p. 38)• 대칭 및 비대칭 CMKs 식별 (p. 40)

콘솔에서 CMKs 보기에서 AWS Management 콘솔 목록과 각 CMKs에 대한 세부 정보를 볼 수 있습니다.CMK

주제• 키 테이블로 이동 (p. 27)• 정렬 및 필터링CMKs (p. 27)• 세부 정보 표시CMK (p. 30)• 테이블 사용자 지정CMK (p. 33)

키 테이블로 이동각 계정 및 리전의 AWS KMS 고객 마스터 키(CMKs)가 테이블에 표시됩니다. 생성한 CMKs와 CMKs 서비스가 생성한 AWS에 대한 별도의 테이블이 있습니다.

1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/kms에서 AWS KeyManagement Service(AWS KMS) 콘솔을 엽니다.

2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 해당 계정에서 직접 생성하고 관리하는 키를 보려면 탐색 창에서 고객 관리형 키를 선택합니다. 해당 계

정에서 AWS가 생성하고 관리하는 키를 보려면 탐색 창에서 AWS 관리형 키를 선택합니다. 다양한 유형의 CMKs에 대한 자세한 내용은 고객 마스터 키 단원을 참조하십시오. (p. 3)

Tip

별칭이 누락된 AWS 관리형 CMKs (p. 4)를 보려면 고객 관리형 키 페이지를 사용합니다.콘솔에는 계정 및 리전의 사용자 지정 키 스토어도 표시됩니다. 사용자 지정 키 스토어에서 생성한 AWS KMS는 CMKsCustomer managed keys(고객 관리형 키) 페이지에 나타납니다. 사용자 지정 키 스토어에 대한 자세한 내용은 사용자 지정 키 스토어 사용 (p. 291) 단원을 참조하십시오.

정렬 및 필터링CMKs콘솔에서 CMKs를 쉽게 찾을 수 있도록 를 정렬하고 필터링할 수 있습니다.

Note

키 유형 열은 선택적으로 표시되며 (p. 33)가 비대칭 AWS를 지원하는 AWS KMS 리전에서만 사용할 수 있습니다.CMKs

27

Page 36: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드콘솔에서 CMKs 보기

정렬

고객 관리형 CMKs를 열 값 기준으로 오름차순 또는 내림차순으로 정렬할 수 있습니다. 이 기능은 현재테이블 페이지에 표시되지 않더라도 테이블의 모든 CMKs를 정렬합니다.

정렬 가능한 열은 열 이름 옆에 화살표가 표시됩니다. AWS 관리형 키 페이지에서는 별칭 또는 키 ID를기준으로 정렬할 수 있습니다. Customer managed keys(고객 관리형 키) 페이지에서는 별칭, 키 ID 또는키 유형을 기준으로 정렬할 수 있습니다.

오름차순으로 정렬하려면 화살표가 위쪽을 가리키도록 열 머리글을 선택합니다. 내림차순으로 정렬하려면 화살표가 아래쪽을 가리키도록 열 머리글을 선택합니다. 열은 한 번에 하나만 정렬할 수 있습니다.

예를 들어 기본값 별칭 대신 키 ID를 기준으로 CMKs를 오름차순으로 정렬할 수 있습니다.

CMKs 페이지에서 고객 마스터 키를 키 유형을 기준으로 오름차순으로 정렬하면 모든 비대칭 키가 모든대칭 키 앞에 표시됩니다.

Filter

열 값을 기준으로 CMKs를 필터링할 수 있습니다. 필터는 현재 테이블 페이지에 표시되지 않더라도 테이블의 모든 CMKs에 적용됩니다. 필터는 대소문자를 구분하지 않습니다.

필터링 가능한 열은 필터 상자에 나열됩니다. AWS 관리형 키 페이지에서는 별칭 및 키 ID를 기준으로필터링할 수 있습니다. Customer managed keys(고객 관리형 키) 페이지에서는 별칭, 키 ID 및 키 유형을 기준으로 필터링할 수 있습니다.

특정 열의 값을 기준으로 필터링하려면 필터를 선택하고 열 이름을 선택한 다음 실제 열 값 목록에서 선택합니다. 열을 선택한 후 열 값의 전부 또는 일부를 입력할 수도 있습니다. 선택하기 전에 결과를 미리볼 수 있습니다.

예를 들어, CMKs가 포함된 별칭 이름으로 aws/e를 표시하려면 필터 상자를 선택하고 별칭을 선택한 다음 aws/e를 입력하고 Enter 또는 Return를 눌러 필터를 추가합니다.

28

Page 37: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드콘솔에서 CMKs 보기

[CMKs고객 마스터 키] 페이지에서 비대칭 만 표시하려면 필터 상자를 클릭하고 [Key type]을 선택한다음 [Key type:]을 선택합니다. 비대칭 비대칭 옵션은 테이블에 비대칭 이 있는 경우에만 나타납니다.CMKs

필터링 가능한 모든 열에서 텍스트를 검색하려면 필터 상자에 열 값의 전부 또는 일부를 입력합니다. 선택하기 전에 결과를 미리 볼 수 있습니다.

예를 들어, 열 값 중 하나에 CMKs와 함께 test를 표시하려면 필터 상자에 test를 입력합니다. 미리 보기에 필터가 선택할 CMKs가 표시됩니다. 이 경우 test는 별칭 열에만 표시됩니다.

동시에 여러 필터를 사용할 수 있습니다. 필터를 추가할 때 논리 연산자도 선택할 수 있습니다.

29

Page 38: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드콘솔에서 CMKs 보기

세부 정보 표시CMK각 CMK의 세부 정보 페이지에는 CMK의 속성이 표시됩니다. 의 종류에 따라 약간 다릅니다.CMKs

에 대한 세부 정보를 표시하려면 CMK 관리형 키AWS 또는 고객 관리형 키 페이지에서 의 별칭 또는 키 ID를선택합니다.CMK

의 세부 정보 페이지에는 CMK의 기본 속성을 표시하는 일반 구성 섹션이 포함되어 있습니다.CMK 또한 키정책, 암호화 구성, 태그, 키 구성 요소(가져온 키 구성 요소가 있는 CMK의 경우), 키 교체(대칭 CMKs의 경우) 및 퍼블릭 키(비대칭 CMKs의 경우)와 같은 CMKs의 속성을 보고 편집할 수 있는 탭도 포함되어 있습니다.

다음 목록에서는 탭의 필드를 포함하여 세부 정보 표시의 필드에 대해 설명합니다. 이러한 필드 중 일부는 테이블 표시의 열로 사용할 수도 있습니다.

별칭

여기서 각 항목은 다음과 같습니다. 일반 구성 섹션

의 표시 이름입니다.CMK 콘솔의 별칭 필드에는 하나의 별칭만 나열됩니다. CMK의 모든 별칭을 찾으려면 ListAliases 작업을 사용합니다.

ARN

여기서 각 항목은 다음과 같습니다. 일반 구성 섹션

CMK의 Amazon 리소스 이름(ARN)입니다. 이 값은 CMK를 고유하게 식별합니다. 이를 사용하여 CMKAPI 작업에서 AWS KMS를 식별할 수 있습니다.

30

Page 39: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드콘솔에서 CMKs 보기

생성 날짜

여기서 각 항목은 다음과 같습니다. 일반 구성 섹션

이 생성된 날짜와 시간입니다.CMK 이 값은 디바이스의 로컬 시간으로 표시됩니다. 시간대는 리전에 의존하지 않습니다.

만료와 달리 생성은 키 구성 요소가 아닌 만 참조합니다.CMK클러스터 IDCloudHSM

여기서 각 항목은 다음과 같습니다. 암호화 구성 탭

에 대한 키 구성 요소가 포함된 AWS CloudHSM 클러스터의 클러스터 ID입니다.CMK 이 필드는 CMK가AWS KMS 사용자 지정 키 스토어에서 생성된 경우에만 나타납니다. (p. 291)

클러스터 ID를 클릭하면 CloudHSM 콘솔에서 클러스터 페이지가 열립니다.AWS CloudHSM사용자 지정 키 스토어 ID

여기서 각 항목은 다음과 같습니다. 암호화 구성 탭

를 포함하는 사용자 지정 키 스토어 (p. 291)의 ID입니다.CMK 이 필드는 CMK가 AWS KMS 사용자 지정 키 스토어에서 생성된 경우에만 나타납니다.

사용자 지정 키 스토어 ID를 클릭하면 AWS KMS 콘솔에서 사용자 지정 키 스토어 페이지가 열립니다.사용자 지정 키 스토어 이름

여기서 각 항목은 다음과 같습니다. 암호화 구성 탭

를 포함하는 사용자 지정 키 스토어 (p. 291)의 이름입니다.CMK 이 필드는 CMK가 AWS KMS 사용자지정 키 스토어에서 생성된 경우에만 나타납니다.

설명

여기서 각 항목은 다음과 같습니다. 일반 구성 섹션

작성 및 편집할 수 있는 CMK에 대한 간략한 설명(선택 사항)입니다. 고객 관리형 CMK에 대한 설명을 추가하거나 업데이트하려면 일반 구성 위에서 편집을 선택합니다.

암호화 알고리즘

여기서 각 항목은 다음과 같습니다. 암호화 구성 탭

에서 CMK와 함께 사용할 수 있는 암호화 알고리즘을 나열합니다.AWS KMS 이 필드는 키 유형이 비대칭이고 키 사용이 암호화 및 암호 해독인 경우에만 표시됩니다. AWS KMS가 지원하는 암호화 알고리즘에 대한 자세한 내용은 SYMMETRIC_DEFAULT 키 사양 (p. 161) 및 암호화 및 암호 해독을 위한 RSA키 사양 (p. 162)을 참조하십시오.

만료 날짜

여기서 각 항목은 다음과 같습니다. 키 구성 요소 탭

의 키 구성 요소가 만료되는 날짜와 시간입니다.CMK 이 필드는 CMKs가져온 키 구성 요소가 있는 (p. 277), 즉 오리진이 외부이고 CMK에 만료되는 키 구성 요소가 있는 경우에만 나타납니다.

키 정책

여기서 각 항목은 다음과 같습니다. 키 정책 탭

정책CMK 및 권한 부여IAM와 함께 (p. 82)에 대한 액세스를 제어합니다.??? (p. 136) 모든 CMK에는 하나의 키 정책이 있습니다. 이것이 유일한 필수 권한 부여 요소입니다. 고객 관리형 CMK의 키정책을 변경하려면 키 정책 탭에서 편집을 선택합니다. 자세한 내용은 the section called “키 정책 사용” (p. 65) 단원을 참조하십시오.

31

Page 40: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드콘솔에서 CMKs 보기

키 교체

여기서 각 항목은 다음과 같습니다. 키 교체 탭

매년 자동 키 교체 (p. 170)를 활성화 및 비활성화합니다.

고객 관리형 CMK의 키 교체 상태를 변경하려면 (p. 4)키 교체 탭의 확인란을 사용합니다. 모든 AWS 관리형 CMKs (p. 4)는 3년마다 자동으로 교체됩니다.

키 사양

여기서 각 항목은 다음과 같습니다. 암호화 구성 탭

의 키 구성 요소 유형입니다. CMK는 대칭 AWS KMS(SYMMETRIC_DEFAULT), 다양한 길이의 RSA 키에 대한 CMKs, 다양한 곡선의 타원 곡선 키를 지원합니다.CMKs 자세한 내용은 키 사양 (p. 14) 단원을참조하십시오.

키 유형

여기서 각 항목은 다음과 같습니다. 암호화 구성 탭

이 CMK대칭 또는 비대칭인지 여부를 나타냅니다.키 사용

여기서 각 항목은 다음과 같습니다. 암호화 구성 탭

암호화 및 암호 해독CMK 또는 서명 및 확인에 를 사용할 수 있는지 여부를 나타냅니다. 서명 및 확인에는 비대칭 CMKs만 사용할 수 있습니다. 자세한 내용은 키 사용 (p. 14) 단원을 참조하십시오.

Origin

여기서 각 항목은 다음과 같습니다. 암호화 구성 탭

에 대한 키 구성 요소의 소스입니다.CMK 유효한 값은 가 생성하는 키 구성 요소의 경우AWS_KMSAWS KMS, 가져온 키 구성 요소의 경우 EXTERNAL (p. 277), 사용자 지정 키 스토어의CMKsAWS_CloudHSM입니다. (p. 291)

퍼블릭 키

여기서 각 항목은 다음과 같습니다. 퍼블릭 키 탭

비대칭 CMK의 퍼블릭 키를 표시합니다. 권한이 부여된 사용자는 이 탭을 사용하여 퍼블릭 키를 복사하고 다운로드 (p. 48)할 수 있습니다.

서명 알고리즘

여기서 각 항목은 다음과 같습니다. 암호화 구성 탭

에서 CMK와 함께 사용할 수 있는 서명 알고리즘을 나열합니다.AWS KMS 이 필드는 키 유형이 비대칭이고 키 사용이 서명 및 확인인 경우에만 표시됩니다. AWS KMS가 지원하는 서명 알고리즘에 대한 자세한 내용은 서명 및 확인을 위한 RSA 키 사양 (p. 163) 및 타원 곡선 키 사양 (p. 164)을 참조하십시오.

Status

여기서 각 항목은 다음과 같습니다. 일반 구성 섹션

의 키 상태입니다.CMK 상태가 CMK활성인 경우에만 (p. 11)암호화 작업에 를 사용할 수 있습니다. 각CMK 상태 및 CMK에서 실행할 수 있는 작업에 미치는 영향에 대한 자세한 설명은 주요 상태: 귀하의CMK (p. 175) 단원을 참조하십시오.

태그

여기서 각 항목은 다음과 같습니다. 태그 탭

32

Page 41: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드콘솔에서 CMKs 보기

를 설명하는 선택적 키-값 페어입니다.CMK 에 대한 태그를 추가하거나 변경하려면 CMK태그 탭에서 편집을 선택합니다.

AWS 리소스에 태그를 추가하면 AWS에서 사용 내역 및 비용을 태그별로 집계한 비용 할당 보고서를 생성합니다. CMK 태그 지정에 대한 자세한 정보는 키 태그 지정 (p. 44) 단원을 참조하십시오.

테이블 사용자 지정CMKAWS Management 콘솔의 AWS 관리형 키 및 Customer managed keys(고객 관리형 키) 페이지에 표시되는테이블을 필요에 맞게 사용자 지정할 수 있습니다. 테이블 열, 각 페이지의 고객 마스터 키(CMKs) 수(페이지크기) 및 텍스트 줄 바꿈을 선택할 수 있습니다. 선택한 구성은 확인하면 저장되고 페이지를 열 때마다 다시적용됩니다.

테이블을 사용자 지정하려면CMK

1.관리형 키AWS 또는 Customer managed keys(고객 관리형 키) 페이지에서 설정 아이콘( )을 선택합니다.

2. 기본 설정 페이지에서 선호하는 설정을 선택한 다음 확인을 선택합니다.

특히 스크롤하기 쉬운 디바이스를 일반적으로 사용하는 경우 페이지 크기 설정을 사용하여 각 페이지에 표시되는 CMKs 수를 늘리는 것이 좋습니다.

표시되는 데이터 열은 테이블, 사용자의 직무 역할, 계정 및 리전의 CMKs 유형에 따라 다를 수 있습니다. 다음 표에서는 몇 가지 권장 구성을 제공합니다. 열에 대한 설명은 세부 정보 표시CMK (p. 30) 단원을 참조하십시오.

권장 CMK 테이블 구성

테이블에 표시되는 열을 사용자 지정하여 CMK에 대해 필요한 정보를 표시할 수 있습니다.CMKs

AWS 관리형 키

기본적으로 AWS 관리형 키 테이블에는 별칭, 키 ID, 및 상태 열이 표시됩니다. 이러한 열은 대부분의 사용 사례에 이상적입니다.

대칭 고객 관리형 키

가 생성한 키 구성 요소와 함께 대칭 CMKs만 사용하는 경우 AWS KMS별칭, 키 ID, 상태 및 생성 날짜열이 가장 유용할 수 있습니다.

비대칭 고객 관리형 키

비대칭 CMKs를 사용하는 경우 별칭, 키 ID 및 상태 열 외에도 키 유형, 키 사양 및 키 사용 열을 추가하는것이 좋습니다. 이러한 열에는 CMK가 대칭 또는 비대칭인지 여부, 키 구성 요소의 유형, CMK를 암호화또는 서명에 사용할 수 있는지 여부가 표시됩니다.

가져온 키 구성 요소

가져온 키 구성 요소CMKs가 있는 가 있는 경우 (p. 277)별칭, 키 ID 및 상태 열 외에도 오리진 및 만료날짜 열을 추가하는 것이 좋습니다. 이러한 열은 CMK의 키 구성 요소를 AWS KMS에서 가져오는지 또는 생성하는지 여부와 키 구성 요소가 만료되는 시기(있는 경우)를 보여 줍니다. 생성 날짜 필드에는 가생성된 날짜(키 구성 요소 없음)가 표시됩니다.CMK 키 구성 요소의 특성은 전혀 반영하지 않습니다.

사용자 지정 키 스토어

사용자 지정 키 스토어CMKs에 가 있는 경우 (p. 291)별칭, 키 ID 및 상태 열 외에도 사용자 지정 키 스토어 ID 열을 추가하는 것이 좋습니다. 이 열의 값은 CMK가 사용자 지정 키 스토어에 있음을 나타내며해당 키 스토어가 있는 사용자 지정 키 스토어를 표시합니다.

33

Page 42: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드API를 사용하여 CMKs 보기

API를 사용하여 CMKs 보기() APIAWS Key Management Service를 사용하여 AWS KMS를 볼 수 있습니다.CMKs 이 단원에서는기존 CMKs에 대한 세부 정보를 반환하는 여러 작업을 보여줍니다. 이 예제들은 AWS Command LineInterface(AWS CLI)를 사용하지만, 사용자는 어떤 지원되는 프로그래밍 언어라도 사용할 수 있습니다.

주제• ListKeys: 모든 CMKs의 ID 및 ARN 가져오기 (p. 34)• DescribeKey: 에 대한 세부 정보 가져오기CMK (p. 34)• GetKeyPolicy: 에 연결된 키 정책 가져오기CMK (p. 35)• ListAliases: 용 별칭 이름 및 ARNs 가져오기CMKs (p. 36)

ListKeys: 모든 CMKs의 ID 및 ARN 가져오기ListKeys 작업은 계정 및 리전에 있는 모든 의 ID 및 Amazon 리소스 이름(ARN)을 반환합니다.CMKs

예를 들어, 이 ListKeys 작업 호출은 이 가상 계정에 있는 각 CMK의 ID와 ARN을 반환합니다. 다양한 프로그래밍 언어의 예는 주요 ID 및 주요 ARN 가져오기 CMKs (p. 226) 단원을 참조하십시오.

$ aws kms list-keys { "Keys": [ { "KeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }, { "KeyArn": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "KeyId": "0987dcba-09fe-87dc-65ba-ab0987654321" }, { "KeyArn": "arn:aws:kms:us-east-2:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d", "KeyId": "1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d" }}

DescribeKey: 에 대한 세부 정보 가져오기CMKDescribeKey 작업은 지정된 에 대한 세부 정보를 반환합니다.CMK 를 식별하려면 CMK키 ID, (p. 12)키ARN, (p. 12)별칭 이름 또는 (p. 13)별칭 ARN을 사용합니다. (p. 12)

예를 들어, DescribeKey에 대한 이 호출은 대칭 CMK에 대한 정보를 반환합니다. 응답에 포함되는 필드는고객 마스터 키 사양 (p. 14), 키 상태 (p. 175) 및 키 구성 요소 오리진 (p. 13)에 따라 달라집니다. 다양한 프로그래밍 언어의 예는 고객 마스터 키 보기 (p. 224) 단원을 참조하십시오.

$ aws kms describe-key --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

{ "KeyMetadata": { "Origin": "AWS_KMS", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Description": "", "KeyManager": "CUSTOMER", "Enabled": true,

34

Page 43: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드API를 사용하여 CMKs 보기

"CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "CreationDate": 1499988169.234, "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333" "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] }}

이 예제에서는 서명 및 확인에 사용되는 비대칭 DescribeKey에 대해 CMK 작업을 호출합니다. 응답에는AWS KMS가 이 CMK에 대해 지원하는 서명 알고리즘이 포함됩니다.

$ aws kms describe-key --key-id 0987dcba-09fe-87dc-65ba-ab0987654321

{ "KeyMetadata": { "KeyId": "0987dcba-09fe-87dc-65ba-ab0987654321", "Origin": "AWS_KMS", "Arn": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "KeyState": "Enabled", "KeyUsage": "SIGN_VERIFY", "CreationDate": 1569973196.214, "Description": "", "CustomerMasterKeySpec": "ECC_NIST_P521", "AWSAccountId": "111122223333", "Enabled": true, "KeyManager": "CUSTOMER" "SigningAlgorithms": [ "ECDSA_SHA_512" ] }}

키 ID가 없는 별칭인 미리 정의된 AWS 별칭에 대해 작업을 사용할 수 있습니다. 이렇게 하면 AWS KMS에서별칭을 AWS 관리형 CMK (p. 3)와 연결하고 응답에서 해당 KeyId 및 Arn를 반환합니다.

GetKeyPolicy: 에 연결된 키 정책 가져오기CMKGetKeyPolicy 작업은 에 연결된 키 정책을 가져옵니다.CMK 를 식별하려면 해당 키 ID 또는 키 ARN을 사용합니다.CMK 또한 정책 이름을 항상 default로 지정해야 합니다. (출력을 읽기 어려운 경우 명령에 --output text 옵션을 추가합니다.)

다양한 프로그래밍 언어의 예는 키 정책 가져오기 (p. 250) 단원을 참조하십시오.

$ aws kms get-key-policy --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --policy-name default

{ "Version" : "2012-10-17", "Id" : "key-default-1", "Statement" : [ { "Sid" : "Enable IAM User Permissions", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : "kms:*",

35

Page 44: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드API를 사용하여 CMKs 보기

"Resource" : "*" } ]}

ListAliases: 용 별칭 이름 및 ARNs 가져오기CMKsListAliases 작업은 계정 및 리전의 별칭을 반환합니다. 응답의 TargetKeyId에는 별칭이 참조하는 CMK의키 ID가 표시됩니다(있는 경우).

기본적으로 ListAliases 명령은 계정 및 리전의 별칭을 모두 반환합니다. 여기에는 고객 관리형 와 연결한CMKs별칭 (p. 3)과 계정에서 AWS가 생성하고 AWS 관리형 CMKs (p. 3)와 연결한 별칭이 포함됩니다. AWS별칭의 이름은 같은 형식이므로 이러한 별칭을 알아볼 수 있습니다.

응답에는 이 예제의 TargetKeyId 별칭과 같은 aws/redshift 필드가 없는 별칭도 포함될 수 있습니다.이러한 별칭은 AWS에서 생성했지만 아직 CMK와 연결되지 않은 미리 정의된 별칭입니다.

다양한 프로그래밍 언어의 예는 별칭 나열 (p. 233) 단원을 참조하십시오.

$ aws kms list-aliases

{ "Aliases": [ { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/ImportedKey", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321", "AliasName": "alias/ExampleKey" }, { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/test-key", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "AliasName": "alias/test-key" }, { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/financeKey", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "AliasName": "alias/financeKey" }, { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/aws/dynamodb", "TargetKeyId": "1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d", "AliasName": "alias/aws/dynamodb" }, { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/aws/redshift", "AliasName": "alias/aws/redshift" }, { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/aws/s3", "TargetKeyId": "0987ab65-43cd-21ef-09ab-87654321cdef", "AliasName": "alias/aws/s3" } ]}

특정 CMK를 참조하는 별칭을 가져오려면 KeyId 파라미터를 사용합니다. 파라미터 값은 키 ID (p. 12) 또는키 ARN (p. 12)일 수 있습니다. 별칭 이름 (p. 13)이나 별칭 ARN (p. 12)을 지정할 수 없습니다.

다음 예제의 명령은 고객 관리형 CMK (p. 4)를 참조하는 별칭을 가져옵니다. 하지만 이와 같은 명령을 사용하여 AWS 관리형 CMKs (p. 4)를 참조하는 별칭을 찾을 수도 있습니다.

$ aws kms list-aliases --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

36

Page 45: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 ID 및 ARN 찾기

{ "Aliases": [ { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/test-key", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "AliasName": "alias/test-key" }, { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/financeKey", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "AliasName": "alias/financeKey" }, ]}

AWS 관리형 CMKs의 별칭만 가져오려면 프로그래밍 언어의 기능을 사용하여 응답을 필터링합니다.

$ aws kms list-aliases --query 'Aliases[?starts_with(AliasName, `alias/aws/`)]'

키 ID 및 ARN 찾기AWS KMS를 식별하려면 CMK키 ID 또는 Amazon 리소스 이름( (p. 12)키 ARN)을 사용할 수 있습니다. (p. 12) 암호화 작업 (p. 11)에서 별칭 이름 (p. 13)이나 별칭 ARN (p. 12)을 사용할 수도 있습니다.

에서 지원하는 CMK 식별자에 대한 자세한 내용은 AWS KMS 단원을 참조하십시오.키 식별자(KeyId) (p. 12)별칭 이름 및 별칭 ARN을 찾는 방법은 별칭 이름 및 별칭 ARN 찾기 (p. 38) 단원을 참조하십시오.

키 ID 및 ARN을 찾으려면(console)1. https://console.aws.amazon.com/kms에서 AWS KMS 콘솔을 엽니다.2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 해당 계정에서 직접 생성하고 관리하는 키를 보려면 탐색 창에서 고객 관리형 키를 선택합니다. 해당 계

정에서 AWS가 생성하고 관리하는 키를 보려면 탐색 창에서 AWS 관리형 키를 선택합니다.4. 의 키 ID (p. 12)를 찾으려면 CMK 별칭으로 시작하는 행을 확인합니다.CMK

키 ID 열은 기본적으로 테이블에 표시됩니다. 키 ID 열이 테이블에 표시되지 않으면 the section called“테이블 사용자 지정CMK” (p. 33) 단원에 설명된 절차에 따라 복원합니다. 세부 정보 페이지에서CMK의 키 ID를 볼 수도 있습니다.

5. 의 Amazon 리소스 이름(ARN)을 찾으려면 키 ID 또는 별칭을 선택합니다.CMK 키 ARN (p. 12)은 일반구성 섹션에 표시됩니다.

37

Page 46: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드별칭 이름 및 별칭 ARN 찾기

키 ID 및 키 ARN을 찾으려면(AWS KMS API)()의 (p. 12)키 ID 및 (p. 12)키 ARN고객 마스터 키을 찾으려면 CMK 작업을 사용합니다.ListKeys 다양한 프로그래밍 언어의 예는 키 ID 및 ARN 가져오기 (p. 226) 및 키 IDs 및 ARNs 가져오기 (p. 34) 단원을 참조하십시오.

응답에는 계정 및 리전의 모든 ListKeys에 대한 키 ID와 키 ARN이 포함됩니다.CMK

$ aws kms list-keys{ "Keys": [ { "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, { "KeyId": "0987dcba-09fe-87dc-65ba-ab0987654321", "KeyArn": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321" } ]}

별칭 이름 및 별칭 ARN 찾기암호화 작업AWS KMS에서 고객 마스터 키 (p. 3)(CMK)를 식별하려면 해당 키 ID (p. 11), 키 ARN (p. 12), 별칭 이름 (p. 12) 또는 별칭 ARN (p. 13)을 사용할 수 있습니다.??? (p. 12) 다른 AWS KMS 작업에서는 키 ID또는 키 ARN만 유효합니다.

에서 지원하는 CMK 식별자에 대한 자세한 내용은 AWS KMS 단원을 참조하십시오.키 식별자(KeyId) (p. 12)키 ID 및 키 ARN을 찾는 방법에 대한 도움말은 키 ID 및 ARN 찾기 (p. 37) 단원을 참조하십시오.

주제• 별칭 이름을 찾으려면(console) (p. 39)• 별칭 ARN을 추출하려면(console) (p. 39)• 별칭 이름 및 별칭 ARN을 찾으려면(AWS KMS API) (p. 38)

38

Page 47: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드별칭 이름 및 별칭 ARN 찾기

별칭 이름을 찾으려면(console)콘솔에는 AWS KMS와 연결된 별칭 이름 (p. 13)이 한 개 표시됩니다.CMK 콘솔에서 CMK을 생성한 경우 콘솔에는 생성 시 CMK에 할당된 별칭이 표시됩니다. 와 연결된 다른 별칭을 찾으려면 CMK API를 사용해야 합니다.AWS KMS

1. https://console.aws.amazon.com/kms에서 AWS KMS 콘솔을 엽니다.2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 해당 계정에서 직접 생성하고 관리하는 키를 보려면 탐색 창에서 고객 관리형 키를 선택합니다. 해당 계

정에서 AWS가 생성하고 관리하는 키를 보려면 탐색 창에서 AWS 관리형 키를 선택합니다.4. 의 별칭 이름을 찾으려면 각 CMK 행의 별칭 열을 참조하십시오.CMK 에 별칭이 없으면 CMK별칭 열에

대시(-)가 나타납니다.

5. 에 대한 세부 정보 페이지에서 별칭을 찾을 수도 있습니다.CMK 세부 정보 페이지를 열려면 키 ID 또는별칭을 선택합니다. 별칭은 일반 구성 섹션에 표시됩니다.

별칭 ARN을 추출하려면(console)별칭 ARN (p. 12)은 AWS KMS 콘솔에 표시되지 않습니다. ARN 필드에는 키 ARN (p. 12)이 표시됩니다. 그러나 별칭 및 ARN 필드의 값을 사용하여 이 별칭의 별칭 ARN을 추출할 수 있습니다.

별칭 ARN을 추출하려면 키 ARN으로 시작합니다.

# Key ARN formatarn:<partition>:kms:<region>:<account>:key/<key-id>

# Example key ARNarn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

를 key로 바꿉니다.alias 키 ID를 별칭 이름으로 바꿉니다.

# Alias ARN format

39

Page 48: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드대칭 및 비대칭 CMKs 식별

arn:<partition>:kms:<region>:<account>:alias/<alias-name>

# Example alias ARNarn:aws:kms:us-west-2:111122223333:alias/master-key-test

별칭 이름 및 별칭 ARN을 찾으려면(AWS KMS API)()의 (p. 13)별칭 이름 및 (p. 12)별칭 ARN고객 마스터 키을 찾으려면 CMK 작업을 사용합니다.ListAliases다양한 프로그래밍 언어의 예는 별칭 나열 (p. 233) 및 별칭 이름 및 ARNs 가져오기 (p. 36) 단원을 참조하십시오.

응답에는 기본적으로 계정 및 리전에서 사용되는 모든 별칭의 별칭 이름과 별칭 ARN이 포함됩니다. 특정CMK에 대한 별칭만 가져오려면 KeyId 파라미터를 사용합니다.

예를 들어 다음 명령은 키 ID가 CMK인 예제 1234abcd-12ab-34cd-56ef-1234567890ab의 별칭만 가져옵니다.

$ aws kms list-aliases --key-id 1234abcd-12ab-34cd-56ef-1234567890ab{ "Aliases": [ { "AliasName": "alias/test-key", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/test-key", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }, { "AliasName": "alias/project-key", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/project-key", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" } ]}

대칭 및 비대칭 CMKs 식별특정 CMK가 대칭 또는 비대칭 (p. 157)인지 여부를 확인하려면 키 유형 또는 키 사양 (p. 14)을 찾습니다.AWS KMS 콘솔 또는 AWS KMS API를 사용할 수 있습니다.

이러한 방법 중 일부는 CMK에서 지원하는 키 사용 및 암호화 또는 서명 알고리즘을 포함하여 CMK의 암호화구성의 다른 측면도 보여줍니다. 기존 CMK의 암호화 구성을 볼 수 있지만 변경할 수는 없습니다.

콘솔 디스플레이의 열 정렬, 필터링 및 선택을 포함하여 CMKs 보기에 대한 일반적인 내용은 콘솔에서 CMKs보기 (p. 27) 단원을 참조하십시오.

주제• 테이블에서 키 유형 찾기CMK (p. 40)• 세부 정보 페이지에서 키 유형 찾기 (p. 41)• AWS KMS API를 사용하여 키 사양 찾기 (p. 42)

테이블에서 키 유형 찾기CMK콘솔에서 AWS KMS키 유형 열에는 각 가 대칭 또는 비대칭인지 여부가 표시됩니다.CMK 콘솔의 고객 관리형 키 또는 CMKAWS 관리형 키 페이지에서 테이블에 키 유형 열을 추가할 수 있습니다.

테이블에서 대칭 및 비대칭 CMKs를 식별하려면 다음 절차를 따르십시오.CMK

1. https://console.aws.amazon.com/kms에서 AWS KMS 콘솔을 엽니다.

40

Page 49: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드대칭 및 비대칭 CMKs 식별

2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 해당 계정에서 직접 생성하고 관리하는 키를 보려면 탐색 창에서 고객 관리형 키를 선택합니다. 해당 계

정에서 AWS가 생성하고 관리하는 키를 보려면 탐색 창에서 AWS 관리형 키를 선택합니다.4. 키 유형 열에는 각 가 대칭 또는 비대칭인지 여부가 표시됩니다.CMK 키 유형 값을 기준으로

(p. 27)정렬하고 필터링할 수도 있습니다.

키 유형 열이 테이블에 나타나지 않으면 페이지 오른쪽 상단 모서리에 있는 기어 모양 아이콘을 선택하고 CMK키 유형을 선택한 다음 확인을 선택합니다. 키 사양 열과 키 사용 열을 추가할 수도 있습니다.

세부 정보 페이지에서 키 유형 찾기콘솔에서 각 AWS KMS의 세부 정보 페이지에는 CMK에 대한 키 유형(대칭 또는 비대칭) 및 기타 암호화 세부 정보를 표시하는 암호화 구성 탭이 포함되어 있습니다.CMK

에 대한 세부 정보 페이지에서 대칭 및 비대칭 CMKs을 식별하려면 다음 절차를 따르십시오.CMK

1. https://console.aws.amazon.com/kms에서 AWS KMS 콘솔을 엽니다.2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 해당 계정에서 직접 생성하고 관리하는 키를 보려면 탐색 창에서 고객 관리형 키를 선택합니다. 해당 계

정에서 AWS가 생성하고 관리하는 키를 보려면 탐색 창에서 AWS 관리형 키를 선택합니다.4. 의 별칭 또는 키 ID를 선택합니다.CMK5. 암호화 구성 탭을 선택합니다. 탭은 일반 구성(General configuration) 섹션 아래에 있습니다.

암호화 구성 탭에는 대칭 또는 비대칭인지 여부를 나타내는 키 유형이 표시됩니다. 또한 CMK를 암호화및 암호 해독 또는 서명 및 확인에 사용할 수 있는지 여부를 알려주는 키 사용을 포함하여 CMK에 대한기타 세부 정보가 표시됩니다. 비대칭 CMKs의 경우 CMK에서 지원하는 암호화 알고리즘 또는 서명 알고리즘을 표시합니다.

예를 들어 다음은 대칭 에 대한 암호화 구성CMK 탭의 예입니다.

다음은 서명 및 확인에 사용되는 비대칭 RSA 의 암호화 구성CMK 탭 예입니다.

41

Page 50: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드대칭 및 비대칭 CMKs 식별

AWS KMS API를 사용하여 키 사양 찾기이 대칭 또는 비대칭인지 여부를 확인하려면 CMKDescribeKey 작업을 사용합니다. 응답의CustomerMasterKeySpec 필드에는 의 (p. 14)키 사양CMK이 포함되어 있습니다. 대칭 CMK의 경우CustomerMasterKeySpec의 값은 SYMMETRIC_DEFAULT입니다. 다른 모든 값은 비대칭 CMK를 나타냅니다.

예를 들어 DescribeKey는 대칭 CMK에 대해 다음 응답을 반환합니다. 값은 CustomerMasterKeySpec입니다.SYMMETRIC_DEFAULT

{ "KeyMetadata": { "AWSAccountId": "111122223333", "KeyId": "0987dcba-09fe-87dc-65ba-ab0987654321", "Arn": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "CreationDate": 1496966810.831, "Enabled": true, "Description": "", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeyUsage": "ENCRYPT_DECRYPT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] }}

서명 및 확인에 사용되는 비대칭 RSA DescribeKey에 대한 CMK 응답은 이 예제와 유사합니다.CustomerMasterKeySpec 값에 표시된 바와 같이 키 사양은 RSA_2048 (p. 162)입니다. 는 KeyUsage이며 SIGN_VERIFY 요소는 SigningAlgorithms에 유효한 서명 알고리즘을 나열합니다.CMK

{ "KeyMetadata": { "AWSAccountId": "111122223333", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1571767572.317, "Enabled": false, "Description": "", "KeyState": "Disabled", "Origin": "AWS_KMS",

42

Page 51: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 편집

"KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "RSA_2048", "KeyUsage": "SIGN_VERIFY", "SigningAlgorithms": [ "RSASSA_PKCS1_V1_5_SHA_256", "RSASSA_PKCS1_V1_5_SHA_384", "RSASSA_PKCS1_V1_5_SHA_512", "RSASSA_PSS_SHA_256", "RSASSA_PSS_SHA_384", "RSASSA_PSS_SHA_512" ] }}

키 편집콘솔 및 API에서 CMKs고객 관리형 (p. 4)AWS KMS의 다음 속성을 변경할 수 있습니다.AWS KMS

설명

에 대한 세부 정보 페이지에서 또는 CMK (p. 30) 작업을 사용하여 키 설명을 변경할 수 있습니다.UpdateKeyDescription

콘솔에서 키 설명을 편집하려면 CMK에 대한 세부 정보 페이지의 오른쪽 상단 모서리에서 편집을 선택합니다.

키 정책

에 대한 세부 정보 페이지의 (p. 65)Key policy(키 정책) 탭에서 또는 CMK 작업을 사용하여 (p. 30)키 정책을 변경할 수 있습니다.PutKeyPolicy

자세한 내용은 키 정책 변경 (p. 79) 단원을 참조하십시오.태그

에 대한 세부 정보 페이지의 (p. 44)태그 탭에서 또는 및 CMK 작업을 사용하여 (p. 30)태그를 생성하고 삭제할 수 있습니다.TagResourceUntagResource

자세한 내용은 키 태그 지정 (p. 44) 단원을 참조하십시오.활성화 및 비활성화

콘솔의 CMKsCustomer managed keys(고객 관리형 키) 페이지에서 를 활성화 및 비활성화할 수 있습니다.AWS KMS 또는 EnableKey 및 DisableKey 작업을 사용할 수 있습니다.

자세한 내용은 키 활성화 및 비활성화 (p. 47) 단원을 참조하십시오.자동 키 교체

에 대한 세부 정보 페이지의 키 교체CMK 탭에서 또는 (p. 30) 및 EnableKeyRotation 작업을 사용하여 자동 키 교체를 활성화 및 비활성화할 수 있습니다.DisableKeyRotation

비대칭 CMKs, (p. 158)가져온 키 구성 요소CMKs가 있는 또는 (p. 277)사용자 지정 키 스토어CMKs의 에서는 자동 키 교체가 지원되지 않습니다. (p. 291)

자세한 내용은 회전 고객 마스터 키 (p. 170) 단원을 참조하십시오.키 구성 요소 업데이트

가져온 키 구성 요소가 있는 CMK의 경우 동일한 키 구성 요소를 삭제하고 다시 가져올 수 있습니다. (p. 277) 에 대한 세부 정보 페이지의 Key material(키 구성 요소) 탭을 사용하거나 API를 사용합니다.CMK (p. 30)AWS KMS

자세한 내용은 키 구성 요소를 다시 가져오는 방법 (p. 280) 단원을 참조하십시오.

43

Page 52: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 태그 지정

다음 사항도 참조하세요.

• 별칭 업데이트 (p. 57)• 고객 마스터 키 삭제 (p. 266)• 사용자 지정 키 스토어 설정 편집 (p. 302)

키 태그 지정태그는 AWS 리소스에 할당할 수 있는(또는 AWS가 할당할 수 있는) 메타데이터 레이블입니다. 각 태그는대/소문자를 구분하는 문자열인 태그 키와 태그 값으로 구성됩니다. 태그 값은 빈(null) 문자열일 수 있습니다. 한 리소스의 각 태그에는 서로 다른 태그 키가 있어야 하지만, 여러 AWS 리소스에 동일한 태그를 추가할수 있습니다. 각 리소스에는 최대 50개 사용자 생성 태그가 포함될 수 있습니다.

에서 AWS KMS를 생성할 때 CMK고객 관리형 (p. 3)에 태그를 추가할 수 있습니다.CMK (p. 21) 삭제 보류 중CMKs이 아닌 경우 기존 에서 태그를 추가하거나 편집할 수 있습니다. (p. 175) 별칭, AWS 관리형CMKs (p. 3) 또는 AWS 소유 CMKs (p. 4)에는 태그를 지정할 수 없습니다.

예를 들어, Alpha 프로젝트에 사용하는 모든 "Project"="Alpha" 및 CMKs 버킷에 Amazon S3 태그를 추가할 수 있습니다.

TagKey = "Project"TagValue = "Alpha"

자세한 내용은 키 생성 (p. 21) 및 키 편집 (p. 43) 단원을 참조하십시오. 형식 및 구문을 포함하여 태그에 대한 일반적인 정보는 https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html의 Amazon WebServices 일반 참조AWS 리소스 태그 지정을 참조하십시오.

태그는 다음을 지원합니다.

• AWS 리소스를 식별하고 정리합니다. 많은 AWS 서비스가 태그 지정을 지원합니다. 따라서 서로 다른 서비스의 리소스에 동일한 태그를 할당하여 리소스가 서로 관련이 있음을 나타낼 수 있습니다. 예를 들어 동일한 태그를 AWS KMS 고객 마스터 키( (p. 3)) 및 CMK(Amazon Elastic Block Store) 볼륨이나 AmazonEBS 보안 암호에 할당할 수 있습니다.AWS Secrets Manager 태그를 사용하여 자동화를 위한 CMK를 식별할 수도 있습니다.

• AWS 비용을 추적합니다. AWS 리소스에 태그를 추가하면 AWS에서 사용 내역 및 비용을 태그별로 집계한 비용 할당 보고서를 생성합니다. 이 기능을 사용하여 프로젝트, 애플리케이션 또는 비용 센터의 AWSKMS 비용을 추적할 수 있습니다.

비용 할당 태그 사용에 대한 자세한 내용은 AWS Billing and Cost Management 사용 설명서의 비용 할당태그 사용을 참조하십시오. 태그 키 및 태그 값 규칙에 대한 자세한 내용은 https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html의 사용자 정의 태그 제한AWS Billing andCost Management 사용 설명서을 참조하십시오.

AWS KMS는 AWS CloudTrail, TagResource (p. 206) 또는 UntagResource 작업을 사용할 때 (p. 207)로그에 항목을 기록합니다.ListResourceTags

주제• 태그 관리(CMK)console (p. 44)• 태그 관리(CMK)AWS KMS API (p. 45)

태그 관리(CMK)console콘솔에서 CMK를 생성할 때 CMK에 태그를 추가할 수 있습니다. (p. 21)AWS KMS 콘솔을 사용하여 고객관리형 CMKs에 태그를 추가, 편집 및 삭제할 수도 있습니다.

44

Page 53: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드태그 관리(CMK)AWS KMS API

기존 CMK에 대한 태그를 추가, 편집 또는 삭제하려면

1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/kms에서 AWS KeyManagement Service(AWS KMS) 콘솔을 엽니다.

2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 탐색 창에서 고객 관리형 키를 선택합니다.(AWS 관리형 CMK의 태그는 관리할 수 없습니다.)4. 의 별칭 옆에 있는 확인란을 선택합니다.CMK5. [Key actions], [Add or edit tags]를 선택합니다.6. 의 세부 정보 페이지에서 CMK태그 탭을 선택합니다.

• 첫 번째 태그를 생성하려면 태그 생성을 선택하고 태그 이름(필수)과 태그 값(선택 사항)을 입력한 다음 저장을 선택합니다.

태그 값을 비워 두면 실제 태그 값은 null 또는 빈 문자열이 됩니다.• 태그를 추가하려면 편집을 선택하고 태그 추가를 선택하고 태그 이름과 태그 값을 입력한 다음, 저

장을 선택합니다.• 태그의 이름이나 값을 변경하려면 편집을 선택하여 변경을 한 다음, 저장을 선택합니다.• 태그를 삭제하려면 편집을 선택합니다. 태그 행에서 제거를 선택한 다음 저장을 선택합니다.

7. 변경 사항을 저장하려면 변경 사항 저장을 선택합니다.

태그 관리(CMK)AWS KMS API() APIAWS Key Management Service를 사용하여 관리하는 AWS KMS에 대한 태그를 추가, 삭제 및 나열할수 있습니다.CMKs 이 예제들은 AWS Command Line Interface(AWS CLI)를 사용하지만, 사용자는 어떤 지원되는 프로그래밍 언어라도 사용할 수 있습니다.

관리형 AWS에는 태그를 지정할 수 없습니다.CMKs

주제• CreateKey: 새 CMK에 태그 추가 (p. 45)• TagResource: 에 대한 태그 추가 또는 변경CMK (p. 45)• ListResourceTags: 에 대한 태그 가져오기CMK (p. 46)• UntagResource: 에서 태그 삭제CMK (p. 46)

CreateKey: 새 CMK에 태그 추가고객 관리형 CMK를 생성할 때 태그를 추가할 수 있습니다. 태그를 지정하려면 TagsCreateKey 작업의 파라미터를 사용합니다. 파라미터의 값은 대/소문자를 구분하는 태그 키 및 태그 값 페어의 모음입니다.Tags

의 각 태그는 다른 태그 이름을 가져야 합니다.CMK 태그 값은 null이거나 빈 문자열일 수 있습니다.

예를 들어 다음 AWS CLI 명령은 CMK 태그가 있는 대칭 Project:Alpha를 생성합니다. 두 개 이상의 키-값페어를 지정할 때는 공백을 사용하여 각 페어를 구분합니다.

$ aws kms create-key --tags TagKey=Project,TagValue=Alpha

이 명령이 성공하면 새 KeyMetadata에 대한 정보가 있는 CMK 객체가 반환됩니다. 그러나KeyMetadata에는 태그가 포함되지 않습니다. 태그를 가져오려면 ListResourceTags (p. 46) 작업을 사용합니다.

TagResource: 에 대한 태그 추가 또는 변경CMKTagResource 작업은 에 하나 이상의 태그를 추가합니다.CMK

45

Page 54: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드태그 관리(CMK)AWS KMS API

태그를 추가하려면 새 태그 키와 태그 값을 지정합니다. 태그를 편집하려면 기존 태그 키와 새 태그 값을 지정합니다. 의 각 태그는 다른 태그 이름을 가져야 합니다.CMK 태그 값은 null이거나 빈 문자열일 수 있습니다.

예를 들어, 다음 명령은 예제 Purpose에 Department 및 CMK 태그를 추가합니다.

$ aws kms tag-resource \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --tags TagKey=Purpose,TagValue=Pretest TagKey=Department,TagValue=Finance

이 명령이 제대로 실행되면 메타데이터를 반환하지 않습니다. 의 태그를 보려면 CMKListResourceTags 작업을 사용합니다.

을 사용할 수도 있습니다.TagResource - 기존 태그의 태그 값을 변경합니다. 태그 값을 바꾸려면 동일한 태그 키를 다른 값으로 지정합니다.

예를 들어 이 명령은 Purpose 태그의 값을 Pretest에서 Test로 변경합니다.

$ aws kms tag-resource \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --tags TagKey=Purpose,TagValue=Test

ListResourceTags: 에 대한 태그 가져오기CMKListResourceTags 작업은 에 대한 태그를 가져옵니다.CMK key-id 파라미터가 필요합니다.

예를 들어 다음 명령은 예제 CMK에 대한 태그를 가져옵니다.

$ aws kms list-resource-tags --key-id 1234abcd-12ab-34cd-56ef-1234567890ab "Truncated": false, "Tags": [ { "TagKey": "Project", "TagValue": "Alpha" } { "TagKey": "Purpose", "TagValue": "Test" }, { "TagKey": "Department", "TagValue": "Finance" } ]}

UntagResource: 에서 태그 삭제CMKUntagResource 작업은 에서 태그를 삭제합니다.CMK key-id 및 tag-keys 파라미터가 필요합니다.

성공하면 UntagResource 작업은 출력을 반환하지 않습니다. 또한 지정된 태그 키를 CMK에서 찾을 수 없는 경우 예외가 발생하거나 응답을 반환하지 않습니다. 작업이 작동했는지 확인하려면 ListResourceTags 작업을 사용합니다.

예를 들어 이 명령은 지정된 Purpose에서 CMK 태그와 해당 값을 삭제합니다.

$ aws kms untag-resource --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --tag-keys Purpose

이 명령이 제대로 실행되면 메타데이터를 반환하지 않습니다.

46

Page 55: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 활성화 및 비활성화

키 활성화 및 비활성화비활성화하고 재설정할 수 있습니다. 고객 마스터 키 (p. 3) (CMKs)을(를) 관리합니다. 활성화 또는 비활성화할 수 없습니다. AWS 관리 CMKs.

여러분이 CMK기본적으로 활성화되어 있습니다. 비활성화할 경우 CMK을(를) 다시 활성화할 때까지 데이터를 암호화하고 해독하는 데 사용할 수 없습니다. AWS 관리 CMKs 이(가) 영구적으로 사용하도록 설정되어있습니다. 사용하는 서비스 AWS KMS (p. 341). 비활성화할 수 없습니다.

삭제할 수 있습니다. CMKs. 자세한 정보는 고객 마스터 키 삭제 (p. 266) 단원을 참조하십시오.Note

AWS KMS 고객이 관리하는 배킹 키에 대해 CMKs 을(를) 비활성화했습니다. 자세한 정보는 자동키 교체의 작동 방식 (p. 171) 단원을 참조하십시오.

주제• 활성화 및 비활성화 CMKs (console) (p. 47)• 활성화 및 비활성화 CMKs (AWS KMS API) (p. 47)

활성화 및 비활성화 CMKs (console)귀하는 AWS KMS 콘솔을 사용하여 활성화 및 비활성화 고객 관리 CMKs (p. 4).

1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/kms에서 AWS KeyManagement Service(AWS KMS) 콘솔을 엽니다.

2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 탐색 창에서 고객 관리형 키를 선택합니다.4. 의 확인란을 선택합니다. CMKs 활성화 또는 비활성화하려는 경우5. 활성화하려면 CMK, 선택 주요 조치, 활성화. 비활성화하려면 CMK, 선택 주요 조치, 비활성화.

활성화 및 비활성화 CMKs (AWS KMS API)The 키키 작동이 해제되어 AWS KMS 고객 마스터 키 (CMK) ). 이 예제들은 AWS Command LineInterface(AWS CLI)를 사용하지만, 사용자는 어떤 지원되는 프로그래밍 언어라도 사용할 수 있습니다. key-id 파라미터가 필요합니다.

이 작업은 출력을 반환하지 않습니다. 키 상태를 보려면 DescribeKey 작업을 사용합니다.

$ aws kms enable-key --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

The 장애 작동이 활성화됨 CMK. key-id 파라미터가 필요합니다.

$ aws kms disable-key --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

이 작업은 출력을 반환하지 않습니다. 키 상태를 보려면 DescribeKey 작업을 사용하고 Enabled 필드를 확인합니다.

$ aws kms describe-key --key-id 1234abcd-12ab-34cd-56ef-1234567890ab{ "KeyMetadata": { "Origin": "AWS_KMS", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Description": "",

47

Page 56: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드퍼블릭 키 다운로드

"KeyManager": "CUSTOMER", "Enabled": false, "KeyState": "Disabled", "KeyUsage": "ENCRYPT_DECRYPT", "CreationDate": 1502910355.475, "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333" "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] }}

퍼블릭 키 다운로드또는 CMK API를 사용하여 비대칭 AWS Management 콘솔 페어에서 퍼블릭 키를 보고 복사하고 다운로드할수 있습니다.AWS KMS 비대칭 kms:GetPublicKey에 대한 CMK 권한이 있어야 합니다.

각 비대칭 CMK 페어는 절대로 암호화되지 않은 상태로 AWS KMS를 벗어나지 않는 프라이빗 키와 다운로드및 공유할 수 있는 퍼블릭 키로 구성됩니다.

퍼블릭 키를 공유하여 다른 사용자가 AWS KMS 외부의 데이터를 암호화할 수 있도록 할 수 있습니다(이 데이터는 사용자의 프라이빗 키로만 암호 해독할 수 있음). 또는 사용자가 프라이빗 키로 생성한 디지털 서명을AWS KMS에서 다른 사용자가 확인하도록 허용할 수 있습니다.

내 비대칭 CMK에서 퍼블릭 키를 사용하면 모든 AWS KMS 작업의 일부인 인증, 권한 부여 및 로깅을 활용할수 있습니다.AWS KMS 또한 해독할 수 없는 데이터 암호화의 위험을 줄일 수 있습니다. 이러한 기능은 AWSKMS 외부에서는 유효하지 않습니다. 자세한 내용은 퍼블릭 키 다운로드 시 특별 고려 사항 (p. 48) 단원을참조하십시오.

주제• 퍼블릭 키 다운로드 시 특별 고려 사항 (p. 48)• 퍼블릭 키 다운로드(console) (p. 49)• 퍼블릭 키 다운로드(AWS KMS API) (p. 49)

퍼블릭 키 다운로드 시 특별 고려 사항를 보호하기 위해 CMKs는 액세스 제어, 인증된 암호화 및 모든 작업에 대한 세부 로그를 제공합니다. 또한AWS KMS를 사용하면 AWS KMS의 사용을 일시적으로 또는 영구적으로 방지할 수 있습니다.CMKs 마지막으로, AWS KMS 작업은 해독할 수 없는 데이터 암호화의 위험을 최소화하도록 설계되었습니다. AWS KMS외부에서 다운로드한 퍼블릭 키를 사용하는 경우에는 이러한 기능을 사용할 수 없습니다.

승인

내에서 에 대한 액세스를 제어하는 (p. 65) 키 정책 및 IAM (p. 82) 정책CMK은 AWS 외부에서 수행되는 작업에는 영향을 미치지 않습니다.AWS KMS 퍼블릭 키를 가져올 수 있는 사용자는 CMK를 사용하여 데이터를 암호화하거나 서명을 확인할 권한이 없더라도 AWS KMS 외부에서 해당 키를 사용할 수있습니다.

키 사용 제한 사항

키 사용 제한은 AWS KMS 외부에서는 적용되지 않습니다. 가 인 를 사용하여 CMKEncryptKeyUsage작업을 호출하면 SIGN_VERIFY 작업이 실패합니다.AWS KMS 그러나 CMK이 KeyUsage인SIGN_VERIFY의 퍼블릭 키를 사용하여 AWS KMS 외부의 데이터를 암호화하는 경우 해당 데이터를 해독할 수 없습니다.

48

Page 57: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드퍼블릭 키 다운로드(console)

알고리즘 제한 사항

AWS KMS가 지원하는 암호화 및 서명 알고리즘에 대한 제한은 AWS KMS 외부에서는 적용되지 않습니다. AWS KMS 외부에서 CMK의 퍼블릭 키를 사용하여 데이터를 암호화하고 AWS KMS에서 지원하지않는 암호화 알고리즘을 사용하는 경우 데이터를 해독할 수 없습니다.

비활성화 및 삭제CMKs

내의 암호화 작업에서 CMK 사용을 방지하기 위해 수행할 수 있는 작업은 AWS KMS 외부에서 다른 사람이 퍼블릭 키를 사용하는 것을 막지 않습니다.AWS KMS 예를 들어 CMK를 비활성화하거나, CMK 삭제를 예약하거나, CMK를 삭제하거나, CMK에서 키 구성 요소를 삭제해도 AWS KMS 외부의 퍼블릭 키에는 영향을 미치지 않습니다. 비대칭 CMK를 삭제하거나 키 구성 요소를 삭제하거나 분실하는 경우AWS KMS 외부에서 퍼블릭 키로 암호화한 데이터는 복구할 수 없습니다.

로깅

요청, 응답, 날짜, 시간 및 인증된 사용자를 포함하여 모든 AWS KMS 작업을 기록하는AWS CloudTrail로그는 AWS KMS 외부에서의 퍼블릭 키 사용을 기록하지 않습니다.

퍼블릭 키 다운로드(console)를 사용하여 AWS Management 콘솔 계정의 비대칭 CMK에서 퍼블릭 키를 보고 복사하고 다운로드할 수 있습니다.AWS 다른 CMK 계정의 비대칭 AWS에서 퍼블릭 키를 다운로드하려면 AWS KMS API를 사용합니다.

1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/kms에서 AWS KeyManagement Service(AWS KMS) 콘솔을 엽니다.

2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 탐색 창에서 고객 관리형 키를 선택합니다.4. 비대칭 CMK의 별칭 또는 키 ID를 선택합니다.5. 암호화 구성 탭을 선택합니다. Key spec(키 사양), Key usage(키 사용) 및 Encryption algorithms(암호화

알고리즘) 또는 Signing Algorithms(서명 알고리즘) 필드의 값을 기록합니다. AWS KMS 외부에서 퍼블릭 키를 사용하려면 이러한 값을 사용해야 합니다. 퍼블릭 키를 공유할 때 이 정보를 공유해야 합니다.

6. 퍼블릭 키 탭을 선택합니다.7. 퍼블릭 키를 클립보드에 복사하려면 복사를 선택합니다. 퍼블릭 키를 파일로 다운로드하려면 다운로

드를 선택합니다.

퍼블릭 키 다운로드(AWS KMS API)GetPublicKey 작업은 비대칭 의 퍼블릭 키를 반환합니다.CMK 또한 키 사용 및 암호화 알고리즘을 포함하여AWS KMS 외부에서 올바르게 퍼블릭 키를 사용하는 데 필요한 중요한 정보를 반환합니다. 퍼블릭 키를 공유할 때마다 이러한 값을 저장하고 공유하십시오.

이 단원의 예제는 AWS Command Line Interface(AWS CLI)를 사용하지만, 지원되는 모든 프로그래밍 언어를 사용할 수 있습니다.

를 지정하려면 CMK키 ID, (p. 12)키 ARN, (p. 12)별칭 이름 또는 (p. 13)별칭 ARN을 사용합니다. (p. 12) 별칭 이름을 사용할 때 alias/를 접두사를 사용합니다. 다른 AWS 계정에서 CMK를 지정하려면 키 ARN 또는 별칭 ARN을 사용해야 합니다.

이 명령을 실행하기 전에 예제 별칭 이름을 CMK에 대한 유효한 식별자로 바꿉니다. 이 명령을 실행하려면kms:GetPublicKey에 대한 CMK 권한이 있어야 합니다.

$ aws kms get-public-key --key-id alias/example_RSA_3072

{ "CustomerMasterKeySpec": "RSA_3072",

49

Page 58: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드별칭 사용

"KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "KeyUsage": "ENCRYPT_DECRYPT", "EncryptionAlgorithms": [ "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256" ], "PublicKey": "MIIBojANBgkqhkiG..."}

별칭 사용별칭은 (고객 마스터 키)에 대한 기억하기 쉬운 이름입니다. (p. 3)CMK 예를 들어 별칭을 사용하면 CMK를test-key 대신 1234abcd-12ab-34cd-56ef-1234567890ab로 참조할 수 있습니다.

별칭을 사용하여 CMK 콘솔, AWS KMSDescribeKey 작업 및 암호화 작업(예: (p. 11)암호화 및 )에서 를 식별할 수 있습니다.GenerateDataKey

별칭을 사용하면 AWS 관리형 CMKs (p. 4)도 쉽게 인식할 수 있습니다. 이러한 CMKs의 별칭은 항상 다음형식을 따릅니다. aws/<service-name> 예를 들어 AWS용 CMK 관리형 Amazon DynamoDB의 별칭은aws/dynamodb입니다. 별칭을 프로젝트 이름이나 범주로 시작하는 등 프로젝트에 대한 유사한 별칭 표준을설정할 수 있습니다.

별칭의 거듭제곱은 언제든지 별칭과 관련된 CMK를 변경할 수 있는 기능으로 인해 주로 사용됩니다. 별칭을사용하면 코드를 더 쉽게 작성하고 유지 관리할 수 있습니다. 예를 들어 별칭을 사용하여 특정 CMK를 참조하고 CMK를 변경한다고 가정합니다. 이 경우 별칭을 다른 CMK와 연결하면 됩니다. 코드를 변경할 필요가없습니다.

별칭을 사용하면 다른 AWS 리전에서 동일한 코드를 더 쉽게 재사용할 수 있습니다. 여러 리전에서 동일한이름의 별칭을 생성하고 각 별칭을 해당 리전의 CMK와 연결합니다. 코드가 각 리전에서 실행될 때 별칭은해당 리전에서 연결된 CMK를 참조합니다. 관련 예제는 애플리케이션에서 별칭 사용 (p. 56) 단원을 참조하십시오.

API는 각 계정 및 리전의 별칭에 대한 완전한 제어 권한을 제공합니다.AWS KMS API에는 별칭을 생성하는작업(CreateAlias), 별칭 이름 및 별칭 ARNs(ListAliases) 보기, 별칭과 연결된 변경 작업(CMKUpdateAlias)및 별칭 삭제 작업()이 포함됩니다.DeleteAlias 여러 프로그래밍 언어의 별칭을 관리하는 예제는 the sectioncalled “별칭으로 작업” (p. 231) 단원을 참조하십시오.

다음 리소스는 자세히 알아보는 데 도움이 될 수 있습니다.

• 별칭을 포함한 CMK 식별자에 대한 자세한 내용은 키 식별자(KeyId) (p. 12) 단원을 참조하십시오.• 와 연결된 별칭을 찾는 방법은 CMK 단원을 참조하십시오.별칭 이름 및 별칭 ARN 찾기 (p. 38)• 별칭의 리소스 할당량 및 별칭과 관련된 API 작업의 속도 할당량에 대한 자세한 내용은 할당량 (p. 396)

단원을 참조하십시오.• 여러 프로그래밍 언어로 별칭을 생성하고 관리하는 예제는 별칭으로 작업 (p. 231) 단원을 참조하십시오.

주제• 별칭 정보 (p. 51)• 별칭 생성 (p. 52)• 별칭 보기 (p. 53)• 애플리케이션에서 별칭 사용 (p. 56)• 별칭 업데이트 (p. 57)• 별칭 삭제 (p. 58)• 별칭에 대한 액세스 제어 (p. 58)• 로그에서 별칭 찾기AWS CloudTrail (p. 61)

50

Page 59: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드별칭 정보

별칭 정보에서 별칭이 작동하는 방식을 알아봅니다.AWS KMS

별칭은 독립적인 AWS 리소스입니다.

별칭은 CMK의 속성이 아닙니다. 별칭에 대해 수행하는 작업은 연결된 CMK에 영향을 미치지 않습니다.에 대한 별칭을 생성한 다음 별칭을 업데이트하여 다른 CMK와 연결되도록 할 수 있습니다.CMK 연결된CMK에 아무런 영향을 주지 않고 별칭을 삭제할 수도 있습니다.

각 별칭에는 두 가지 형식이 있습니다.• 별칭 ARN은 별칭을 고유하게 식별하는 Amazon 리소스 이름(ARN)입니다.

# Alias ARNarn:aws:kms:us-west-2:111122223333:alias/ExampleAlias

• 로 시작하는 별칭 이름입니다.alias 별칭 이름은 계정 및 리전에서만 고유합니다.

# Alias namealias/ExampleAlias

각 별칭은 한 번에 CMK 하나와 연결됩니다.

별칭과 해당 CMK는 동일한 계정 및 리전에 있어야 합니다.

동일한 계정 및 리전의 모든 CMK고객 관리형 (p. 4)AWS와 별칭을 연결할 수 있습니다. 그러나 별칭을AWS 관리형 CMK (p. 4)와 연결할 권한은 없습니다.

예를 들어 이 ListAliases 출력은 test-key 별칭이 CMK 속성으로 표시되는 정확히 하나의 대상TargetKeyId와 연결되어 있음을 보여 줍니다.

{ "AliasName": "alias/test-key", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/test-key", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab"}

여러 별칭을 동일한 CMK와 연결할 수 있습니다.

예를 들어 test-key 및 project-key 별칭을 동일한 CMK와 연결할 수 있습니다. 콘솔에는 하나의 별칭만 표시되지만 AWS KMSListAliases 응답에는 지정된 에 대한 모든 별칭 또는 모든 별칭이 표시됩니다.CMK

{ "AliasName": "alias/test-key", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/test-key", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab"},{ "AliasName": "alias/project-key", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/project-key", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab"}

별칭은 계정 및 리전 내에서 고유해야 합니다.

예를 들어, 각 계정 및 리전에 하나의 test-key 별칭만 보유할 수 있습니다. 별칭은 대소문자를 구분하지만 대소문자만 다른 별칭은 오류가 발생하기 쉽습니다. 별칭 이름은 변경할 수 없습니다. 그러나 별칭을 삭제하고 원하는 이름으로 새 별칭을 생성할 수 있습니다.

51

Page 60: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드별칭 생성

다른 리전에서 동일한 이름으로 별칭을 생성할 수 있습니다.

예를 들어 finance-key에 미국 동부(버지니아 북부) 별칭이 있고 finance-key에 유럽(프랑크푸르트) 별칭이 있을 수 있습니다. 각 별칭은 해당 리전의 CMK와 연결됩니다. 코드가 alias/finance-key와 같은 별칭 이름을 참조하는 경우 여러 리전에서 별칭을 실행할 수 있습니다. 각 리전에서는 다른CMK를 사용합니다. 자세한 내용은 애플리케이션에서 별칭 사용 (p. 56) 단원을 참조하십시오.

별칭과 연결된 CMK를 변경할 수 있습니다.

UpdateAlias 작업을 사용하여 별칭을 다른 에 연결할 수 있습니다.CMK 예를 들어 finance-key 별칭이 1234abcd-12ab-34cd-56ef-1234567890ab CMK와 연결된 경우0987dcba-09fe-87dc-65ba-ab0987654321 CMK와 연결되도록 업데이트할 수 있습니다.

하지만 현재 및 신규 CMK는 동일한 유형(대칭 또는 두 비대칭 모두)이어야 하며 동일한 키 사용 (p. 14)(ENCRYPT_DECRYPT 또는 SIGN_VERIFY)을 가져야 합니다. 이러한 제한은 별칭을 사용하는 코드의 오류를 방지합니다. 별칭을 다른 유형의 키와 연결해야 하고 위험을 완화한 경우 별칭을 삭제하고 다시 생성할 수 있습니다.

일부 CMKs에는 별칭이 없음

콘솔에서 CMK를 생성할 때 새 별칭을 부여해야 합니다.AWS KMS 그러나 CreateKey 작업을 사용하여를 생성할 때는 별칭이 필요하지 않습니다.CMK 또한 UpdateAlias 작업을 사용하여 별칭과 연결된 를 변경하고 CMKDeleteAlias 작업을 사용하여 별칭을 삭제할 수 있습니다. 따라서 일부 CMKs에는 여러 별칭이 있고 일부 에는 별칭이 없을 수 있습니다.

AWS에서 계정에 별칭 생성

AWS는 AWS 관리형 CMKs (p. 4)에 대한 계정에서 별칭을 생성합니다. 이러한 별칭에는 alias/aws/<service-name> 형식의 이름이 있습니다(예: alias/aws/s3).

일부 AWS 별칭에는 CMK가 없습니다. 이러한 미리 정의된 별칭은 일반적으로 서비스 사용을 시작할 때AWS 관리형 CMK와 연결됩니다. 사전 정의된 별칭을 포함하여 계정에서 AWS가 생성한 별칭은 AWSKMS 별칭 할당량 (p. 397)에 포함되지 않습니다.

별칭을 사용하여 CMKs 식별

별칭 이름 또는 (p. 13)별칭 ARN을 사용하여 (p. 12) CMK암호화 작업AWS KMS 및 ??? (p. 11) 작업에서 를 식별할 수 있습니다.DescribeKey 그러나 ARNs을 관리하는 API 작업(예: CMKs 또는 DisableKey)에서는 별칭 이름이나 별칭 GetKeyPolicy을 사용할 수 없습니다. 각 API 작업에 유효한 (p. 12)키 식별자AWS KMS에 대한 자세한 내용은 KeyId의 AWS Key Management Service API Reference 파라미터설명을 참조하십시오.

별칭 이름이나 별칭 ARN을 사용하여 CMKResource 정책의 요소에서 IAM를 식별할 수 없습니다 (p. 82). 이 제한은 특정 CMK에 대한 액세스를 제어하려고 한 경우 발생할 수 있는 오류를 방지하지만, 별칭이 삭제되거나 다른 CMK로 업데이트됩니다. .

별칭 생성콘솔에서 또는 AWS KMS API 작업을 사용하여 별칭을 생성할 수 있습니다.AWS KMS

별칭은 1–256자의 문자열이어야 합니다. 여기에는 영숫자, 슬래시(/), 밑줄(_) 및 대시(-)만 포함할 수 있습니다. 고객 관리형 CMK의 별칭 이름은 (p. 4)로 시작할 수 없습니다.alias/aws/ 접두사는 alias/aws/ 관리형 AWSCMKs용으로 예약됩니다. (p. 4)

새 CMK 또는 기존 CMK에 대한 별칭을 생성할 수 있습니다. 별칭을 추가하여 프로젝트 또는 애플리케이션에서 특정 CMK가 사용되도록 할 수 있습니다.

별칭 만들기(console)콘솔에서 별칭을 생성할 수 있지만, AWS KMS을 생성하는 프로세스의 일부로만 제한됩니다. 새 CMK마다새 별칭이 필요합니다. (p. 21)CMK

52

Page 61: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드별칭 보기

콘솔을 사용하여 기존 AWS KMS에 대한 새 별칭을 생성하거나 별칭을 업데이트 또는 삭제할 수 없습니다.CMK 콘솔에서 생성한 별칭을 포함하여 별칭을 업데이트하거나 삭제하려면 AWS KMS API 작업을 사용합니다.

별칭 만들기(AWS KMS API)별칭을 생성하려면 CreateAlias 작업을 사용합니다. 콘솔에서 CMKs를 생성하는 프로세스와 달리CreateKey 작업은 새 CMK에 대한 별칭을 생성하지 않습니다.

작업을 사용하여 별칭이 없는 새 CreateAlias의 별칭을 생성할 수 있습니다.CMK 작업을 사용하여 기존CreateAlias에 별칭을 추가하거나 실수로 삭제된 별칭을 다시 만들 수도 있습니다.CMK

API 작업에서 별칭 이름은 AWS KMS로 시작하고 그 뒤에 이름이 와야 합니다(예: alias/).alias/ExampleAlias 별칭은 계정 및 리전 내에서 고유해야 합니다. 이미 사용 중인 별칭 이름을 찾으려면ListAliases 작업을 사용합니다. 별칭 이름은 대/소문자를 구분합니다.

는 동일한 TargetKeyId 리전의 모든 고객 관리형 CMK (p. 4)일 수 있습니다.AWS 를 식별하려면 CMK키ID 또는 (p. 12)키 ARN을 사용합니다. (p. 12) 다른 별칭을 사용할 수 없습니다.

다음 예제에서는 example-key 별칭을 생성하여 지정된 CMK와 연결합니다. 이 예제에서는 AWSCommand Line Interface(AWS CLI)를 사용합니다. 다양한 프로그래밍 언어의 예는 별칭으로 작업 (p. 231)단원을 참조하십시오.

$ aws kms create-alias \ --alias-name alias/example-key \ --target-key-id 1234abcd-12ab-34cd-56ef-1234567890ab

CreateAlias는 출력을 반환하지 않습니다. 새 별칭을 보려면 ListAliases 작업을 사용합니다. 자세한내용은 별칭 보기(AWS KMS API) (p. 54) 단원을 참조하십시오.

별칭 보기별칭을 사용하면 CMKs 콘솔에서 AWS KMS를 쉽게 인식할 수 있습니다. 그러나 콘솔에는 각 CMK에 대해하나의 별칭만 표시됩니다. 에 대한 모든 별칭을 보려면 CMKListAliases 작업을 사용합니다. 에 대한 자세한정보를 반환하는 DescribeKey 작업은 별칭을 포함하지 않습니다.CMK

별칭 보기(console)콘솔의 고객 관리형 키 및 AWS 관리형 키 페이지에는 각 AWS KMS와 연결된 별칭이 표시됩니다.CMK 별칭을 기준으로 CMKs를 검색, 정렬 및 필터링할 수도 있습니다.

다음 AWS KMS 콘솔 이미지는 예제 계정의 고객 관리형 키 페이지에 있는 별칭을 보여줍니다. 이미지에 표시된 것처럼 일부 CMKs에는 별칭이 없습니다.

각 CMK의 세부 정보 페이지에는 CMK에 대한 별칭 중 하나가 표시됩니다. 에 대한 세부 정보 페이지를 열려면 CMK 테이블에서 별칭 또는 키 ID를 선택합니다.CMK

53

Page 62: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드별칭 보기

이 페이지에는 별칭 이름이 하나 표시되지만 별칭 ARN은 표시되지 않습니다. 별칭 ARN을 찾는 방법에 대한도움말은 별칭 이름 및 별칭 ARN 찾기 (p. 38) 단원을 참조하십시오.

이 예제 AWSCMK 관리형 키 페이지에 표시된 대로 별칭을 사용하여 AWS 관리형 를 인식할 수 있습니다. 관리형 AWS의 별칭은 항상 다음 형식을 갖습니다.CMKs aws/<service-name> 예를 들어 AWS용 CMK 관리형 Amazon DynamoDB의 별칭은 aws/dynamodb입니다.

콘솔에서는 AWS KMS를 생성할 때 별칭을 지정하도록 요구합니다.CMK 또한 CMK와 연결된 별칭 이름(있는 경우)이 표시됩니다. 그러나 콘솔을 사용하여 추가 별칭을 생성하거나 별칭과 연결된 CMK를 변경하거나별칭을 삭제할 수는 없습니다. 이러한 작업은 AWS KMS API를 통해서만 수행할 수 있습니다.

또한 AWS KMS 콘솔에는 각 CMK에 대해 하나의 별칭만 표시되며 별칭 ARN은 표시되지 않습니다. 특정CMK에 대한 모든 별칭을 보거나 계정 및 리전의 별칭에 대한 별칭 ARN을 보려면 ListAliases 작업을 사용합니다.

별칭 보기(AWS KMS API)ListAliases 작업은 계정 및 리전의 별칭 이름 및 별칭 ARN을 반환합니다. 출력에는 AWS 관리형 CMKs 및 고객 관리형 CMKs의 별칭이 포함됩니다. 관리형 AWS의 별칭은 CMKs 형식(예: aws/<service-name>)입니다.aws/dynamodb

응답에는 TargetKeyId 필드가 없는 별칭도 포함될 수 있습니다. 이러한 별칭은 AWS에서 생성했지만 아직CMK와 연결되지 않은 미리 정의된 별칭입니다. 사전 정의된 별칭을 포함하여 계정에서 AWS가 생성한 별칭은 AWS KMS 별칭 할당량 (p. 397)에 포함되지 않습니다.

$ aws kms list-aliases

54

Page 63: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드별칭 보기

{ "Aliases": [ { "AliasName": "alias/access-key", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/access-key", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321" }, { "AliasName": "alias/ECC-P521-Sign", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/ECC-P521-Sign", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }, { "AliasName": "alias/ImportedKey", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/ImportedKey", "TargetKeyId": "1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d" }, { "AliasName": "alias/finance-project", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/finance-project", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321" }, { "AliasName": "alias/aws/dynamodb", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/aws/dynamodb", "TargetKeyId": "0987ab65-43cd-21ef-09ab-87654321cdef" }, { "AliasName": "alias/aws/ebs", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/aws/ebs", "TargetKeyId": "abcd1234-09fe-ef90-09fe-ab0987654321" } ]}

특정 CMK와 연결된 모든 별칭을 가져오려면 KeyId 작업의 선택적 ListAliases 파라미터를 사용합니다.파라미터는 KeyId의 키 ID (p. 12) 또는 키 ARN (p. 12)을 사용합니다.CMK

이 예제에서는 0987dcba-09fe-87dc-65ba-ab0987654321 CMK와 연결된 모든 별칭을 가져옵니다.

$ aws kms list-aliases --key-id 0987dcba-09fe-87dc-65ba-ab0987654321{ "Aliases": [ { "AliasName": "alias/access-key", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/access-key", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321" }, { "AliasName": "alias/finance-project", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/finance-project", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321" } ]}

파라미터는 와일드카드 문자를 사용하지 않지만 프로그래밍 언어의 기능을 사용하여 응답을 필터링할 수 있습니다.KeyId

예를 들어 다음 AWS CLI 명령은 AWS 관리형 CMKs의 별칭만 가져옵니다.

$ aws kms list-aliases --query 'Aliases[?starts_with(AliasName, `alias/aws/`)]'

55

Page 64: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드애플리케이션에서 별칭 사용

다음 명령은 access-key 별칭만 가져옵니다. 별칭 이름은 대/소문자를 구분합니다.

$ aws kms list-aliases --query 'Aliases[?AliasName==`alias/access-key`]'[ { "AliasName": "alias/access-key", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/access-key", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321" }]

애플리케이션에서 별칭 사용별칭을 사용하여 애플리케이션 코드에서 CMK를 나타낼 수 있습니다. KeyId 및 DescribeKey 작업 및 모든GetPublicKey암호화 작업의 파라미터는 별칭 이름 또는 별칭 ARN을 허용합니다. (p. 11)

예를 들어 다음 GenerateDataKey 명령은 별칭 이름(alias/finance)을 사용하여 CMK를 식별합니다.별칭 이름은 KeyId 파라미터의 값입니다.

$ aws kms generate-data-key --key-id alias/finance --key-spec AES_256

별칭의 가장 강력한 용도 중 하나는 여러 AWS 리전에서 실행되는 애플리케이션에서 사용됩니다. 예를 들어RSA 비대칭 CMK (p. 158)를 사용하여 서명 및 확인하는 글로벌 애플리케이션이 있을 수 있습니다.

• (us-west-2)에서는 미국 서부(오레곤)를 사용하려고 합니다.arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

• (eu-central-1)에서 유럽(프랑크푸르트)를 사용하려고 합니다.arn:aws:kms:eu-central-1:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321

• (ap-southeast-1)에서는 아시아 태평양(싱가포르)를 사용하려고 합니다.arn:aws:kms:ap-southeast-1:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d

각 리전에서 다른 버전의 애플리케이션을 생성하거나 딕셔너리 또는 스위치 문을 사용하여 각 리전에 적합한CMK를 선택할 수 있습니다. 그러나 각 리전에서 동일한 별칭 이름으로 별칭을 만드는 것이 훨씬 쉽습니다.별칭 이름은 대/소문자를 구분한다는 점을 유의하십시오.

aws --region us-west-2 kms create-alias \ --alias-name alias/new-app \ --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

aws --region eu-central-1 kms create-alias \ --alias-name alias/new-app \ --key-id arn:aws:kms:eu-central-1:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321

aws --region ap-southeast-1 kms create-alias \ --alias-name alias/new-app \ --key-id arn:aws:kms:ap-southeast-1:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d

그런 다음 코드에 별칭을 사용합니다. 코드가 각 리전에서 실행될 때 별칭은 해당 리전에서 연결된 CMK를나타냅니다. 예를 들어 이 코드는 별칭 이름으로 Sign 작업을 호출합니다.

aws kms sign --key-id alias/new-app \ --message $message \ --message-type RAW \ --signing-algorithm RSASSA_PSS_SHA_384

56

Page 65: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드별칭 업데이트

그러나 별칭이 삭제되거나 다른 CMK와 연결되도록 업데이트될 위험이 있습니다. 이 경우 애플리케이션에서별칭 이름을 사용하여 서명을 확인하려는 시도가 실패하며 별칭을 다시 생성하거나 업데이트해야 할 수 있습니다.

이러한 위험을 줄이기 위해 애플리케이션에서 사용하는 별칭을 관리할 수 있는 권한을 보안 주체에게 부여할때는 주의해야 합니다. 자세한 내용은 별칭에 대한 액세스 제어 (p. 58) 단원을 참조하십시오.

AWS를 포함하여 여러 AWS 암호화 SDK 리전에서 데이터를 암호화하는 애플리케이션에 대한 여러 가지 다른 솔루션이 있습니다.

별칭 업데이트별칭은 독립적인 리소스이므로 별칭과 연결된 CMK를 변경할 수 있습니다. 예를 들어, test-key 별칭이 하나의 CMK와 연결된 경우 UpdateAlias 작업을 사용하여 다른 CMK와 연결할 수 있습니다. 이는 키 구성 요소를 변경하지 않고 를 수동으로 교체CMK하는 여러 방법 중 하나입니다. (p. 170) 를 업데이트하여 새 리소스에 대해 CMK 하나를 사용하던 애플리케이션이 이제 다른 CMK를 사용하도록 할 수도 있습니다.CMK

콘솔에서 별칭을 업데이트할 수 없습니다.AWS KMS 또한 UpdateAlias(또는 다른 작업)를 사용하여 별칭이름을 변경할 수 없습니다. 별칭 이름을 변경하려면 현재 별칭을 삭제한 다음 CMK에 대해 새 별칭을 생성합니다.

별칭을 업데이트할 때 현재 CMK와 새 CMK는 동일한 유형(대칭 또는 모두 비대칭)이어야 합니다. 또한 키 사용이 동일해야 합니다(ENCRYPT_DECRYPT 또는 SIGN_VERIFY). 이러한 제한은 별칭을 사용하는 코드의 암호화 오류를 방지합니다.

다음 예제는 ListAliases 작업을 사용하여 test-key 별칭이 현재 CMK1234abcd-12ab-34cd-56ef-1234567890ab와 연결되어 있음을 보여 주는 것으로 시작합니다.

$ aws kms list-aliases --key-id 1234abcd-12ab-34cd-56ef-1234567890ab{ "Aliases": [ { "AliasName": "alias/test-key", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/test-key", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" } ]}

그런 다음 UpdateAlias 작업을 사용하여 CMK 별칭과 연결된 test-key를 CMK0987dcba-09fe-87dc-65ba-ab0987654321로 변경합니다. 현재 연결된 CMK만 지정할 필요는 없으며새로운("대상") CMK만 지정할 필요가 없습니다. 별칭 이름은 대/소문자를 구분합니다.

$ aws kms update-alias --alias-name 'alias/test-key' --target-key-id 0987dcba-09fe-87dc-65ba-ab0987654321

별칭이 이제 대상 CMK와 연결되었는지 확인하려면 ListAliases 작업을 다시 사용합니다. 이 AWS CLI 명령은 --query 파라미터를 사용하여 test-key 별칭만 가져옵니다.

$ aws kms list-aliases --query 'Aliases[?AliasName==`alias/test-key`]'[ { "AliasName": "alias/test-key", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/test-key", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321" }]

57

Page 66: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드별칭 삭제

별칭 삭제별칭을 삭제하려면 DeleteAlias 작업을 사용합니다. 콘솔에서 별칭을 삭제할 수 있는 방법은 없습니다.AWSKMS 별칭을 삭제하기 전에 별칭이 사용 중이 아닌지 확인합니다. 별칭을 삭제해도 연결된 CMK에는 영향을주지 않지만 별칭을 사용하는 애플리케이션에 문제가 발생할 수 있습니다.

실수로 별칭을 삭제하는 경우 이름이 동일한 새 별칭을 생성하여 동일하거나 다른 CMK에 연결할 수 있습니다.

예를 들어 다음 명령은 test-key 별칭을 삭제합니다. 이 명령은 출력을 반환하지 않습니다. 별칭 이름은 대/소문자를 구분합니다.

$ aws kms delete-alias --alias-name alias/test-key

별칭이 삭제되었는지 확인하려면 ListAliases 작업을 사용합니다. 다음 명령은 --query에서 AWS CLI 파라미터를 사용하여 test-key 별칭만 가져옵니다. 응답의 빈 대괄호는 ListAliases 응답에 test-key 별칭이 포함되지 않았음을 나타냅니다. 괄호를 제거하려면 --output text 파라미터와 값을 사용합니다.

$ aws kms list-aliases --query 'Aliases[?AliasName==`alias/test-key`]'[]

별칭에 대한 액세스 제어별칭을 생성하거나 변경할 때 별칭 및 연결된 CMK에 영향을 줍니다. 따라서 별칭을 관리하는 보안 주체에게는 별칭 및 영향을 받는 모든 CMKs에 대해 별칭 작업을 호출할 수 있는 권한이 있어야 합니다. 키 정책, (p. 65) 정책IAM 및 (p. 82)권한 부여를 사용하여 이러한 권한을 제공할 수 있습니다. (p. 136)

모든 AWS KMS 작업에 대한 액세스 제어에 대한 자세한 내용은 AWS KMS API 권한 참조 (p. 96) 단원을참조하십시오.

별칭을 생성하고 관리할 수 있는 권한은 다음과 같이 작동합니다.

kms:CreateAlias

별칭을 만들려면 보안 주체는 별칭과 연결된 CMK에 대해 다음 권한이 필요합니다.• 별칭의 경우 kms:CreateAlias입니다. 별칭을 만들 수 있는 보안 주체에 연결된 IAM 정책에서 이 권

한을 제공합니다.

다음 예제 정책 문은 Resource 요소에 별칭을 지정합니다. 하지만 리소스 값 "*"을 지정하여 보안주체가 계정 및 리전에서 별칭을 생성하도록 허용할 수 있습니다. 별칭 생성 권한은 계정 및 리전의 모든 리소스에 대한 kms:Create* 권한에도 포함될 수 있습니다.

{ "Sid": "IAMPolicyForAnAlias", "Effect": "Allow", "Action": [ "kms:CreateAlias", "kms:UpdateAlias" "kms:DeleteAlias" ], "Resource": "arn:aws:kms:us-west-2:111122223333:alias/test-key"}

• kms:CreateAlias의 경우 CMK. 이 권한은 키 정책 또는 키 정책에서 위임된 IAM 정책에서 제공되어야 합니다.

58

Page 67: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드별칭에 대한 액세스 제어

{ "Sid": "Key policy for 1234abcd-12ab-34cd-56ef-1234567890ab", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/KMSAdminUser"}, "Action": [ "kms:CreateAlias", "kms:DescribeKey" ], "Resource": "*"}

kms:ListAliases

계정 및 리전의 별칭을 나열하려면 보안 주체가 kms:ListAliases 정책에 IAM 권한이 있어야 합니다.이 정책은 특정 CMK 또는 별칭 리소스와 관련이 없습니다.

예를 들어 다음 IAM 정책 문은 보안 주체에게 계정 및 리전의 모든 CMKs 및 별칭을 나열할 수 있는 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:ListKeys", "kms:ListAliases" ], "Resource": "*" }}

kms:UpdateAlias

별칭과 연결된 CMK를 변경하려면 보안 주체는 세 가지 권한 요소(별칭용 요소, 현재 CMK용 요소, 새CMK용 요소)가 필요합니다.

예를 들어 test-key 별칭을 키 ID CMK의 1234abcd-12ab-34cd-56ef-1234567890ab에서 키 ID CMK의 0987dcba-09fe-87dc-65ba-ab0987654321로 변경한다고 가정합니다. 이 경우 이 단원의 예제와 비슷한 정책 설명을 포함하십시오.• 별칭의 경우 kms:UpdateAlias입니다. 보안 주체에 연결된 IAM 정책에서 이 권한을 제공합니다. 다

음 IAM 정책은 특정 별칭을 지정합니다. 그러나 여러 별칭을 나열하거나 ARNs의 Resource 값을 사용하여 계정 및 리전의 모든 별칭에 권한을 적용합니다."*"

{ "Sid": "IAMPolicyForAnAlias", "Effect": "Allow", "Action": [ "kms:UpdateAlias", "kms:ListAliases", "kms:ListKeys", ], "Resource": "arn:aws:kms:us-west-2:111122223333:alias/test-key"}

• 별칭과 현재 연결된 kms:UpdateAlias의 경우 CMK입니다. 이 권한은 키 정책 또는 키 정책에서 위임된 IAM 정책에서 제공되어야 합니다.

{ "Sid": "Key policy for 1234abcd-12ab-34cd-56ef-1234567890ab",

59

Page 68: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드별칭에 대한 액세스 제어

"Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/KMSAdminUser"}, "Action": [ "kms:UpdateAlias", "kms:DescribeKey" ], "Resource": "*"}

• 작업이 별칭과 연결하는 kms:UpdateAlias의 경우 CMK입니다. 이 권한은 키 정책 또는 키 정책에서 위임된 IAM 정책에서 제공되어야 합니다.

{ "Sid": "Key policy for 0987dcba-09fe-87dc-65ba-ab0987654321", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/KMSAdminUser"}, "Action": [ "kms:UpdateAlias", "kms:DescribeKey" ], "Resource": "*"}

kms:DeleteAlias

별칭을 삭제하려면 보안 주체는 별칭 및 연결된 CMK에 대한 권한이 필요합니다.

항상 그러하듯이 보안 주체에게 리소스를 삭제할 수 있는 권한을 부여할 때는 주의해야 합니다. 그러나별칭을 삭제해도 연결된 CMK에는 영향을 미치지 않습니다. 별칭을 사용하는 애플리케이션에서는 실패를 초래할 수 있지만, 실수로 별칭을 삭제하면 별칭을 다시 생성할 수 있습니다.• 별칭의 경우 kms:DeleteAlias입니다. 별칭을 삭제하도록 허용된 보안 주체에 연결된 IAM 정책에

이 권한을 제공합니다.

다음 예제 정책 문은 Resource 요소에서 별칭을 지정합니다. 하지만 리소스 값 "*"을 지정하여 보안주체가 계정 및 리전에서 별칭을 생성하도록 허용할 수 있습니다.

{ "Sid": "IAMPolicyForAnAlias", "Effect": "Allow", "Action": [ "kms:CreateAlias", "kms:UpdateAlias" "kms:DeleteAlias" ], "Resource": "arn:aws:kms:us-west-2:111122223333:alias/test-key"}

• kms:DeleteAlias - 연결된 CMK용입니다. 이 권한은 키 정책 또는 키 정책에서 위임된 IAM 정책에서 제공되어야 합니다.

{ "Sid": "Key policy for 1234abcd-12ab-34cd-56ef-1234567890ab", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/KMSAdminUser"}, "Action": [ "kms:CreateAlias", "kms:UpdateAlias", "kms:DeleteAlias", "kms:DescribeKey" ], "Resource": "*"}

60

Page 69: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그에서 별칭 찾기AWS CloudTrail

로그에서 별칭 찾기AWS CloudTrail별칭을 사용하여 고객 마스터 키 API 작업에서 CMK(AWS KMS)를 나타내는 경우 해당 이벤트의 CMK 로그항목에 AWS CloudTrail의 별칭과 키 ARN이 기록됩니다. 별칭이 requestParameters 필드에 나타납니다.키 ARN이 resources 필드에 나타납니다. 이는 AWS 서비스가 계정에서 AWS 관리형 CMK를 사용하는 경우에도 마찬가지입니다.

예를 들어 다음 GenerateDataKey 요청은 project-key 별칭을 사용하여 CMK를 나타냅니다.

$ aws kms generate-data-key --key-id alias/project-key --key-spec AES_256

이 요청이 CloudTrail 로그에 기록되면 로그 항목에는 사용된 실제 CMK의 별칭과 키 ARN이 모두 포함됩니다.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "ABCDE", "arn": "arn:aws:iam::111122223333:role/ProjectDev", "accountId": "111122223333", "accessKeyId": "FFHIJ", "userName": "example-dev" }, "eventTime": "2020-06-29T23:36:41Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-west-2", "sourceIPAddress": "205.205.123.000", "userAgent": "aws-cli/1.18.89 Python/3.6.10 Linux/4.9.217-0.1.ac.205.84.332.metal1.x86_64 botocore/1.17.12", "requestParameters": { "keyId": "alias/project-key", "keySpec": "AES_256" }, "responseElements": null, "requestID": "d93f57f5-d4c5-4bab-8139-5a1f7824a363", "eventID": "d63001e2-dbc6-4aae-90cb-e5370aca7125", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

로그의 AWS KMS 작업 로깅에 대한 자세한 내용은 CloudTrail 단원을 참조하십시오.AWS CloudTrail을 사용하여 AWS KMS API 호출 로깅 (p. 181)

61

Page 70: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드Authentication

AWS KMS에 대한 인증 및 액세스 제어

AWS KMS에 액세스하려면 AWS가 요청을 인증하는 데 사용할 수 있는 자격 증명이 필요합니다. 자격 증명은 액세스 권한이 있어야 합니다. AWS 같은 리소스를 AWS KMS 고객 마스터 키 (CMKs) ). 다음 단원에서는 리소스에 액세스할 수 있는지 대상을 제어하여 리소스를 보호할 수 있도록 AWS Identity and AccessManagement(IAM) 및 AWS KMS 사용 방법에 대한 세부 정보를 제공합니다.

Topics

• Authentication (p. 62)• 액세스 제어 (p. 63)

Authentication다음과 같은 ID 유형으로 AWS에 액세스할 수 있습니다.

• AWS 계정 루트 사용자 – AWS에 가입할 때 AWS 계정의 이메일 주소 및 암호를 입력합니다. 이 두 가지가루트 자격 증명이며 모든 AWS 리소스에 대한 전체 액세스 권한을 제공합니다.

Important

보안상 루트 자격 증명만 사용하여 관리자 사용자를 생성하는 것이 좋습니다. 관리자 사용자는AWS 계정에 대한 전체 권한을 가진 IAM 사용자입니다. 그런 다음 이 관리자를 사용하여 제한된권한이 있는 다른 IAM 사용자 및 역할을 만들 수 있습니다. 자세한 내용은 개인 생성 IAM 사용자(IAM 모범 사례) and 관리자 사용자 및 그룹 생성 in the IAM 사용 설명서.

• IAM 사용자 – An IAM 사용자 귀하의 AWS 특정 권한이 있는 계정(예: KMS 사용) CMK) ). IAM 사용자 이름과 암호를 사용하여 AWS Management 콘솔, AWS 토론 포럼 또는 AWS Support Center 같은 보안 AWS웹 페이지에 로그인할 수 있습니다.

사용자 이름과 암호 이외에 각 사용자별 액세스 키를 생성하여 사용자가 AWS SDK 중 하나 또는 명령줄도구를 통해 프로그래밍 방식으로 AWS 서비스에 액세스하도록 할 수도 있습니다. SDK와 명령줄 도구는액세스 키를 사용하여 암호화 방식으로 API 요청에 서명합니다. AWS 도구를 사용하지 않는 경우 API 요청에 직접 서명해야 합니다. AWS KMS는 API 요청을 인증하기 위한 AWS 프로토콜인 서명 버전 4를 지원합니다. API 요청 인증에 대한 자세한 내용은 다음을 참조하십시오. 서명 버전 4 서명 프로세스 in the AWSGeneral Reference.

• IAM 역할 – IAM 역할은 계정에 만들 수 있는 특정 권한이 있는 또 다른 IAM 자격 증명입니다. IAM 사용자와 유사하지만, 특정 개인과 연결되지 않습니다. IAM 역할을 사용하면 AWS 서비스 및 리소스에 프로그래밍 방식으로 액세스하기 위한 임시 액세스 키를 얻을 수 있습니다. IAM 역할은 다음과 같은 상황에서 유용합니다.• 연합된 사용자 액세스 – IAM 사용자를 만드는 대신 AWS Directory Service, 엔터프라이즈 사용자 디렉

터리 또는 웹 자격 증명 공급자의 기존 사용자 자격 증명을 사용할 수 있습니다. 이러한 사용자를 연합된사용자라고 합니다. 연합된 사용자는 자격 증명 공급자를 통해 IAM 역할을 사용합니다. 연합 사용자에대한 자세한 내용은 다음을 참조하십시오. 연합 사용자 및 역할 in the IAM 사용 설명서.

• 교차 계정 액세스 – 계정의 역할을 사용하여 다른 AWS 계정에 계정 리소스에 액세스할 권한을 허용할수 있습니다. 예를 들어 튜토리얼: 액세스 권한 위임 AWS 계좌 사용 IAM 역할 in the IAM 사용 설명서.

• AWS 서비스 액세스 – 계정의 IAM 역할을 사용하여 AWS 서비스에 계정의 리소스에 액세스할 권한을허용할 수 있습니다. 예를 들어, Amazon Redshift에서 사용자 대신 S3 버킷에 액세스하도록 허용하는

62

Page 71: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드액세스 제어

역할을 만든 다음 S3 버킷에 저장된 데이터를 Amazon Redshift 클러스터로 로드할 수 있습니다. 자세한내용은 AWS의 Creating a Role to Delegate Permissions to an IAM 사용 설명서 Service 단원을 참조하십시오.

• EC2 인스턴스에서 실행되는 애플리케이션 – EC2 인스턴스에서 실행되고 AWS API 요청을 생성하는 애플리케이션에서 사용할 수 있도록 인스턴스 내에 액세스 키를 저장하는 대신에, IAM 역할을 사용하여이러한 애플리케이션에 임시 액세스 키를 제공할 수 있습니다. EC2 인스턴스에 IAM 역할을 할당하려면인스턴스 프로파일을 생성한 후 인스턴스를 시작할 때 연결할 수 있습니다. 인스턴스 프로파일에는 역할이 포함되어 있으며 EC2 인스턴스에서 실행되는 애플리케이션이 임시 액세스 키를 얻을 수 있습니다.자세한 내용은 애플리케이션에 대한 역할 사용 Amazon EC2 in the IAM 사용 설명서.

액세스 제어요청을 인증하는 데 유효한 자격 증명이 있더라도 리소스를 생성, 관리하거나 사용하기 위해서는 API 요청을제출할 권한도 필요합니다. 예를 들어 KMS를 생성할 권한이 있어야 합니다. CMK을(를) 관리하려면 CMK,그리고 CMK for 암호화 작업 (p. 11).

다음 페이지에서는 AWS KMS에 대한 권한을 관리하는 방법에 대해 설명합니다. 먼저 개요를 읽어 보면 도움이 됩니다.

• 액세스 관리 개요 (p. 63)• 키 정책 사용 (p. 65)• IAM 정책 사용 (p. 82)• AWS KMS API 권한 참조 (p. 96)• 정책 조건 사용 (p. 107)• 권한 부여 사용 (p. 136)• 서비스 연결 역할 사용 (p. 139)• 액세스 결정 (p. 140)

Amazon Virtual Private Cloud(Amazon VPC) 엔드포인트를 통해 AWS KMS에 액세스하는 경우, 엔드포인트를 사용할 때 VPC 엔드포인트 정책을 사용하여 AWS KMS 리소스에 대한 액세스를 제한할 수도 있습니다.예를 들어, VPC 엔드포인트를 사용할 때 AWS 계정의 보안 주체만 CMKs에 액세스하도록 허용할 수 있습니다. 자세한 내용은 VPC 엔드포인트에 대한 액세스 제어 (p. 329) 단원을 참조하십시오.

AWS KMS 리소스에 대한 액세스 관리 개요모든 AWS 리소스는 AWS 계정의 소유이고, 리소스 생성 또는 액세스 권한은 해당 계정의 권한 정책에 따라정의됩니다. 계정 관리자는 IAM 자격 증명(즉, 사용자, 그룹, 역할)에 권한 정책을 연결할 수 있고, 일부 서비스(예: AWS KMS)에서는 다른 종류의 리소스에 대한 권한 정책 연결도 지원합니다.

Note

계정 관리자(또는 관리자 사용자)는 관리자 권한이 있는 사용자입니다. 자세한 내용은 관리자 사용자 및 그룹 생성 in the IAM 사용 설명서.

권한을 관리할 때 권한을 받는 사용자, 받는 권한의 대상이 되는 리소스, 허용되는 특정 작업을 결정합니다.

주제• AWS KMS 리소스 및 작업 (p. 64)• 액세스 관리 AWS KMS CMKs (p. 64)

63

Page 72: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 리소스 및 작업

• 정책에서 권한 지정 (p. 65)• 정책에서 조건 지정 (p. 65)

AWS KMS 리소스 및 작업에서 AWS KMS기본 리소스는 고객 마스터 키 (p. 3) (CMK) ). AWS KMS 또한 별칭 (p. 231), CMK님,CMK. 일부 AWS KMS 별칭을 사용하여 CMK.

각 인스턴스 CMK 별칭은 Amazon 자원 이름 표준 형식. AWS KMS 리소스에서 AWS 서비스 이름은 kms입니다.

• 고객 마스터 키 (CMK)

ARN 형식

arn:AWS partition name:AWS service name:AWS Region:AWS account ID:key/CMK keyID

ARN 예:

arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

• 별칭

ARN 형식

arn:AWS partition name:AWS service name:AWS region:AWS account ID:alias/aliasname

ARN 예:

arn:aws:kms:us-west-2:111122223333:alias/example-alias

AWS KMS는 AWS KMS 리소스를 처리하기 위한 API 작업을 제공합니다. 식별에 대한 자세한 내용은 CMKsin the AWS Management 콘솔 and AWS KMS API 작업, 참조 키 식별자(KeyId) (p. 12). AWS KMS 작업의목록은 AWS Key Management Service API Reference를 참조하십시오.

액세스 관리 AWS KMS CMKs사용자의 액세스 권한을 관리하기 위한 AWS KMS CMKs 이(가) 정책. 정책은 누가 무엇에 액세스 할 수 있는지 설명한 문서입니다. IAM 자격 증명에 연결된 정책을 자격 증명 기반 정책(또는 IAM 정책)이라 하고 다른종류의 리소스에 연결된 정책을 리소스 기반 정책이라고 합니다. 에서 AWS KMS리소스 기반 정책을 고객 마스터 키 (CMKs) ). 이를 키 정책이라고 합니다. 모든 KMS CMKs 주요 정책을 가지고 있습니다.

KMS에 대한 액세스를 제어할 수 있습니다. CMKs 이러한 방식으로:

• 주요 정책 사용 – 액세스를 제어하려면 주요 정책을 사용해야 합니다. CMK. 주요 정책을 단독으로 사용하여 액세스를 제어할 수 있으며, 이는 CMK 은(는) 단일 문서(주요 정책)에 정의되어 있습니다.

• 사용 IAM 정책과 함께 정책을 – 사용할 수 있습니다. IAM 주요 정책과 결합하여 CMK. 이와 같이 액세스를제어하면 에서 자격 증명에 대한 모든 권한을 관리할 수 있습니다.

• 주요 정책과 함께 보조금 사용 – 주요 정책과 함께 보조금을 사용하여 CMK. 이러한 방식으로 액세스를 제어하면 CMK 사용자에게 권한을 위임할 수 있도록 합니다.

대부분의 AWS 서비스에서 IAM 정책이 서비스의 리소스에 대한 액세스를 제어하는 유일한 방법입니다. 일부 서비스는 IAM 정책을 보완하는 다른 액세스 제어 메커니즘 또는 리소스 기반 정책을 제공하지만, 일반적

64

Page 73: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드정책에서 권한 지정

으로 선택 사항이며 이러한 서비스의 리소스에 대한 액세스는 IAM 정책으로만 제어할 수 있습니다. 하지만AWS KMS에는 적용되지 않습니다. KMS 액세스 허용 CMK. IAM 정책 또는 보조금. IAM 자기 자신에 대한액세스 권한은 CMK을 사용하여 CMK의 주요 정책.

키 정책 사용에 대한 자세한 내용은 키 정책 사용 (p. 65)를 참조하십시오.

IAM 정책 사용에 대한 자세한 내용은 IAM 정책 사용 (p. 82) 단원을 참조하십시오.

권한 부여 사용에 대한 자세한 내용은 권한 부여 사용 (p. 136)를 참조하십시오.

정책에서 권한 지정AWS KMS는 API 작업 집합을 제공합니다. API 작업에 대한 액세스를 제어하기 위해 AWS KMS는 정책에서지정할 수 있는 작업 집합을 제공합니다. 자세한 정보는 AWS KMS API 권한 참조 (p. 96) 단원을 참조하십시오.

정책은 권한 집합을 설명한 문서입니다. 다음은 정책의 기본 요소입니다:

• 리소스 – IAM 정책에서 Amazon 리소스 이름(ARN)을 사용하여 정책을 적용할 리소스를 지정합니다. 자세한 정보는 AWS KMS 리소스 및 작업 (p. 64) 단원을 참조하십시오. 주요 정책에서 "*" 효과적으로 "이문제를 CMK." 주요 정책은 CMK 에 첨부되어 있습니다.

• 작업 – 작업을 이용해 허용하거나 거부할 API 작업을 지정합니다. 예를 들어 kms:Encrypt 작업은 AWSKMS Encrypt 작업에 해당합니다.

• 효과 – 효과를 이용해 권한을 허용하거나 거절하기로 지정합니다. 명시적으로 리소스에 대한 액세스를 허용하지 않는 경우, 액세스는 묵시적으로 거부됩니다. 다른 정책에서는 액세스를 허용하더라도 리소스에 대한 액세스를 명시적으로 거부하여 사용자가 해당 리소스에 액세스하지 못하게 할 수도 있습니다.

• 보안 주체 – IAM 정책에서는 AWS 보안 주체를 지정하지 않습니다. 대신, 정책이 연결되는 자격 증명(IAM사용자, 그룹 또는 역할)이 묵시적인 보안 주체입니다. 키 정책에서는 권한이 적용되는 보안 주체(자격 증명)를 지정해야 합니다. AWS 계정(루트), IAM 사용자, IAM 역할, 일부 AWS 서비스를 키 정책에서 보안 주체로 지정할 수 있습니다. 키 정책에서 IAM 그룹은 유효한 보안 주체가 아닙니다.

자세한 내용은 키 정책 사용 (p. 65) 및 IAM 정책 사용 (p. 82) 단원을 참조하십시오.

정책에서 조건 지정조건이라는 다른 정책 요소를 이용해 정책이 적용될 환경을 지정할 수 있습니다. 예를 들어, 특정 날짜 이후에만 정책 설명이 적용되기를 원할 수 있습니다. 또는 API 요청에 특정 값이 있는지에 따라 정책 설명이 액세스를 제어하기를 원할 수 있습니다.

조건을 지정하려면 미리 정의된 조건 키를 사용합니다. 일부 조건 키는 AWS에 전체적으로 적용되고 일부는AWS KMS에만 적용됩니다. 자세한 정보는 정책 조건 사용 (p. 107) 단원을 참조하십시오.

AWS KMS에서 키 정책 사용주요 정책은 액세스를 제어하는 주요 방법입니다. 고객 마스터 키 (CMKs) AWS KMS. 액세스를 제어하는 유일한 방법은 아니지만, 이 방법을 사용하지 않고 액세스를 제어할 수 없습니다. 자세한 정보는 액세스 관리AWS KMS CMKs (p. 64) 단원을 참조하십시오.

Topics

• 키 정책 개요 (p. 66)• 기본 키 정책 (p. 67)

65

Page 74: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 정책 개요

• 예제 키 정책 (p. 73)

JSON 정책 문서 작성 및 서식 지정에 대한 도움말은 IAM 사용 설명서의 IAM JSON 정책 참조를 참조하세요.

키 정책 개요키 정책은 JSON(JavaScript Object Notation)을 이용해 권한을 지정하는 문서입니다. 이러한 JSON 문서로직접 작업하거나 AWS Management 콘솔을 통해 기본 보기라는 그래픽 인터페이스를 사용해 작업할 수 있습니다.

콘솔의 주요 정책에 대한 기본 보기에 대한 자세한 내용은 다음을 참조하십시오. 기본 키 정책 (p. 67) and키 정책 변경 (p. 79). JSON 정책 문서 작성 및 서식 지정에 대한 도움말은 IAM 사용 설명서의 IAM JSON정책 참조를 참조하세요.

키 정책 문서는 32KB(32,768바이트)를 초과할 수 없습니다. 주요 정책 문서는 다른 정책 문서와 동일한JSON 구문을 사용합니다. AWS 다음과 같은 기본 구조를 가지고 있습니다.

{ "Version": "2012-10-17", "Statement": [{ "Sid": "statement identifier", "Effect": "effect", "Principal": "principal", "Action": "action", "Resource": "resource", "Condition": {"condition operator": {"condition context key": "context key value"}} }]}

키 정책 문서에는 Version 요소가 있어야 합니다. 버전을 2012-10-17(최신 버전)로 설정하는 것이 좋습니다. 또한 키 정책 문서에는 하나 이상의 문이 있어야 하고 각 문은 최대 6개 요소로 구성됩니다.

• Sid – (선택 사항) Sid는 문 식별자로서, 문 식별에 사용할 수 있는 임의 문자열입니다.• Effect – (필수) 정책 설명에서 권한을 허용할지 거부할지 지정합니다. Effect는 Allow 또는 Deny여야 합니

다. 명시적으로 액세스할 수 없는 경우 CMK, 액세스가 암묵적으로 거부됩니다. 또한 CMK. 다른 정책에서액세스 권한을 허용하더라도 사용자가 해당 CMK에 액세스할 수 없도록 하려고 할 때 이러한 작업을 수행할 수 있습니다.

• Principal – (필수) 보안 주체는 정책 설명에 지정된 권한을 갖는 자격 증명입니다. AWS 계정(루트), IAM 사용자, IAM 역할, 일부 AWS 서비스를 키 정책에서 보안 주체로 지정할 수 있습니다. IAM 그룹은 유효한 보안 주체가 아닙니다.

Note

조건을 사용하여 키 정책을 제한하는 경우를 제외하고, 권한을 허용하는 키 정책 문에 보안 주체를 별표(*)로 설정하지 마시기 바랍니다. 별표는 다른 정책문에서 명백하게 거부한 경우를 제외하고 모든 AWS 계정 내 모든 자격 증명에게 CMK를 사용할 수 있도록 허가합니다. 다른 AWS 계정의 사용자는 본인의 계정에서 CMK를 사용할 수 있는 해당 IAM 허가만 있으면 됩니다.

• Action – (필수) 허용하거나 거부할 API 작업을 지정합니다. 예를 들어 kms:Encrypt 작업은 AWS KMSEncrypt 작업에 해당합니다. 정책 설명에 두 개 이상의 Action을 나열할 수 있습니다. 자세한 정보는 AWSKMS API 권한 참조 (p. 96) 단원을 참조하십시오.

• 자원 – (필수) 핵심 정책에서 리소스 요소의 값은 다음과 같습니다. "*"이것은 "이것은 CMK." 별표("*")CMK 핵심 정책을 첨부합니다.

• Condition – (선택 사항) 키 정책이 적용되기 위해 충족해야 하는 요구 사항을 지정합니다. 이를 통해 AWS는 API 요청의 컨텍스트를 평가해 정책 설명의 적용 여부를 판단할 수 있습니다. 자세한 정보는 정책 조건사용 (p. 107) 단원을 참조하십시오.

66

Page 75: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드기본 키 정책

자세한 정보는 AWS 정책 구문, 참조 AWS IAM 정책 참조 in the IAM 사용 설명서.

기본 키 정책기본 키 정책을 CMK 프로그램적으로

여러분이 CMK 프로그램적으로—즉, AWS KMS API ( AWS 스펙 and 명령줄 도구)—새로운 정책에 대한 주요 정책을 제공할 수 있습니다. CMK. 사용자가 제공하지 않으면 AWS KMS가 자동으로 생성합니다. 이 기본키 정책은 AWS 계정(루트 사용자)을 CMK 에 대한 CMK 계정 내의 IAM 정책을 사용하여 CMK. 이 정책 설명에 대한 자세한 내용은 AWS 계정에 대한 액세스 허용 및 IAM 정책 활성화 (p. 67) 섹션을 참조하십시오.

기본 키 정책을 CMK with the AWS Management 콘솔

귀하가 만들기 CMK with the AWS Management 콘솔 (p. 21)을(를) 선택할 수 있습니다. IAM 사용자, IAM 역할 및 AWS 계정 액세스 권한이 부여된 CMK. 콘솔이 자동으로 생성한 기본 키 정책에 선택한 사용자, 역할,계정이 추가됩니다. 콘솔에서 기본 보기를 이용해 이 키 정책을 보고 수정할 수도 있고, 키 정책 문서로 바로작업할 수도 있습니다. 콘솔이 생성한 기본 키 정책은 다음 권한을 허용합니다. 각 권한에 대해서는 해당 섹션에서 설명합니다.

Permissions

• AWS 계정에 대한 액세스 허용 및 IAM 정책 활성화 (p. 67)• 주요 관리자가 CMK (p. 68)• 주요 사용자가 CMK (p. 70)

• 주요 사용자가 CMK 암호화 작업 (p. 71)• 주요 사용자가 CMK with AWS 서비스 (p. 72)

AWS 계정에 대한 액세스 허용 및 IAM 정책 활성화기본 키 정책은 AWS 계정(루트 사용자)을 CMK 에 대한 CMK다음 두 가지 사항을 모두 수행합니다.

1. 위험 감소 CMK 관리할 수 없습니다.

귀하는 AWS 이 사용자에 대한 액세스를 허용하여 CMK 관리할 수 없습니다. 다음 시나리오를 고려하십시오.1. A CMK의 키 정책은 만 하나 IAM 사용자, 앨리스, CMK. 이 키 정책은 루트 사용자에 대한 액세스를 허

용하지 않습니다.2. 누군가 IAM 사용자 Alice를 삭제합니다.

이 시나리오에서는 CMK 이제 관리할 수 없으며 연락처 AWS 지원 리모델링을 CMK. 루트 사용자가CMK루트 사용자가 액세스할 수 있기 때문에 CMK 키 정책이 명시적으로 허용하는 경우에만 을(를) 허용합니다. 루트 사용자에 대한 액세스를 묵시적으로 허용하는 AWS의 다른 대다수 리소스와 다릅니다.

2. 활성화 IAM 정책에 대한 액세스 권한을 CMK.

IAM 자기 자신에 대한 액세스 권한은 CMK. 하지만 CMK키 정책에 따라 의 키 정책을 사용할 수 있습니다. 기부 AWS 계정 전체 액세스 권한 CMK 이를 통해 IAM 제공하는 정책 IAM 사용자 및 역할 CMK. 그자체로는 IAM 사용자 또는 역할 액세스를 CMK을(를) 사용하면 IAM 정책을 준수해야 합니다. 자세한 정보는 액세스 관리 AWS KMS CMKs (p. 64) 단원을 참조하십시오.

다음 예는 AWS 계정에 대한 액세스를 허용하고 따라서 IAM 정책을 활성화하는 정책 설명을 보여줍니다.

{ "Sid": "Enable IAM User Permissions",

67

Page 76: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드기본 키 정책

"Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:root"}, "Action": "kms:*", "Resource": "*"}

주요 관리자가 CMK콘솔이 생성한 기본 키 정책을 통해 해당 계정에서 IAM 사용자와 역할을 선택하고 이들을 키 관리자로 지정할 수 있습니다. 주요 관리자는 CMK을(를) 사용할 권한이 없습니다. CMK 에서 암호화 작업 (p. 11).

Warning

주요 관리자는 CMK 데이터를 암호화하고 해독하려면 키 정책을 변경할 권한이 있습니다. 즉 스스로 모든 AWS KMS 권한을 부여할 수 있습니다.

추가할 수 있습니다. IAM 사용자 및 역할을 CMK. 다음 이미지에서 보듯이, 키 정책에 대한 콘솔의 기본 보기로 목록을 편집할 수도 있습니다. 주요 정책의 기본 보기는 각 항목에 대한 주요 세부 정보 페이지에서 확인할 수 있습니다. CMK.

콘솔의 기본 보기를 이용해 키 관리자 목록을 수정하면 콘솔이 키 정책의 특정 문에서 Principal 요소를 수정합니다. 이 문은 키 관리자 문이라고 합니다. 다음은 키 관리자 문을 나타낸 예제입니다.

{ "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/KMSAdminUser", "arn:aws:iam::111122223333:role/KMSAdminRole" ]},

68

Page 77: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드기본 키 정책

"Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*"}

키 관리자 문은 다음 권한을 허용합니다.

• kms:생성* – 주요 관리자가 별칭을 생성하고 보조금 (p. 136) 이를 위해 CMK.• kms:설명* – 주요 관리자가 이 정보에 대한 정보를 얻을 수 있습니다. CMK 식별자, 생성 날짜, 상태 등을

비롯하여. AWS Management 콘솔에서 키 세부 정보 페이지를 보려면 이 권한이 필요합니다.• kms:활성화* – 핵심 관리자가 이 설정을 설정할 수 있습니다. CMK의 상태가 활성화되었습니다. 대칭의 경

우 CMKs키 관리자는 연간 회전 CMK의 주요 재료 (p. 170).• kms:목록* – 주요 관리자가 이 보고서에 대한 별칭, 보조금, 주요 정책 및 태그 목록을 얻을 수 있습니다.

CMK. 이 허가는 CMKs in the AWS Management 콘솔.• kms:Put* – 키 관리자가 이 정책에 대한 주요 정책을 변경할 수 있습니다. CMK.• kms:업데이트* – 키 관리자가 별칭의 대상을 변경할 수 있음 CMK을(를) 변경하려면 CMK의 설명.• kms:취소* – 주요 관리자가 이 권한을 취소할 수 있도록 허용합니다. CMK 이는 교부금 (p. 136).• kms:비활성화* – 핵심 관리자가 이 설정을 설정할 수 있습니다. CMK의 키 상태가 비활성화되었습니다. 대

칭의 경우 CMKs, 키 관리자가 비활성화할 수 있습니다. 연간 회전 CMK의 주요 재료 (p. 170).• kms:get* – 핵심 관리자가 이 정책에 대한 주요 정책을 얻을 수 있습니다. CMK 이 문제를 CMK의 주요

재료는 년에 회전됩니다. 대상 대칭 CMKs (p. 158) with 가져온 키 재료 (p. 277)핵심 관리자가 키자료를 가져오기 위해 필요한 가져오기 문서와 공개 키를 다운로드할 수 있습니다. CMK. 대상 메트릭CMKs (p. 158)핵심 관리자는 공개 키 다운로드 (p. 48) of the CMK.

• kms:삭제* – 키 관리자가 이와 관련된 별칭을 삭제할 수 있음 CMK. 대칭의 경우 CMKs with 가져온 키 재료 (p. 277)키 관리자가 가져온 키 재료 를 삭제합니다. 이 권한은 키 관리자가 삭제 CMK (p. 266).

• kms:수입재료 – 핵심 관리자가 키 자료를 CMK. 이 허가는 다음의 경우에만 주요 정책에 포함됩니다. 만들기 CMK 핵심 재료 없이 (p. 281).

Note

이 역할은 앞의 예제 정책 설명에 표시되지 않습니다.• kms:태그 리소스 – 키 관리자가 이 태그를 위해 태그를 추가하고 업데이트할 수 있음 CMK.• kms:untagresource – 키 관리자가 이 태그를 제거할 수 있음 CMK.• kms:스케줄키 삭제 – 핵심 관리자가 삭제 CMK (p. 266).• kms:취소삭제 – 키 관리자가 이 문서의 보류 중인 삭제를 취소할 수 있습니다. CMK.

이전 목록의 마지막 두 가지 권한 kms:ScheduleKeyDeletion and kms:CancelKeyDeletion은(는) 기본적으로 포함 만들기 CMK (p. 21). 그러나, 사용자가 CMK 확인란을 선택 취소하여 키 관리자가 이 키 삭제허용. 동일한 방법으로 키 세부 정보 페이지를 사용하여 기존 키 정책에서 기존 키 정책을 제거할 수 있습니다. CMKs. 자세한 정보는 키 편집 (p. 43) 단원을 참조하십시오.

69

Page 78: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드기본 키 정책

많은 경우 이러한 권한에 와일드카드 문자(*)가 포함됩니다. 즉 AWS KMS가 이후에 새 API 작업을 추가하면키 관리자는 자동으로 Create, Describe, Enable, List, Put, Update, Revoke, Disable, Get, 또는 Delete로 시작하는 모든 새 API 작업을 수행할 수 있습니다.

Note

앞부분에서 설명한 키 관리자 문은 기본 키 정책의 최신 버전에 수록되어 있습니다. 이전 버전의 기본 키 정책에 대한 자세한 내용은 키 정책을 최신으로 유지하기 (p. 81) 섹션을 참조하십시오.

주요 사용자가 CMK콘솔이 대칭을 위해 생성하는 기본 키 정책 CMKs 선택할 수 있습니다 IAM 사용자 및 역할 및 외부 AWS 고객을 주요 사용자.

콘솔은 키 사용자에 대한 키 정책에 두 개의 정책 문을 추가합니다.

• 사용 CMK 직접 (p. 71) — 첫 번째 주요 정책 선언문은 주요 사용자에게 CMK 모든 지원 암호화 작업 (p. 11) 해당 유형의 CMK.

• 사용 CMK with AWS 서비스 (p. 72) — 두 번째 정책 선언은 주요 사용자에게 허용되는 권한을 부여합니다. AWS 통합된 서비스 AWS KMS 사용하기 위해 CMK 자원을 보호하기 위해 Amazon Simple StorageService 버킷 (p. 375) and Amazon DynamoDB 표 (p. 345).

추가할 수 있습니다. IAM 사용자, IAM 역할 및 기타 AWS 계정을 사용하여 CMK. 다음 이미지에서 보듯이, 키정책에 대한 콘솔의 기본 보기로 목록을 편집할 수도 있습니다. 키 정책의 기본 보기는 키 세부 정보 페이지에 있습니다. 다른 사용자를 허용하는 방법에 대한 자세한 내용은 AWS 계정 사용 CMK, 참조: 다른 계정의사용자가 CMK를 사용하도록 허용 (p. 91).

콘솔의 기본 보기를 이용해 키 사용자 목록을 변경하면 콘솔이 키 정책의 두 설명문에서 Principal 요소를변경합니다. 이러한 문을 키 사용자 문이라고 합니다. 다음 예는 대칭에 대한 주요 사용자 설명을 보여줍니다. CMKs.

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": [

70

Page 79: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드기본 키 정책

"arn:aws:iam::111122223333:user/CMKUser", "arn:aws:iam::111122223333:role/CMKRole", "arn:aws:iam::444455556666:root" ]}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*"},{ "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/CMKUser", "arn:aws:iam::111122223333:role/CMKRole", "arn:aws:iam::444455556666:root" ]}, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}}}

주요 사용자가 CMK 암호화 작업주요 사용자는 CMK 모두 암호화 작업 (p. 11) 지원 CMK. 또한 설명 작업에 대한 자세한 정보를 CMK in theAWS KMS 콘솔 또는 AWS KMS API 작업.

기본적으로 AWS KMS 콘솔은 다음 예제와 같은 키 사용자 문을 기본 키 정책에 추가합니다. 서로 다른 API작업을 지원하므로 대칭에 대한 정책 문의 동작이 CMKs, 주석 메트릭 CMKs 공개 키 암호화 및 CMKs 서명및 확인은 약간 다릅니다.

대칭 CMKs

콘솔은 대칭에 대한 주요 정책에 다음 문장을 추가합니다. CMKs.

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/CMKUser"}, "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:Encrypt", "kms:GenerateDataKey*", "kms:ReEncrypt*" ], "Resource": "*"}

&t={\f CMKs 공개 키 암호화

콘솔은 기본 정책에 대한 주요 정책에 다음 문장을 추가합니다. CMKs 의 주요 사용 암호화 및 암호 해독.

71

Page 80: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드기본 키 정책

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/CMKUser"}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:DescribeKey", "kms:GetPublicKey" ], "Resource": "*"}

&t={\f CMKs 서명 및 확인

콘솔은 기본 정책에 대한 주요 정책에 다음 문장을 추가합니다. CMKs 의 주요 사용 서명 및 확인.

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/CMKUser"}, "Action": [ "kms:DescribeKey", "kms:GetPublicKey", "kms:Sign", "kms:Verify" ], "Resource": "*"}

이러한 문의 작업은 키 사용자에게 다음 권한 중 일부를 제공합니다.

• kms:암호화 – 주요 사용자가 데이터를 암호화할 수 있음 CMK.• kms:암호 해독 – 주요 사용자가 데이터를 암호화할 수 있도록 허용 CMK.• kms:설명 – 주요 사용자가 이에 대한 자세한 정보를 얻을 수 있습니다. CMK 식별자, 생성일 및 키 상태를

포함합니다. 또한 주요 사용자가 CMK in the AWS KMS 콘솔.• kms:GenerateDataKey* – 키 사용자가 클라이언트 측 암호화 작업을 위해 대칭 데이터 키 또는 비대칭

데이터 키 페어를 요청하도록 허용합니다. 콘솔은 * 와일드카드 문자를 사용하여 다음 API 작업에 대한권한을 나타냅니다. generatedatakey, generatedatakeywithoutplaintext, generatedata키패드, 그리고generatedataifairwithplaintext.

• kms:getpublickey – 주요 사용자가 팔레트 메트릭의 공개 키를 다운로드할 수 있습니다. CMK. 이 퍼블릭키를 공유하는 당사자는 AWS KMS 외부의 데이터를 암호화할 수 있습니다. 그러나 이러한 암호화 텍스트는 AWS KMS에서 Decrypt 작업을 호출해야만 해독할 수 있습니다.

• kms:재암호화* – 주요 사용자가 원래 암호화한 데이터를 다시 암호화할 수 있음 CMK, 또는 CMK 이전에암호화된 데이터를 다시 암호화하려면 The 재암호화 작동하려면 소스 및 대상에 대한 액세스가 필요합니다. CMKs. 이를 달성하기 위해 kms:ReEncryptFrom 소스 허가 CMK and kms:ReEncryptTo 목적지에대한 허가 CMK. 그러나 단순함을 위해 콘솔은 kms:ReEncrypt* ( * 와일드카드 문자) CMKs.

• kms:서명 – 주요 사용자가 이 메시지를 사용하여 메시지에 서명할 수 있습니다. CMK.• kms:확인 – 주요 사용자가 서명하여 서명을 확인할 수 있습니다. CMK.

주요 사용자가 CMK with AWS 서비스콘솔의 기본 키 정책은 또한 주요 사용자에게 허용되는 권한을 부여합니다. AWS 통합된 서비스 AWSKMS (p. 341) 사용하기 위해 CMK, 특히 보조금을 사용하는 서비스.

72

Page 81: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드예제 키 정책

주요 사용자는 CMK 구체적이고 제한적인 방식으로. 이 묵시적 위임은 권한 부여 (p. 136)를 통해 이루어집니다. 이러한 보조금을 통해 AWS 서비스 CMK 을(를) 계정에서 보호합니다.

{ "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/CMKUser"}, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}}}

예를 들어, 주요 사용자는 CMK 을(를) 참조하십시오.

• 사용 CMK with Amazon Elastic Block Store (Amazon EBS) 및 Amazon Elastic Compute Cloud (AmazonEC2)를 사용하여 암호화된 EBS 볼륨을 EC2 인스턴스에 연결합니다. 주요 사용자가 암시적으로 AmazonEC2 사용 권한 CMK 인스턴스에 암호화된 볼륨을 연결합니다. 자세한 정보는 Amazon Elastic BlockStore(Amazon EBS)의 AWS KMS 활용 방식 (p. 355) 단원을 참조하십시오.

• 사용 CMK with Amazon Redshift 암호화된 클러스터를 시작합니다. 주요 사용자가 암시적으로 AmazonRedshift 사용 권한 CMK 암호화된 클러스터를 실행하고 암호화된 스냅샷을 생성합니다. 자세한 정보는Amazon Redshift의 AWS KMS 활용 방식 (p. 364) 단원을 참조하십시오.

• 사용 CMK 기타 AWS 서비스 통합 AWS KMS (p. 341)특히 보조금을 사용하는 서비스는 이러한 서비스를 통해 암호화된 리소스를 생성, 관리 또는 사용합니다.

kms:GrantIsForAWSResource (p. 124) 조건 키를 사용하면 키 사용자가 권한 부여를 생성하고 관리할 수있지만 피부여자가 권한 부여를 사용하는 AWS 서비스인 경우에만 가능합니다. 이 권한은 키 사용자가 권한 부여를 사용하는 모든 통합 서비스를 사용하도록 허용합니다. 그러나 특정 정책을 사용하여 특정 정책을AWS 서비스 CMK 을(를) 대신하여 을(를) 대신합니다. 자세한 내용은 kms:ViaService (p. 130) 조건 키를참조하십시오.

주요 사용자에게는 CMK 통합 서비스를 통해 이 권한은 충분하지 않습니다. 키 사용자는 통합 서비스를 사용할 수 있는 권한도 필요합니다. 사용자에게 AWS와 통합된 AWS KMS 서비스에 액세스할 수 있는 권한을 부여하는 방법에 대한 세부 정보는 통합 서비스의 설명서를 참조하십시오.

예제 키 정책다음 예는 대칭에 대한 완전한 핵심 정책을 보여 줍니다. CMK. 이 키 정책은 앞의 기본 키 정책 (p. 67) 섹션의 예제 정책 설명을 단일 키 정책에 결합하여 다음을 달성합니다.

• 허용 AWS 계정(루트 사용자) 111122223333 에 대한 CMK따라서 IAM 계정 내의 정책을 CMK.• 허용 IAM 사용자 kmsadminuser 및 IAM KMSADMINROLE 역할을 수행하려면 CMK.• 허용 IAM 사용자 CMK사용자, IAM 역할 CMK역할 및 AWS 계정 444455556666 사용하기 위해 CMK.

{ "Version": "2012-10-17", "Id": "key-consolepolicy-2", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:root"}, "Action": "kms:*",

73

Page 82: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드예제 키 정책

"Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/KMSAdminUser", "arn:aws:iam::111122223333:role/KMSAdminRole" ]}, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/CMKUser", "arn:aws:iam::111122223333:role/CMKRole", "arn:aws:iam::444455556666:root" ]}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/CMKUser", "arn:aws:iam::111122223333:role/CMKRole", "arn:aws:iam::444455556666:root" ]}, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": {"Bool": {"kms:GrantIsForAWSResource": "true"}} } ]}

다음 이미지는 키 정책에 대한 콘솔의 기본 보기로 봤을 때 이 키 정책이 어떻게 보이는지 알 수 있는 예입니다.

74

Page 83: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드예제 키 정책

75

Page 84: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 정책 보기

키 정책 보기API의 AWS KMS 또는 CMK 작업을 사용하여 계정에서 (p. 4) 고객 관리형 AWS 또는 CMK (p. 4) 관리형AWS Management 콘솔에 대한 키 정책을 볼 수 있습니다.GetKeyPolicyAWS KMS 이러한 기법을 사용하여다른 CMK 계정에서 AWS의 키 정책을 볼 수 없습니다.

AWS KMS 키 정책에 대한 자세한 내용은 AWS KMS에서 키 정책 사용 (p. 65) 단원을 참조하십시오. 에액세스할 수 있는 사용자 및 역할을 확인하는 방법은 CMK 단원을 참조하십시오.the section called “액세스결정” (p. 140)

주제• 키 정책 보기(console) (p. 76)• 키 정책 보기(AWS KMS API) (p. 78)

키 정책 보기(console)권한이 있는 사용자는 의 AWSKey policy(키 정책)CMK 탭에서 (p. 4) 관리형 CMK (p. 4) 또는 고객 관리형에 대한 키 정책을 볼 수 있습니다.AWS Management 콘솔

에서 CMK에 대한 키 정책을 보려면 AWS Management 콘솔kms:ListAliases, kms:DescribeKey 및kms:GetKeyPolicy 권한이 있어야 합니다.

1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/kms에서 AWS KeyManagement Service(AWS KMS) 콘솔을 엽니다.

2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 해당 계정에서 AWS가 생성하고 관리하는 키를 보려면 탐색 창에서 AWS 관리형 키를 선택합니다. 해당

계정에서 직접 생성하고 관리하는 키를 보려면 탐색 창에서 고객 관리형 키를 선택합니다.4. 목록에서 검사할 CMKs의 별칭 또는 키 ID를 선택합니다.CMK5. Key policy(키 정책) 탭을 선택합니다.

Key policy(키 정책) 탭에서 키 정책 문서를 볼 수 있습니다. 다음은 정책 보기입니다. 키 정책 문에서 키정책을 통해 CMK에 대한 액세스 권한이 부여된 보안 주체를 볼 수 있으며 이러한 보안 주체가 수행할수 있는 작업을 볼 수 있습니다.

다음 예제에서는 기본 키 정책 (p. 67)에 대한 정책 보기를 보여 줍니다.

76

Page 85: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 정책 보기

또는 CMK에서 AWS Management 콘솔를 생성한 경우 키 관리자, 키 삭제 및 키 사용자 섹션이 포함된기본 보기가 표시됩니다. 키 정책 문서를 보려면 Switch to policy view(정책 보기로 전환)를 선택합니다.

다음 예제에서는 기본 키 정책 (p. 67)에 대한 기본 보기를 보여 줍니다.

77

Page 86: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 정책 보기

키 정책 보기(AWS KMS API)계정에서 AWS 관리형 CMK (p. 4) 또는 고객 관리형 CMK (p. 4)에 대한 키 정책을 가져오려면 AWS API에서GetKeyPolicy 작업을 사용합니다.AWS KMS 이 작업을 사용하여 다른 계정의 키 정책은 볼 수 없습니다.

다음 예제에서는 AWS Command Line Interface(AWS CLI)에서 get-key-policy 명령을 사용하지만 AWSSDK를 사용하여 이 요청을 할 수 있습니다.

default가 유일하게 유효한 값이더라도 PolicyName 파라미터가 필요합니다. 또한 이 명령은 더 쉽게 볼수 있도록 JSON이 아닌 텍스트로 출력을 요청합니다.

78

Page 87: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 정책 변경

이 명령을 실행하기 앞서 예제 키 ID를 유효한 키 ID로 바꿉니다.

$ aws kms get-key-policy --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --policy-name default --output text

응답은 다음과 같이 기본 키 정책 (p. 67)을 반환합니다.

{ "Version" : "2012-10-17", "Id" : "key-consolepolicy-3", "Statement" : [ { "Sid" : "Enable IAM User Permissions", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : "kms:*", "Resource" : "*" } ]}

키 정책 변경귀하는 고객 마스터 키 (CMK) AWS 계정을 사용하여 AWS Management 콘솔 또는 푸트키피시 작업. 이 기법을 사용하여 CMK 다른 AWS 계정에서

키 정책을 변경하는 경우 다음 사항을 주의해야 합니다.

• 귀하는 AWS 관리 CMK (p. 4) 또는 고객 관리 CMK (p. 4)고객 관리를 위한 주요 정책만 변경할 수 있습니다. CMK. AWS 관리 정책 CMKs 이(가) 생성 및 관리됩니다. AWS 서비스를 제공하는 CMK 계정에서.

• 키 정책에서 IAM 사용자, IAM 역할, AWS 계정(루트 사용자)를 추가하거나 제거하고, 이러한 보안 주체에허용되거나 거부된 작업을 변경할 수 있습니다. 키 정책에서 보안 주체와 권한을 지정하는 방법에 대한 자세한 내용은 키 정책 사용 (p. 65) 단원을 참조하십시오.

• 키 정책에 IAM 그룹을 추가할 수 없지만 여러 명의 IAM 사용자를 추가할 수 있습니다. 자세한 정보는 다중허용 IAM 사용자가 CMK (p. 80) 단원을 참조하십시오.

• 키 정책에 외부 AWS 계정을 추가하면 외부 계정에서 IAM 정책을 이용해 해당 계정에서 IAM 사용자, 그룹 또는 역할에도 권한을 부여해야 합니다. 자세한 정보는 다른 계정의 사용자가 CMK를 사용하도록 허용 (p. 91) 단원을 참조하십시오.

• 결과 키 정책 문서는 32KB(32,768바이트)를 초과할 수 없습니다.

주제• 키 정책 변경 방법 (p. 79)• 다중 허용 IAM 사용자가 CMK (p. 80)

키 정책 변경 방법세 가지 다른 방법을 이용해 키 정책을 변경할 수 있으며 각각에 대해서는 다음 섹션에서 설명합니다.

주제• AWS Management 콘솔의 기본 보기 사용 (p. 80)• AWS Management 콘솔 정책 보기 사용 (p. 80)• AWS KMS API 사용 (p. 80)

79

Page 88: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 정책 변경

AWS Management 콘솔의 기본 보기 사용콘솔을 이용해 기본 보기라는 그래픽 인터페이스로 키 정책을 변경할 수 있습니다.

다음 절차가 콘솔에서 본 것과 일치하지 않는 경우, 이 키 정책이 콘솔에서 생성되지 않았거나 키 정책이 콘솔의 기본 보기가 지원하지 않는 방식으로 수정되었음을 뜻합니다. 이 경우 AWS Management 콘솔 정책 보기 사용 (p. 80) 또는 AWS KMS API 사용 (p. 80)에 설명된 단계를 따릅니다.

1. 고객 관리를 위한 주요 정책 보기 CMK 침대에 키 정책 보기(console) (p. 76). (AWS 관리형 정책의키 정책은 변경할 수 없습니다.)

2. 변경하려는 내용을 결정합니다.

• 추가 또는 제거 핵심 관리자 (p. 68), 및 주요 관리자를 허용 또는 차단하는 방법 삭제CMK (p. 266)의 컨트롤을 핵심 관리자 페이지의 섹션을 참조하십시오. 주요 관리자는 CMK을(를)활성화하고 해제하고, 주요 정책을 설정하며, 키 회전 활성화 (p. 170).

• 추가 또는 제거 주요 사용자 (p. 70), 및 외부 허용 또는 허용되지 않음 AWS 계정 사용 CMK의 컨트롤을 주요 사용자 페이지의 섹션을 참조하십시오. 주요 사용자는 CMK 에서 암호화 작업 (p. 11)을(를)암호화, 해독, 재암호화 및 데이터 키 생성 등.

AWS Management 콘솔 정책 보기 사용콘솔을 이용해 콘솔의 정책 보기에서 키 정책 문서를 변경할 수 있습니다.

1. 고객 관리를 위한 주요 정책 보기 CMK 침대에 키 정책 보기(console) (p. 76). (AWS 관리형 정책의키 정책은 변경할 수 없습니다.)

2. Key Policy(키 정책) 섹션에서 Switch to policy view(정책 보기로 전환)를 선택합니다.3. 키 정책 문서를 편집한 다음 변경 사항 저장을 선택합니다.

AWS KMS API 사용귀하는 푸트키피시 운영하기 위한 CMK 여러분의 AWS 계정. 이 API는 CMK 다른 AWS 계정.

1. GetKeyPolicy 작업을 이용해 기존 키 정책 문서를 검색한 다음 이 정책 문서를 파일에 저장합니다. 다중프로그래밍 언어로 작성된 샘플 코드는 키 정책 가져오기 (p. 250) 단원을 참조하십시오.

2. 원하는 텍스트 편집기에서 키 정책 문서를 열고 편집한 후 파일을 저장합니다.3. 사용 푸트키피시 업데이트된 핵심 정책 문서를 CMK. 다중 프로그래밍 언어로 작성된 샘플 코드는 키 정

책 설정 (p. 252) 단원을 참조하십시오.

중요 정책을 한 개 복사하는 예를 CMK 또 다른 get키키시 예 in the AWS CLI Command Reference.

다중 허용 IAM 사용자가 CMK키 정책에서 IAM 그룹은 유효한 보안 주체가 아닙니다. 다수의 IAM 사용자가 CMK다음 중 하나를 수행합니다.

• 키 정책의 각각의 IAM 사용자를 추가합니다. 이 방법을 사용하는 경우, 권한 있는 사용자 목록이 변경될 때마다 키 정책을 업데이트해야 합니다.

• 핵심 정책에 활성화 IAM 정책에 대한 액세스 권한을 CMK (p. 67). 그런 다음 그런 생성 IAM 정책 액세스 권한을 CMK, 그리고 해당 정책을 IAM 그룹 승인된 IAM 사용자. 이 방법을 사용하면 권한있는 사용자목록이 변경되어도 정책을 변경할 필요가 없습니다. 해당 IAM 그룹에서 사용자를 제거하거나 추가하기만하면 됩니다.

AWS KMS 키 정책과 IAM 정책이 상호 작용하는 방식에 대한 자세한 내용은 키 액세스 문제 해결 (p. 144)단원을 참조하십시오.

80

Page 89: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 정책을 최신으로 유지하기

키 정책을 최신으로 유지하기를 사용하여 (AWS Management 콘솔)를 생성고객 마스터 키할 때 CMK에 액세스할 수 있는 (p. 21) 사용자,IAM 역할 및 IAM 계정을 선택할 수 있습니다.AWSCMK 이러한 사용자, 역할 및 계정은 에 대한 액세스를 제어하는 (p. 67)기본 키 정책CMK에 추가됩니다. 때때로 새 CMKs에 대한 기본 키 정책이 업데이트됩니다.일반적으로 이러한 업데이트는 새 AWS KMS 기능에 해당합니다.

새 CMK를 생성하면 기본 키 정책의 최신 버전이 CMK에 추가됩니다. 그러나 기존 CMKs는 계속해서 기존 키정책을 사용합니다.—즉, 기본 키 정책의 새 버전은 기존 에 자동으로 적용되지 않습니다CMKs. 대신, 콘솔이새 버전 출시를 알리며 업그레이드하라는 메시지를 표시합니다.

Note

콘솔은 CMK 생성 시 적용된 기본 키 정책을 사용하는 경우에만 알림을 제공합니다. 콘솔의 정책 보기 또는 PutKeyPolicy 작업을 사용하여 키 정책 문서를 수동으로 수정한 경우 콘솔은 새 권한을 사용할 수 있게 되었음을 알리지 않습니다.

키 정책 업그레이드 시 추가되는 권한에 대한 내용은 기본 키 정책으로 변경 (p. 81) 단원을 참조하십시오.키 정책의 최신 버전으로 업그레이드하면 어떤 항목도 제거하지 않고 새로운 권한만 추가하기 때문에 문제가발생하지 않습니다. 특별한 이유가 없는 한, 키 정책을 항상 최신 상태로 유지하는 것이 좋습니다.

기본 키 정책의 최신 버전을 사용할 수 있는지 확인AWS Management 콘솔을 사용하여 기본 키 정책의 최신 버전을 사용할 수 있는지 확인할 수 있습니다.

1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/kms에서 AWS KeyManagement Service(AWS KMS) 콘솔을 엽니다.

2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 탐색 창에서 고객 관리형 키를 선택합니다.4. 기본 키 정책을 사용하는 CMK의 별칭 또는 키 ID를 선택합니다.5. Key policy(키 정책) 탭을 선택합니다.

기본 키 정책의 최신 버전을 사용할 수 있는 경우 콘솔에 다음 알림이 표시됩니다.

기본 키 정책의 최신 버전을 사용할 수 있습니다. 새 키 정책을 미리 보고 업그레이드하십시오.

기본 키 정책의 최신 버전으로 업그레이드새로운 기본 키 정책을 사용할 수 있는 경우 콘솔 페이지의 Key Policy(키 정책) 섹션에 다음 알림이 표시됩니다.

기본 키 정책의 최신 버전을 사용할 수 있습니다. 새 키 정책을 미리 보고 업그레이드하십시오.

기본 키 정책의 최신 버전으로 업그레이드하려면

1. 최신 버전의 기본 키 정책을 발표하는 알림이 나타나면 Preview and upgrade to the new key policy(새키 정책을 미리보고 업그레이드)를 선택합니다.

2. 키 정책 문서를 통해 기본 키 정책의 최신 버전을 검토합니다. 최신 버전과 이전 버전의 차이에 대한 자세한 내용은 기본 키 정책으로 변경 (p. 81) 단원을 참조하십시오. 키 정책을 검토한 후 [Upgrade keypolicy]를 선택합니다.

기본 키 정책으로 변경기본 키 정책의 최신 버전 (p. 67)을 보면, 키 관리자 문에 이전 버전보다 많은 권한이 포함되어 있습니다.이러한 추가 권한은 새 AWS KMS 기능에 해당합니다.

81

Page 90: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드IAM 정책 사용

이전 버전의 기본 키 정책을 사용하는 CMKs에는 다음 권한이 없을 수 있습니다. 기본 키 정책의 최신 버전으로 업그레이드하면 키 관리자 문에 추가됩니다.

kms:TagResource 및 kms:UntagResource

이러한 권한은 키 관리자가 CMK에서 태그를 추가, 업데이트 및 제거하도록 허용합니다. 이 두 권한은AWS KMS가 태깅 기능 (p. 44)을 출시한 당시 기본 키 정책에 추가되었습니다.

kms:ScheduleKeyDeletion 및 kms:CancelKeyDeletion

이러한 권한은 키 관리자가 CMK에 대한 삭제를 예약하고 취소하도록 허용합니다. 가 AWS KMS 삭제기능을 출시했을 때 기본 키 정책에 추가되었습니다CMK. (p. 266)

Note

및 kms:ScheduleKeyDeletion 권한은 kms:CancelKeyDeletion을 생성할 때와 기본 키정책의 최신 버전으로 업그레이드할 때 기본적으로 포함됩니다.CMK (p. 21) 그러나 CMK키 관리자가 이 키를 삭제하도록 허용 확인란을 선택 취소하여 를 생성할 때 기본 키 정책에서 제거할 수도 있습니다. 동일한 방식으로 키 세부 정보 페이지를 사용하여 기존 CMKs의 기본 키 정책에서 제거할 수 있습니다. 여기에는 키 정책을 최신 버전으로 업그레이드한 CMKs가 포함됩니다.

AWS KMS에서 IAM 정책 사용키 정책IAM, 권한 부여 (p. 65) 및 VPC 엔드포인트 정책 (p. 136)과 함께 정책을 사용하여 (p. 329)에서 고객 마스터 키(CMKs)에 대한 액세스를 제어할 수 있습니다.AWS KMS

Note

정책을 사용하여 IAM에 대한 액세스를 제어하려면 CMK에 대한 키 정책에서 계정에 CMK 정책을 사용할 권한을 부여해야 합니다.IAM 특히 주요 정책에는 IAM 정책을 활성화하는 정책 설명 (p. 67)이 포함되어야 합니다.이 단원에서는 IAM 정책을 사용하여 AWS KMS 작업에 대한 액세스를 제어하는 방법에 대해 설명합니다. IAM에 대한 일반적인 정보는 IAM 사용 설명서 단원을 참조하십시오.

모든 CMKs에는 키 정책이 있어야 합니다. IAM 정책은 선택 사항입니다. 정책을 사용하여 IAM에 대한 액세스를 제어하려면 CMK의 키 정책에서 계정에 CMK 정책을 사용할 권한을 부여해야 합니다.IAM 특히 주요 정책에는 IAM 정책을 활성화하는 정책 설명 (p. 67)이 포함되어야 합니다.

IAM 정책은 모든 AWS KMS 작업에 대한 액세스를 제어할 수 있습니다. 키 정책과 달리 IAM 정책은 여러CMKs에 대한 액세스를 제어하고 여러 관련 AWS 서비스의 작업에 대한 권한을 제공할 수 있습니다. 그러나IAM 정책은 특정 과 관련이 없기 때문에 키 정책으로는 제어할 수 없는 CreateKeyCMK 같은 작업에 대한 액세스를 제어하는 데 특히 유용합니다.

Amazon Virtual Private Cloud(Amazon VPC) 엔드포인트를 통해 AWS KMS에 액세스하는 경우, 엔드포인트를 사용할 때 VPC 엔드포인트 정책을 사용하여 AWS KMS 리소스에 대한 액세스를 제한할 수도 있습니다.예를 들어, VPC 엔드포인트를 사용할 때 AWS 계정의 보안 주체만 CMKs에 액세스하도록 허용할 수 있습니다. 자세한 내용은 VPC 엔드포인트에 대한 액세스 제어 (p. 329) 단원을 참조하십시오.

JSON 정책 문서 작성 및 서식 지정에 대한 도움말은 IAM 사용 설명서의 IAM JSON 정책 참조를 참조하세요.

주제• IAM 정책 개요 (p. 83)• 정책의 모범 사례IAM (p. 83)• 정책 설명에 CMKs 지정IAM (p. 85)• AWS KMS 콘솔 사용에 필요한 권한 (p. 86)• 파워 유저를 위한 AWS 관리형 정책 (p. 87)

82

Page 91: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드IAM 정책 개요

• 고객 관리형 정책 예 (p. 87)

IAM 정책 개요IAM 정책을 다음과 같이 사용할 수 있습니다.

• 사용자 또는 그룹에 권한 정책 연결 – IAM 사용자 또는 사용자 그룹이 AWS KMS 작업을 호출하도록 허용하는 정책을 연결할 수 있습니다.

• 연합 또는 교차 계정 권한을 위해 역할에 권한 정책 연결 – 역할에 IAM 정책을 연결하여 자격 증명 연동을활성화하거나, 교차 계정 권한을 허용하거나, EC2 인스턴스에서 실행 중인 애플리케이션에 권한을 부여할수 있습니다.IAM 역할의 다양한 사용 사례에 대한 자세한 내용은 IAM의 IAM 역할을 참조하십시오.IAM 사용 설명서

다음은 권한을 적용하는 정책의 예입니다. 이 정책은 연결된 IAM 자격 증명이 모든 CMKs 및 별칭을 나열하도록 허용합니다.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:ListKeys", "kms:ListAliases" ], "Resource": "*" }}

모든 IAM 정책처럼 이 정책에는 Principal 요소가 없습니다. IAM 사용자 또는 IAM 역할에 IAM 정책을 연결하면 사용자 또는 위임된 역할 사용자는 정책에 지정된 권한을 부여받습니다.

모든 AWS KMS API 작업과 해당 작업이 적용되는 리소스를 보여주는 표는 AWS KMS API 권한 참조 (p. 96) 단원을 참조하십시오.

정책의 모범 사례IAM모든 AWS KMS 리소스의 보안을 유지하려면 고객 마스터 키 CMKs(AWS)에 대한 액세스 보안이 중요합니다. AWS KMS CMKs는 AWS 계정에서 가장 중요한 여러 리소스를 보호하는 데 사용됩니다. 에 대한 액세스를 제어하는 키 정책 (p. 65), IAM 정책, 권한 부여 (p. 136) 및 VPC 엔드포인트 정책 (p. 329)을 설계해보십시오.CMKs

에 대한 액세스를 제어하는 IAM 정책 설명에서 CMKs최소 권한 원칙을 사용합니다. 보안 주체에게 이들이사용하거나 관리해야 하는 IAM에 대해서만 필요한 권한을 부여합니다.CMKs

키 정책 사용

가능한 경우 다른 CMK 계정의 정책을 포함하여 많은 IAM에 적용할 수 있는 CMKs 정책이 아니라 하나의 AWS에 영향을 주는 키 정책에 권한을 제공하십시오. 이는 kms:PutKeyPolicy 및kms:ScheduleKeyDeletion 같은 민감한 권한과 데이터가 보호되는 방식을 결정하는 암호화 작업에 특히중요합니다.

권한 제한CreateKey

키(kms:CreateKey)가 필요한 보안 주체에게만 키(kms:CreateKey)를 생성할 수 있는 권한을 부여합니다. 을 생성하는 보안 주체는 자신이 생성한 CMK을 사용하고 관리할 권한을 스스로, 그리고 다른 사용자에게 부여할 수 있도록 키 정책도 설정합니다.CMKs 이 권한을 허용하는 경우 정책 조건 (p. 107)을 사용하여 제한하는 것을 고려하십시오. 예를 들어, kms:CustomerMasterKeySpec 조건을 사용하여 권한을 대칭 CMKs로 제한할 수 있습니다.

83

Page 92: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드정책의 모범 사례IAM

정책에서 CMKs 지정IAM

가장 좋은 방법은 정책 설명의 요소에서 권한이 적용되는 각 (p. 12)의 CMK키 ARNResource을 지정하는 것입니다. 이 방법은 보안 주체가 요구하는 CMKs에 대한 권한을 제한합니다. 예를 들어 이Resource 요소는 보안 주체가 사용해야 하는 CMKs만 나열합니다.

"Resource": [ "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321"]

를 지정하는 것은 실용적이지 않으므로 CMKs과 같이 신뢰할 수 있는 Resource 계정 및 리전에서CMKs에 대한 액세스를 제한하는 AWS 값을 사용합니다.arn:aws:kms:region:account:key/* 또는 신뢰할 수 있는 CMKs 계정의 모든 리전(*)(예: AWS)에서 arn:aws:kms:*:account:key/*에 대한 액세스를 제한합니다.

정책에서 "리소스": "*" 방지IAM

와일드카드 문자(*)를 부당하게 사용합니다. 키 정책에서 Resource 요소의 와일드카드 문자는 키 정책이 연결된 CMK를 나타냅니다. 하지만 IAM 정책에서는 Resource 요소("Resource": "*")에 와일드카드 문자만 있으면 보안 주체의 계정에 사용 권한이 있는 모든 CMKs 계정의 모든 AWS에 권한이 적용됩니다. 여기에는 다른 AWS 계정의 CMKs 및 보안 주체 계정의 (p. 91)가 포함될 수 있습니다.CMKs

예를 들어, 다른 AWS 계정에서 CMK를 사용하려면 보안 주체는 외부 계정에서 CMK의 키 정책으로부터 그리고 자신의 계정에서 IAM 정책으로부터 권한이 필요합니다. 임의 계정이 AWS 계정에 에 대한kms:DecryptCMKs 권한을 부여했다고 가정합니다. 그렇다면 모든 IAM(kms:Decrypt)에 대한 CMKs권한을 역할에 부여하는 계정의 "Resource": "*" 정책이 요구 사항의 IAM 부분을 충족할 것입니다.따라서 해당 역할을 맡을 수 있는 보안 주체는 이제 신뢰할 수 없는 계정에서 CMK를 사용하여 암호화 텍스트를 해독할 수 있습니다. 작업에 대한 항목은 두 계정의 CloudTrail 로그에 표시됩니다.

특히 다음 API 작업을 허용하는 정책 설명에 "Resource": "*"를 사용하지 마십시오. 이러한 작업은다른 CMKs 계정의 AWS에서 호출할 수 있습니다.• DescribeKey• GetKeyRotationStatus• 암호화 작업 (p. 11)(암호화, 암호화 해제, GenerateDataKey, , GenerateDataKeyPair,

, GenerateDataKeyWithoutPlaintext, GenerateDataKeyPairWithoutPlaintext, Sign,GetPublicKeyVerify__28)ReEncrypthttps://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.htmlhttps://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html

• CreateGrant, ListGrants, ListRetirableGrants, RetireGrant, RevokeGrant"리소스": "*"를 사용하는 경우

정책에서는 필요한 권한에 대해서만 IAM 요소에 와일드카드 문자를 사용합니다.Resource 다음 권한에만 "Resource": "*" 요소가 필요합니다.• kms:CreateKey• kms:GenerateRandom• kms:ListAliases• kms:ListKeys• kms:CreateCustomKeyStore 및 kms:ConnectCustomKeyStore와 같은 사용자 지정 키 스토어에 대한

권한.

Note

별칭 작업(kms:CreateAlias, kms:UpdateAlias, kms:DeleteAlias)에 대한 권한을 별칭 및 CMK에 연결해야 합니다. 정책에서 "Resource": "*"를 사용하여 별칭과 IAM를 나타내거나CMKs 요소에서 별칭과 CMKs를 지정할 수 있습니다.Resource 예제는 별칭에 대한 액세스 제어 (p. 58)을 참조하십시오.

84

Page 93: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드정책 설명에 CMKs 지정IAM

 

이 주제의 예제에서는 IAM에 대한 CMKs 정책을 설계하기 위한 자세한 정보와 지침을 제공합니다. 일반적인AWS KMS 모범 사례 지침은 AWS Key Management Service 모범 사례 백서 단원을 참조하십시오.

정책 설명에 CMKs 지정IAM정책을 사용하여 보안 주체가 IAM를 사용하거나 관리하도록 허용할 수 있습니다.CMKs CMKs는 정책 설명의 Resource 요소에 지정됩니다.

정책 설명을 작성할 때 모든 에 대한 액세스 권한을 부여하지 않고 (p. 83)를 보안 주체가 사용해야 하는정책 문으로 제한하는 것이 CMKs모범 사례CMKs입니다.

• 정책 문에서 특정 CMKs를 지정하려면 각 IAM의 키 ARN (p. 12)을 사용합니다.CMK 키 ID, (p. 12)별칭 이름 또는 (p. 13)별칭 ARN을 사용하여 (p. 12) 정책 설명에서 CMK를 식별할 수 없습니다.IAM

다음 예를 참조하십시오. "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"

• 계정 및 리전에서 여러 CMKs를 지정하려면 키 ARN의 리전 또는 리소스 ID 위치에 와일드카드 문자(*)를사용합니다.

예를 들어 계정의 CMKs 리전에서 모든 미국 서부(오레곤)를 지정하려면 "Resource":"arn:aws:kms:us-west-2:111122223333:key/*"를 사용합니다. 계정의 모든 리전에서 모든 CMKs를 지정하려면 "Resource": "arn:aws:kms:*:111122223333:key/*"를 사용합니다.

• 모든 CMKs를 나타내려면 와일드카드 문자만 사용합니다("*"). 특정 CMK, 즉 CreateKey,GenerateRandom, ListAliases 및 를 사용하지 않는 작업에는 이 형식을 사용합니다.ListKeys

예를 들어 다음 IAM 정책 설명을 사용하면 보안 주체가 정책 설명의 요소에 나열된 DescribeKey에서만 ,GenerateDataKey, Decrypt 작업을 호출할 수 있습니다.CMKsResource 키 ARN으로 CMKs를 지정하면 권한이 지정된 CMKs로만 제한됩니다.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321" ] }}

신뢰할 수 있는 특정 CMKs 계정의 모든 AWS에 권한을 적용하려면 리전 및 키 ID 위치에 와일드카드 문자(*)를 사용할 수 있습니다. 예를 들어 다음 정책 설명을 통해 보안 주체는 두 개의 신뢰할 수 있는 예제 계정에서모든 CMKs에 대해 지정된 작업을 호출할 수 있습니다.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "kms:GenerateDataKeyPair"

85

Page 94: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 콘솔 사용에 필요한 권한

], "Resource": [ "arn:aws:kms:*:111122223333:key/*", "arn:aws:kms:*:444455556666:key/*" ] }}

요소에 와일드카드 문자("*")만 사용할 수도 있습니다.Resource 계정에 사용 권한이 있는 모든 CMKs에 대한 액세스를 허용하므로 주로 특정 CMK 및 Deny 문과 관련되지 않은 작업에 권장됩니다. 덜 민감한 읽기 전용 작업만 허용하는 정책 설명에도 이를 사용할 수 있습니다. 작업에 특정 AWS KMS가 포함되는지 여부를확인하려면 CMK에 있는 테이블의 리소스CMK 열에서 값을 찾습니다.the section called “AWS KMS API 권한 참조” (p. 96)

예를 들어 다음 정책 설명은 Deny 효과를 사용하여 보안 주체가 CMK에서 지정된 작업을 사용하지 못하도록금지합니다. 요소에 와일드카드 문자를 사용하여 모든 Resource를 나타냅니다.CMKs

{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": [ "kms:CreateKey", "kms:PutKeyPolicy", "kms:CreateGrant", "kms:ScheduleKeyDeletion" ], "Resource": "*" }}

다음 정책 설명은 와일드카드 문자만 사용하여 모든 CMKs를 나타냅니다. 하지만 덜 민감한 읽기 전용 작업과 특정 CMK에 적용되지 않는 작업만 허용합니다.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:CreateKey", "kms:ListKeys", "kms:ListAliases", "kms:ListResourceTags" ], "Resource": "*" }}

AWS KMS 콘솔 사용에 필요한 권한사용자가 AWS KMS 콘솔로 작업하려면 계정에 대한 리소스 작업을 하도록 허용하는 최소 권한이 있어야 합니다. 이러한 AWS KMS 권한 외에 IAM 사용자와 역할을 나열할 수 있는 권한도 가지고 있어야 합니다. 최소필수 권한보다 더 제한적인 IAM 정책을 만들면 AWS KMS 콘솔은 해당 IAM 정책에 연결된 사용자에 대해 의도대로 작동하지 않습니다.

사용자에게 AWS KMS 콘솔에 대한 읽기 전용 액세스를 허용하기 위해 필요한 최소 권한은 사용자가 CMKs콘솔에서 AWS KMS를 볼 수 있도록 허용 (p. 88) 단원을 참조하십시오.

사용자가 AWS KMS 콘솔로 CMKs를 생성하고 관리할 수 있도록 허용하려면 다음 단원에 설명된 대로AWSKeyManagementServicePowerUser 관리형 정책을 사용자에게 연결합니다.

86

Page 95: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드파워 유저를 위한 AWS 관리형 정책

AWS KMS 또는 AWS명령줄 도구SDKs를 통해 API로 작업하는 사용자에게 최소 콘솔 권한을 허용할 필요가 없습니다.https://aws.amazon.com/tools/#cli 그러나 이러한 사용자에게 API 사용 권한을 부여해야 합니다.자세한 정보는 AWS KMS API 권한 참조 (p. 96) 단원을 참조하십시오.

파워 유저를 위한 AWS 관리형 정책관리형 정책AWS을 사용하여 계정의 보안 주체에 파워 유저의 권한을 부여할 수 있습니다.IAM 파워 유저는CMKs을 생성하고, 생성한 CMKs를 사용 및 관리하며, 모든 CMKs 및 IAM 자격 증명을 볼 수 있습니다.

Note

이 정책은 파워 유저 kms:DescribeKey에 작업을 허용하는 키 정책을 사용하여 CMK에 대한 권한을부여합니다. 여기에는 신뢰할 수 없는 CMKs 계정의 AWS가 포함될 수 있습니다. 자세한 내용은 정책의 모범 사례IAM (p. 83) 단원을 참조하십시오.

AWSKeyManagementServicePowerUser 관리형 정책에는 다음 권한이 포함됩니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateAlias", "kms:CreateKey", "kms:DeleteAlias", "kms:Describe*", "kms:GenerateRandom", "kms:Get*", "kms:List*", "kms:TagResource", "kms:UntagResource", "iam:ListGroups", "iam:ListRoles", "iam:ListUsers" ], "Resource": "*" } ]}

• 사용자가 CMKs를 생성하도록 허용합니다. 이 프로세스에는 키 정책 설정이 포함되므로 파워 유저가 자신이 생성한 CMKs을 사용하고 관리할 권한을 스스로, 그리고 다른 사용자에게 부여할 수 있습니다.

• 사용자가 모든 에서 (p. 50)별칭 및 (p. 44)태그CMKs를 생성하고 삭제할 수 있도록 허용합니다.• 사용자가 키 ARN, 암호화 구성, 키 정책, 별칭, 태그 및 CMKs교체 상태를 포함하여 모든 (p. 170)에 대

한 세부 정보를 가져올 수 있습니다.• 사용자가 IAM 사용자, 그룹 및 역할을 나열할 수 있습니다.• 이 정책은 모든 CMKs에서 별칭과 태그를 관리할 수 있지만, 생성하지 않은 CMKs를 사용하거나 관리할 수

있는 권한을 이러한 사용자에게 부여하지 않습니다.

관리형 정책이 있는 사용자는 키 정책, 기타 AWSKeyManagementServicePowerUser 정책 및 권한 부여를포함하여 다른 소스로부터 권한을 얻을 수도 있습니다.IAM

고객 관리형 정책 예이 단원에서는 다양한 작업에 대한 권한을 허용하는 정책의 예를 제공합니다.

87

Page 96: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드고객 관리형 정책 예

Important

다음 정책의 권한 중 일부는 CMK의 키 정책에서도 허용하는 경우에만 허용됩니다. 자세한 정보는AWS KMS API 권한 참조 (p. 96) 단원을 참조하십시오.

JSON 정책 문서 작성 및 서식 지정에 대한 도움말은 IAM 사용 설명서의 IAM JSON 정책 참조를 참조하세요.

예제:• 사용자가 CMKs 콘솔에서 AWS KMS를 볼 수 있도록 허용 (p. 88)• 사용자가 CMKs을 생성하도록 허용 (p. 89)• 사용자가 특정 AWS 계정의 CMK로 암호화와 해독을 수행하도록 허용 (p. 90)• 사용자가 특정 CMK 계정 및 리전에서 AWS로 암호화 및 해독하도록 허용 (p. 90)• 사용자가 특정 CMKs를 사용하여 암호화 및 해독하도록 허용 (p. 90)• 사용자의 CMKs 비활성화 또는 삭제 방지 (p. 91)

사용자가 CMKs 콘솔에서 AWS KMS를 볼 수 있도록 허용다음 IAM 정책은 사용자가 AWS KMS 콘솔에 읽기 전용으로 액세스할 수 있도록 허용합니다. 이러한 권한이있는 사용자는 CMKs 계정의 모든 AWS를 볼 수 있지만 CMKs를 생성하거나 변경할 수는 없습니다.

관리형 키CMKs 및 고객 관리형 키AWS 페이지에서 를 보려면 보안 주체가 kms:ListKeys 및 kms:ListAliases권한을 요구합니다.https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html 나머지 권한(특히 kms:DescribeKey)은 CMK 세부 정보 페이지에서 선택적 CMK 테이블 열과 데이터를 보는 데 필요합니다. 오류 없이 기본 보기에 키 정책을 표시하려면 iam:ListUsers 및 iam:ListRoles 권한이 필요합니다. 사용자 지정 키 스토어 페이지에서 데이터를 보려면 보안 주체는 kms:DescribeCustomKeyStoresCMKs 권한도필요합니다.https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html

사용자의 콘솔 액세스를 특정 CMKs로 제한하면 콘솔에 표시되지 않는 각 CMK에 대한 오류가 표시됩니다.

이 정책에는 두 가지 정책 설명이 포함되어 있습니다. 첫 번째 정책 설명의 Resource 요소는 예제 CMKs 계정의 모든 리전에 있는 모든 AWS에 대해 지정된 권한을 허용합니다. 콘솔은 보안 주체 계정의 AWS KMS만표시하므로 콘솔 뷰어에는 추가 액세스 권한이 필요하지 않습니다.CMKs 이는 다른 CMKs 계정에서 AWS를 볼 수 있는 권한이 있는 경우에도 마찬가지입니다. 나머지 AWS KMS 및 IAM 권한은 특정 "Resource":"*"에 적용되지 않기 때문에 CMK 요소가 필요합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadOnlyAccessForAllCMKsInAccount", "Effect": "Allow", "Action": [ "kms:GetPublicKey", "kms:GetKeyRotationStatus", "kms:GetKeyPolicy", "kms:DescribeKey", "kms:ListKeyPolicies", "kms:ListResourceTags" ], "Resource": "arn:aws:kms:*:111122223333:key/*" }, { "Sid": "ReadOnlyAccessForOperationsWithNoCMK", "Effect": "Allow", "Action": [ "kms:ListKeys", "kms:ListAliases", "iam:ListRoles", "iam:ListUsers"

88

Page 97: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드고객 관리형 정책 예

], "Resource": "*" } ]}

사용자가 CMKs을 생성하도록 허용다음 IAM 정책은 사용자가 CMKs을 생성하도록 허용합니다. 작업은 특정 Resource 리소스(* 또는 별칭)를사용하지 않기 때문에 CreateKey 요소의 값은 AWS KMS입니다.CMKs

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*" }}

키를 생성하는 보안 주체에게는 관련 권한이 필요할 수 있습니다.

• kms:PutKeyPolicy — 권한이 있는 보안 주체는 kms:CreateKey에 대한 초기 키 정책을 설정할 수 있습니다.CMK 그러나 CreateKey 호출자는 CMK의 키 정책을 변경할 수 있는 kms:PutKeyPolicy 권한이 있어야하며, 그렇지 않은 경우 권장되지 않는 BypassPolicyLockoutSafetyCheck의 CreateKey 파라미터를 지정해야 합니다. 호출자는 CreateKey 정책에서 kms:PutKeyPolicy에 대한 CMK 권한을 얻거나 생성 중인 IAM의 키 정책에 이 권한을 포함할 수 있습니다.CMK

• kms:TagResource — 작업 중에 CMK에 태그를 추가하려면 CreateKey 호출자에게 CreateKey 정책에kms:TagResource 권한이 있어야 합니다.IAM 새 CMK의 키 정책에 이 권한을 포함시키는 것은 충분하지않습니다. 그러나 CreateKey 호출자가 초기 키 정책에 kms:TagResource를 포함하는 경우 CMK이 생성된 후 별도의 호출에서 태그를 추가할 수 있습니다.

• kms:CreateAlias 콘솔에서 —를 생성하는 CMK 보안 주체에게 CMK 및 별칭에 대한 AWSKMSkms:CreateAlias 권한이 있어야 합니다. 콘솔은 1 ~ CreateKey 및 1 ~ CreateAlias의 두 번의 호출을 수행합니다. 정책에서 별칭 권한을 제공해야 합니다.IAM 키 정책 또는 CMK 정책에 IAM 권한을 제공할 수 있습니다. 자세한 내용은 별칭에 대한 액세스 제어 (p. 58) 단원을 참조하십시오.

외에도 다음 kms:CreateKey 정책은 IAM 계정의 모든 kms:TagResource에 대한 CMKs 권한과 계정이 속한 모든 별칭에 대한 AWS 권한을 제공합니다.kms:CreateAlias 또한 IAM 정책에서만 제공할 수 있는 몇가지 유용한 읽기 전용 권한도 포함되어 있습니다.

이 IAM 정책에는 kms:PutKeyPolicy 권한 또는 키 정책에서 설정할 수 있는 다른 권한은 포함되지 않습니다. 모범 사례는 하나의 (p. 83)에만 적용되는 키 정책에서 이러한 권한을 설정하는 것입니다.CMK

{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMPermissionsForParticularCMKs", "Effect": "Allow", "Action": { "kms:TagResource" }, "Resource": "arn:aws:kms:*:111122223333:key/*" }, { "Sid": "IAMPermissionsForParticularAliases", "Effect": "Allow", "Action": { "kms:CreateAlias"

89

Page 98: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드고객 관리형 정책 예

}, "Resource": "arn:aws:kms:*:111122223333:alias/*" }, { "Sid": "IAMPermissionsForAllCMKs", "Effect": "Allow", "Action": [ "kms:CreateKey", "kms:ListKeys", "kms:ListAliases" ], "Resource": "*" } ]}

사용자가 특정 AWS 계정의 CMK로 암호화와 해독을 수행하도록허용다음 IAM 정책은 사용자가 CMK 계정 AWS의 모든 111122223333로 데이터를 암호화하고 해독할 수 있도록허용합니다.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt" ], "Resource": "arn:aws:kms:*:111122223333:key/*" }}

사용자가 특정 CMK 계정 및 리전에서 AWS로 암호화 및 해독하도록 허용다음 IAM 정책은 사용자가 CMK 리전의 AWS 계정 111122223333에 있는 미국 서부(오레곤)로 데이터를 암호화하고 해독할 수 있도록 허용합니다.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-west-2:111122223333:key/*" ] }}

사용자가 특정 CMKs를 사용하여 암호화 및 해독하도록 허용다음 IAM 정책은 사용자가 CMKs 요소에 지정된 두 개의 Resource를 사용하여 데이터를 암호화하고 해독할 수 있도록 허용합니다. 정책 명령문에서 CMK를 지정할 때는 IAM의 키 ARN (p. 12)을 사용해야 합니다.CMK

90

Page 99: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드에 대한 교차 계정 액세스 허용CMK

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321" ] }}

사용자의 CMKs 비활성화 또는 삭제 방지다음 IAM 정책은 다른 CMKs 정책이나 키 정책에서 이러한 권한을 허용하는 경우에도 사용자가 IAM를 비활성화하거나 삭제하지 못하도록 합니다. 권한을 명시적으로 거부하는 정책이 동일한 권한을 명시적으로 허용하는 정책을 비롯한 다른 모든 정책을 무시합니다. 자세한 정보는 키 액세스 문제 해결 (p. 144) 단원을 참조하십시오.

{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": [ "kms:DisableKey", "kms:ScheduleKeyDeletion" ], "Resource": "*" }}

다른 계정의 사용자가 CMK를 사용하도록 허용한 IAM 계정의 AWS 사용자 또는 역할이 다른 고객 마스터 키 계정의 CMK(AWS)를 사용하도록 허용할 수있습니다. 를 생성하거나 기존 CMK에 대한 권한을 변경할 때 이러한 권한을 추가할 수 있습니다.CMK

Warning

보안 주체에 CMKs를 사용할 수 있는 권한을 부여하지 않도록 주의하십시오. 가능하면 최소 권한 원칙을 따르십시오. 사용자에게 필요한 작업에만 필요한 CMKs에 대한 액세스 권한을 부여합니다.또한 익숙하지 않은 CMK, 특히 다른 계정의 CMK를 사용할 때는 주의해야 합니다. 악의적인 사용자가 CMK를 사용하여 사용자 또는 사용자 계정에 대한 정보를 가져올 수 있는 권한을 부여할 수 있습니다.계정의 리소스를 보호하기 위한 정책 사용에 대한 자세한 내용은 정책의 모범 사례IAM (p. 83) 단원을 참조하십시오.

다른 계정의 사용자 및 역할에 CMK 사용 권한을 부여하려면 다음 두 가지 유형의 정책을 사용해야 합니다.

• 에 대한 키 정책은 외부 계정(또는 외부 계정의 사용자 및 역할)에 CMK를 사용할 수 있는 권한을 부여해야합니다.CMK 키 정책은 CMK를 소유하는 계정에 있습니다.

• 외부 계정의 IAM 정책은 키 정책 권한을 사용자 및 역할에 위임해야 합니다. 이러한 정책은 외부 계정에서설정되고 해당 계정의 사용자 및 역할에 권한을 부여합니다.

91

Page 100: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드단계 1: 로컬 계정에서 키 정책 문 추가

키 정책은 누가 에 액세스할 수 있는CMK지 결정합니다. 정책은 누가 IAM에 액세스할 수 있는지를 결정합니다.CMK 키 정책과 IAM 정책은 그대로는 충분하지 않으며, 둘 다 변경해야 합니다.

키 정책을 편집하려면 의 (p. 80)정책 보기AWS Management 콘솔를 사용하거나 CreateKey 또는 작업을 사용하면 됩니다.PutKeyPolicy 생성 시 키 정책 설정에 대한 도움말은 CMK 단원을 참조하십시오.다른 계정에서 사용할 수 있는 CMKs 생성 (p. 94)

IAM 정책 편집에 대한 도움말은 AWS KMS에서 IAM 정책 사용 (p. 82) 단원을 참조하십시오.

키 정책과 IAM 정책이 함께 작동하여 다른 계정에서 CMK 사용을 허용하는 방법을 보여주는 예는 예 2: 사용자가 다른 CMK 계정에서 AWS를 사용할 권한이 있는 역할을 수임 (p. 147) 단원을 참조하십시오.

로그AWS KMS에서 CMK에 대한 교차 계정 작업을 볼 수 있습니다.AWS CloudTrail (p. 181) 다른 계정에서 CMKs를 사용하는 작업은 호출자의 계정과 CMK 소유자의 계정 모두에 로그인됩니다.

주제• 단계 1: 로컬 계정에서 키 정책 문 추가 (p. 92)• 단계 2: 외부 계정에서 IAM 정책 추가 (p. 93)• 다른 계정에서 사용할 수 있는 CMKs 생성 (p. 94)• 서비스에 외부 CMKs 사용AWS (p. 96)

단계 1: 로컬 계정에서 키 정책 문 추가의 키 정책은 누가 CMK에 액세스할 수 있고 어떤 작업을 수행할 수 있는지에 대한 주요 결정 요인입니다.CMK 키 정책은 항상 CMK를 소유하는 계정에 있습니다. IAM 정책과 달리, 키 정책은 리소스를 지정하지않습니다. 리소스는 키 정책과 연결된 CMK입니다.

를 사용할 수 있는 외부 계정 권한을 부여하려면 외부 계정을 지정하는 문을 키 정책에 추가합니다.CMK 키정책의 Principal 요소에 외부 계정의 Amazon 리소스 이름(ARN)을 입력합니다.

키 정책에서 외부 계정을 지정하면 외부 계정의 IAM 관리자는 IAM 정책을 사용하여 해당 권한을 외부 계정의 사용자 및 역할에게 위임할 수 있습니다. 또한 키 정책에 지정된 작업 중 어떤 작업을 사용자 및 역할이 수행할 수 있는지도 결정할 수 있습니다.

예를 들어 444455556666 계정이 111122223333 계정의 대칭 CMK를 사용하도록 허용하려 한다고 가정합니다. 이렇게 하려면 다음 예제와 같은 정책 설명을 계정 111122223333의 CMK에 대한 키 정책에 추가합니다. 이 정책 문은 외부 계정인 444455556666에게 대칭 CMK를 위한 암호화 작업에서 CMKs를 사용할 수 있는 권한을 부여합니다.

{ "Sid": "Allow an external account to use this CMK", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::444455556666:root" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*"}

외부 계정에게 권한을 부여하는 대신, 키 정책에서 특정 외부 사용자 및 역할을 지정할 수 있습니다. 하지만이러한 사용자 및 역할은 외부 계정의 CMK 관리자가 적절한 IAM 정책을 해당 자격 증명에 연결할 때까지

92

Page 101: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드단계 2: 외부 계정에서 IAM 정책 추가

IAM를 사용할 수 없습니다. IAM 정책은 키 정책에 지정된 외부 사용자 및 역할의 일부 또는 전부에게 권한을부여할 수 있습니다. 그리고 이 정책은 키 정책에 지정된 작업의 일부 또는 전부를 허용할 수 있습니다.

키 정책에서 자격 증명을 지정하면 외부 계정의 IAM 관리자가 제공할 수 있는 권한이 제한됩니다. 하지만 이렇게 하면 두 계정의 정책 관리가 더 복잡해집니다. 예를 들어, 사용자 또는 역할을 추가해야 한다고 가정합니다. 를 소유한 계정의 키 정책에 해당 자격 증명을 추가하고 자격 증명의 계정에서 CMK 정책을 생성해야합니다.IAM

키 정책에서 특정 외부 사용자 또는 역할을 지정하려면 Principal 요소에 외부 계정의 사용자 또는 역할의Amazon 리소스 이름(ARN)을 입력합니다.

예를 들어 다음 예제 키 정책 문은 444455556666 계정의 ExampleRole 및 ExampleUser가 111122223333계정의 CMK를 사용하도록 허용합니다. 이 키 정책 문은 외부 계정인 444455556666에게 대칭 CMK를 위한암호화 작업에서 CMKs를 사용할 수 있는 권한을 부여합니다.

{ "Sid": "Allow an external account to use this CMK", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::444455556666:role/ExampleRole", "arn:aws:iam::444455556666:user/ExampleUser" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*"}

Note

조건을 사용하여 키 정책을 제한하는 경우를 제외하고, 권한을 허용하는 키 정책 문에 보안 주체를별표(*)로 설정하지 마시기 바랍니다. 별표는 다른 정책문에서 명백하게 거부한 경우를 제외하고 모든 AWS 계정 내 모든 자격 증명에게 CMK를 사용할 수 있도록 허가합니다. 다른 AWS 계정의 사용자는 본인의 계정에서 CMK를 사용할 수 있는 해당 IAM 허가만 있으면 됩니다.

또한 외부 계정에게 어떤 권한을 부여할지도 결정해야 합니다. 에 대한 권한 목록은 CMKs 단원을 참조하십시오.AWS KMS API 권한: 조치 및 리소스 참조 (p. 96)

외부 계정에게 CMK암호화 작업에서 (p. 11)를 사용할 수 있는 권한을 부여하고 CMK와 통합된 AWS 서비스와 함께 AWS KMS를 사용할 수 있습니다. 이렇게 하려면 AWS Management 콘솔의 Key Users(키 사용자)섹션을 사용합니다. 자세한 내용은 다른 계정에서 사용할 수 있는 CMKs 생성 (p. 94) 단원을 참조하십시오.

키 정책에서 기타 권한을 지정하려면 키 정책 문서를 편집합니다. 예를 들어 암호화 해제할 수 있지만 암호화할 수 없는 권한을 부여하거나 CMK를 볼 수 있지만 사용할 수 없는 권한을 부여해야 할 수 있습니다. 키 정책문서를 편집하려면 의 (p. 80)정책 보기AWS Management 콘솔 또는 CreateKey 또는 PutKeyPolicy 작업을 사용하면 됩니다.

단계 2: 외부 계정에서 IAM 정책 추가를 소유하는 계정의 키 정책은 권한의 유효 범위를 설정합니다.CMK 그러나 권한을 위임하는 CMK 정책을 연결하거나 권한 부여를 사용하여 IAM에 대한 액세스를 관리할 때까지 외부 계정의 사용자와 역할은 CMK을사용할 수 없습니다. IAM 정책은 외부 계정에서 설정됩니다.

93

Page 102: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드다른 계정에서 사용할 수 있는 CMKs 생성

키 정책이 외부 계정에게 권한을 부여하는 경우 계정의 어떠한 사용자 또는 역할에든 IAM 정책을 연결할 수있습니다. 키 정책이 지정된 사용자 또는 역할에게 권한을 부여하는 경우 IAM 정책은 지정된 사용자 및 역할의 일부 또는 전부에게만 해당 권한을 부여할 수 있습니다. 정책에서 다른 외부 사용자 또는 역할에 IAM 액세스 권한을 부여하는 경우 이 권한은 영향을 미치지 않습니다.CMK

키 정책은 IAM 정책의 작업도 제한합니다. IAM 정책은 키 정책에 지정된 작업의 일부 또는 전부를 위임할 수있습니다. IAM 정책이 키 정책에 지정되지 않은 작업을 나열하는 경우 해당 권한은 효과가 없습니다.

다음 예제 IAM 정책은 보안 주체가 CMK 계정의 111122223333를 암호화 작업에 사용하도록 허용합니다. 이권한을 444455556666 계정의 사용자 및 역할에게 부여하려면 444455556666 계정의 사용자 또는 역할에정책을 연결합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUseOfCMKInAccount111122223333", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ]}

이 정책에 대한 다음 세부 정보를 참고하십시오.

• 키 정책과 달리, IAM 정책 문에는 Principal 요소가 포함되지 않습니다. IAM 정책에서 보안 주체는 정책이 연결되는 자격 증명입니다.

• 정책의 Resource 요소는 보안 주체가 사용할 수 있는 IAM를 식별합니다.CMK 를 지정하려면 해당 CMK키 ARN을 (p. 12) 요소에 추가합니다.Resource

• 요소에서 CMK를 두 개 이상 지정할 수 있습니다.Resource 그러나 CMKs 요소에 특정 Resource을 지정하지 않으면 의도한 것보다 많은 CMKs에 대한 액세스 권한을 실수로 부여할 수 있습니다.

• 외부 사용자가 CMK와 통합되는 AWS 서비스AWS KMS와 함께 를 사용하도록 허용하려면 키 정책 또는IAM 정책에 권한을 추가해야 할 수 있습니다. 자세한 내용은 서비스에 외부 CMKs 사용AWS (p. 96) 단원을 참조하십시오.

IAM 정책 작업에 대한 자세한 내용은 IAM 정책 사용 (p. 82) 단원을 참조하십시오.

다른 계정에서 사용할 수 있는 CMKs 생성CreateKey 작업을 사용하여 를 생성할 때 CMK 파라미터를 사용하여 외부 계정 또는 외부 사용자 및 역할에Policy 사용 권한을 부여하는 키 정책 (p. 92)을 지정할 수 있습니다.CMK 사용자 및 역할이 키 정책에서지정되더라도, 이러한 권한을 위임하는 외부 계정의 IAM 정책 (p. 93)도 계정의 사용자 및 역할에 추가해야 합니다. 언제든지 PutKeyPolicy 작업을 사용하여 키 정책을 변경할 수 있습니다.

에서 CMK를 생성할 때 해당 키 정책도 생성합니다.AWS Management 콘솔 Key Administrators(키 관리자)및 Key Users(키 사용자) 섹션에서 자격 증명을 선택하면 는 해당 자격 증명에 대한 정책 문을 AWS KMS의키 정책에 추가합니다.CMK

또한 Key Users(키 사용자) 섹션을 사용하여 외부 계정을 키 사용자로 추가할 수도 있습니다.

94

Page 103: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드다른 계정에서 사용할 수 있는 CMKs 생성

외부 계정의 계정 ID를 입력하면 AWS KMS는 두 개의 문을 키 정책에 추가합니다. 이 작업은 키 정책에만 영향을 미칩니다. 외부 계정의 사용자와 역할은 CMK 정책IAM을 연결하여 이러한 권한의 일부 또는 전부를 부여할 때까지 (p. 93)를 사용할 수 없습니다.

첫 번째 정책 문은 외부 계정에게 암호화 작업에서 CMK를 사용할 수 있는 권한을 부여합니다.

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*"}

두 번째 정책 설명은 외부 계정이 CMK에 대한 권한 부여를 생성, 보기 및 취소하도록 허용하지만, 요청이AWS와 통합된 AWS KMS 서비스에서 오는 경우에만 허용합니다. 이러한 권한은 사용자 데이터를 암호화하는 서비스와 같은 다른 AWS 서비스가 CMK를 사용하도록 허용합니다.

이러한 권한은 CMKsAWS 같은 서비스에서 사용자 데이터를 암호화하는 Amazon WorkMail를 위해 설계되었습니다. (p. 385) 이러한 서비스는 일반적으로 권한 부여를 사용하여 사용자를 대신하여 CMK를 사용하는 데 필요한 권한을 얻습니다. 자세한 내용은 서비스에 외부 CMKs 사용AWS (p. 96) 단원을 참조하십시오.

{ "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true"

95

Page 104: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드서비스에 외부 CMKs 사용AWS

} }}

이러한 권한이 필요에 맞지 않으면 콘솔의 정책 보기 (p. 80)에서 또는 PutKeyPolicy 작업을 사용하여 권한을 편집할 수 있습니다. 외부 계정에게 권한을 부여하는 대신, 특정 외부 사용자 및 역할을 지정할 수 있습니다. 정책이 지정하는 작업을 변경할 수 있습니다. 그리고 글로벌 및 AWS KMS 정책 조건을 사용하여 권한을 세부적으로 지정할 수 있습니다.

서비스에 외부 CMKs 사용AWS다른 계정의 사용자에게 CMK와 통합된 서비스에서 AWS KMS를 사용할 권한을 부여할 수 있습니다. 예를들어 외부 계정의 사용자는 CMK를 사용하여 버킷의 객체를 암호화Amazon S3하거나 (p. 375)에 저장하는 보안 암호를 암호화할 수 있습니다.AWS Secrets Manager (p. 366)

키 정책은 외부 사용자 또는 외부 사용자의 계정에 CMK를 사용할 권한을 부여해야 합니다. 추가로, 사용자에게 AWS 서비스를 사용할 수 있는 권한을 부여하는 IAM 정책을 자격 증명에 연결해야 합니다.

또한 특정 서비스에서 사용자는 키 정책에 있는 추가 권한이 필요할 수 있습니다. 예를 들어 CMK에 대한 권한 부여를 생성, 나열 및 취소하는 권한이 필요할 수 있습니다. 또는 특정 IAM 정책이 필요할 수 있습니다. 세부 정보는 해당 서비스에 대한 설명서를 참조하십시오.

마지막으로 통합 서비스에 대한 CMKs에 표시되는 AWS Management 콘솔 목록에는 외부 계정에 CMKs가포함되지 않습니다. 사용자 또는 역할이 해당 키를 사용할 권한을 가지고 있는 경우에도 마찬가지입니다. 외부 계정의 CMK를 사용하려면 사용자가 CMK의 ID 또는 ARN을 입력해야 합니다. 세부 정보는 해당 서비스의 콘솔 설명서를 참조하십시오.

AWS KMS API 권한: 조치 및 리소스 참조작업 및 리소스 테이블은 키 정책 및 IAM 정책에서의 액세스 제어 정의를 돕도록 설계되었습니다. 열에는 다음 정보가 표시됩니다.

• API 연산 및 작업(권한)에는 각각의 AWS KMS API 연산과 이러한 연산을 허용하는 해당 작업(권한)이 나와 있습니다. 정책의 Action 요소에 작업을 지정합니다.

• 정책 유형은 키 정책 또는 IAM 정책에서 권한을 사용할 수 있는지 여부를 나타냅니다. 유형이 키 정책일때는 키 정책에서 명시적으로 권한을 설정할 수 있습니다. 또는 키 정책에 IAM 정책을 사용하는 정책 설명 (p. 67)이 포함되어 있는 경우에는 IAM 정책에서 권한을 설정할 수 있습니다. 유형이 IAM 정책일 때는 IAM 정책에서만 권한을 설정할 수 있습니다.

• 자원 목록을 AWS KMS 권한이 적용되는 리소스. AWS KMS 두 가지 리소스 유형 지원: a 고객 마스터 키(CMK별칭입니다. 핵심 정책에서 Resource 요소는 항상 *, CMK 핵심 정책을 첨부합니다.

다음 값을 사용하여 IAM 정책의 AWS KMS 리소스를 나타냅니다.CMK

리소스가 고객 마스터 키 (CMK), 키 ARN (p. 12). 도움말은 the section called “키 ID 및 ARN 찾기” (p. 37)를 참조하십시오.

arn:AWS_partition_name:kms:AWS_Region:AWS_account_ID:key/key_ID

예: .

arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab별칭

리소스가 별칭인 경우 별칭 ARN (p. 12)을 사용합니다. 별칭 ARN을 가져오려면 ListAliases 작업을 사용합니다.

96

Page 105: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS API 권한 참조

arn:AWS_partition_name:kms:AWS_region:AWS_account_ID:alias/alias_name

예: .

arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias*(별표)

권한이 특정 리소스에 적용되지 않는 경우(CMK 별표(*) ).

IAM 정책에서 AWS KMS 허가, Resource 요소는 모두 AWS KMS 자원(CMKs 및 별칭). 또한Resource 요소가 AWS KMS 권한이 특정 항목에 적용되지 않습니다. CMKs 또는 별칭. 예를 들어 허용 또는 거부 kms:CreateKey 또는 kms:ListKeys 권한을 부여할 때 Resource 요소를 * 또는 계정별 변형(예: arn:AWS_partition_name:kms:AWS_region:AWS_account_ID:*)으로 설정할수 있습니다.

• AWS KMS 조건 키는 연산에 대한 액세스를 제어하는 데 사용할 수 있는 AWS KMS 조건 키를 나열합니다.정책의 Condition 요소에 조건을 지정합니다. 자세한 정보는 AWS KMS 조건 키 (p. 108) 단원을 참조하십시오. 이 열에는 모든 AWS 서비스가 아니라 AWS KMS에서 지원되는 AWS 전역 조건 키도 포함되어있습니다.

AWS KMS API 연산 및 권한

API 연산 및 작업(권한) 정책 유형 리소스(IAM 정책용)

AWS KMS 조건 키

CancelKeyDeletion

kms:CancelKeyDeletion

키 정책 CMK kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

ConnectCustomKeyStore

kms:ConnectCustomKeyStore

IAM 정책 * 없음

IAM 정책(별칭의 경우)

별칭 없음(별칭에 대한 액세스 제어 시)CreateAlias

kms:CreateAlias

이 연산을 사용하려면 호출자가 두 리소스에 대한kms:CreateAlias 권한을 가지고 있어야 합니다.

• 별칭(IAM 정책에서)• The CMK (주요 정책)

자세한 내용은 별칭에 대한 액세스 제어 (p. 58) 단원을 참조하십시오.

주요 정책( CMK)

CMK kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

CreateCustomKeyStore

kms:CreateCustomKeyStore

IAM 정책 * 없음

97

Page 106: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS API 권한 참조

API 연산 및 작업(권한) 정책 유형 리소스(IAM 정책용)

AWS KMS 조건 키

CreateGrant

kms:CreateGrant

키 정책 CMK kms:EncryptionContext: (p. 120)

kms:EncryptionContextKeys (p. 120)

kms:GrantConstraintType (p. 123)

kms:GranteePrincipal (p. 125)

kms:GrantIsForAWSResource (p. 124)

kms:GrantOperations (p. 124)

kms:RetiringPrincipal (p. 128)

kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

CreateKey

kms:CreateKey

IAM 정책 * kms:BypassPolicyLockoutSafetyCheck (p. 110)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

암호화 해제

kms:Decrypt

키 정책 CMK kms:EncryptionAlgorithm (p. 114)

kms:EncryptionContext: (p. 120)

kms:EncryptionContextKeys (p. 120)

kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

98

Page 107: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS API 권한 참조

API 연산 및 작업(권한) 정책 유형 리소스(IAM 정책용)

AWS KMS 조건 키

IAM 정책(별칭의 경우)

별칭 없음(별칭에 대한 액세스 제어 시)DeleteAlias

kms:DeleteAlias

이 연산을 사용하려면 호출자가 두 리소스에 대한kms:DeleteAlias 권한을 가지고 있어야 합니다.

• 별칭(IAM 정책에서)• The CMK (주요 정책)

자세한 내용은 별칭에 대한 액세스 제어 (p. 58) 단원을 참조하십시오.

주요 정책( CMK)

CMK kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

DeleteCustomKeyStore

kms:DeleteCustomKeyStore

IAM 정책 * 없음

DeleteImportedKeyMaterial

kms:DeleteImportedKeyMaterial

키 정책 CMK kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

DescribeCustomKeyStores

kms:DescribeCustomKeyStores

IAM 정책 * 없음

DescribeKey

kms:DescribeKey

키 정책 CMK kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

DisableKey

kms:DisableKey

키 정책 CMK kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

99

Page 108: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS API 권한 참조

API 연산 및 작업(권한) 정책 유형 리소스(IAM 정책용)

AWS KMS 조건 키

DisableKeyRotation

kms:DisableKeyRotation

키 정책 CMK kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

DisconnectCustomKeyStore

kms:DisconnectCustomKeyStore

IAM 정책 * 없음

EnableKey

kms:EnableKey

키 정책 CMK kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

EnableKeyRotation

kms:EnableKeyRotation

키 정책 CMK (대칭만) kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

Encrypt

kms:Encrypt

키 정책 CMK kms:EncryptionAlgorithm (p. 114)

kms:EncryptionContext: (p. 120)

kms:EncryptionContextKeys (p. 120)

kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

100

Page 109: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS API 권한 참조

API 연산 및 작업(권한) 정책 유형 리소스(IAM 정책용)

AWS KMS 조건 키

GenerateDataKey

kms:GenerateDataKey

키 정책 CMK (대칭만) kms:EncryptionAlgorithm (p. 114)

kms:EncryptionContext: (p. 120)

kms:EncryptionContextKeys (p. 120)

kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

GenerateDataKeyPair

kms:GenerateDataKeyPair

키 정책 CMK (대칭만)

GenerateDataKeyPair및GenerateDataKeyPairWithoutPlaintext는대칭 CMK로 보호되는 비대칭데이터 키 페어를 생성합니다.

kms:DataKeyPairSpec (p. 114)

kms:EncryptionAlgorithm (p. 114)

kms:EncryptionContext: (p. 120)

kms:EncryptionContextKeys (p. 120)

kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

GenerateDataKeyPairWithoutPlaintext

kms:GenerateDataKeyPairWithoutPlaintext

키 정책 CMK (대칭만)

GenerateDataKeyPair및GenerateDataKeyPairWithoutPlaintext는대칭 CMK로 보호되는 비대칭데이터 키 페어를 생성합니다.

kms:DataKeyPairSpec (p. 114)

kms:EncryptionAlgorithm (p. 114)

kms:EncryptionContext: (p. 120)

kms:EncryptionContextKeys (p. 120)

kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

101

Page 110: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS API 권한 참조

API 연산 및 작업(권한) 정책 유형 리소스(IAM 정책용)

AWS KMS 조건 키

GenerateDataKeyWithoutPlaintext

kms:GenerateDataKeyWithoutPlaintext

키 정책 CMK (대칭만) kms:EncryptionAlgorithm (p. 114)

kms:EncryptionContext: (p. 120)

kms:EncryptionContextKeys (p. 120)

kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

GenerateRandom

kms:GenerateRandom

IAM 정책 * 없음

GetKeyPolicy

kms:GetKeyPolicy

키 정책 CMK kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

GetKeyRotationStatus

kms:GetKeyRotationStatus

키 정책 CMK (대칭만) kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

GetParametersForImport

kms:GetParametersForImport

키 정책 CMK (대칭만) kms:WrappingAlgorithm (p. 133)

kms:WrappingKeySpec (p. 134)

kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

102

Page 111: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS API 권한 참조

API 연산 및 작업(권한) 정책 유형 리소스(IAM 정책용)

AWS KMS 조건 키

GetPublicKey

kms:GetPublicKey

키 정책 CMK (그림 메트릭만)

kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

ImportKeyMaterial

kms:ImportKeyMaterial

키 정책 CMK (대칭만) kms:ExpirationModel (p. 122)

kms:ValidTo (p. 129)

kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

ListAliases

kms:ListAliases

IAM 정책 * 없음

ListGrants

kms:ListGrants

키 정책 CMK kms:GrantIsForAWSResource (p. 124)

kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

ListKeyPolicies

kms:ListKeyPolicies

키 정책 CMK kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

ListKeys

kms:ListKeys

IAM 정책 * 없음

103

Page 112: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS API 권한 참조

API 연산 및 작업(권한) 정책 유형 리소스(IAM 정책용)

AWS KMS 조건 키

ListResourceTags

kms:ListResourceTags

키 정책 CMK kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

ListRetirableGrants

kms:ListRetirableGrants

IAM 정책 * 없음

PutKeyPolicy

kms:PutKeyPolicy

키 정책 CMK kms:BypassPolicyLockoutSafetyCheck (p. 110)

kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

ReEncrypt

kms:ReEncryptFrom

kms:ReEncryptTo

이 작업을 사용하려면 발신자가 2에 대한 권한이 필요합니다.CMKs:

• kms:ReEncryptFrom on theCMK 해독하는 데 사용됨

• kms:ReEncryptTo on theCMK 암호화를 위해

키 정책 CMK kms:EncryptionAlgorithm (p. 114)

kms:EncryptionContext: (p. 120)

kms:EncryptionContextKeys (p. 120)

kms:ReEncryptOnSameKey (p. 128)

kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

RetireGrant

권한 부여 사용을 중지하는 권한이 권한 부여에 지정됩니다.정책에서 이 작업에 대한 액세스를 제어할 수 없습니다. 자세한 내용은 은퇴자 in the AWSKey Management Service APIReference.

해당 사항 없음 해당 사항 없음 해당 사항 없음

104

Page 113: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS API 권한 참조

API 연산 및 작업(권한) 정책 유형 리소스(IAM 정책용)

AWS KMS 조건 키

RevokeGrant

kms:RevokeGrant

키 정책 CMK kms:GrantIsForAWSResource (p. 124)

kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

ScheduleKeyDeletion

kms:ScheduleKeyDeletion

키 정책 CMK kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

Sign

kms:Sign

키 정책 CMK (그림 메트릭만)

kms:MessageType (p. 127)

kms:SigningAlgorithm (p. 129)

kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

TagResource()

kms:TagResource

키 정책 CMK aws:요청 태그 (AWS 글로벌 조건키)

aws:태그 키 (AWS 글로벌 조건키)

kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

105

Page 114: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS API 권한 참조

API 연산 및 작업(권한) 정책 유형 리소스(IAM 정책용)

AWS KMS 조건 키

UntagResource

kms:UntagResource

키 정책 CMK aws:요청 태그 (AWS 글로벌 조건키)

aws:태그 키 (AWS 글로벌 조건키)

kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

IAM 정책(별칭의 경우)

별칭 없음(별칭에 대한 액세스 제어 시)UpdateAlias

kms:UpdateAlias

이 연산을 사용하려면 호출자가 세 가지 리소스에 대한kms:UpdateAlias 권한을 가지고 있어야 합니다.

• 별칭• 현재 연관된 CMK• 연관된 CMK

자세한 내용은 별칭에 대한 액세스 제어 (p. 58) 단원을 참조하십시오.

주요 정책( CMKs)

CMK kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

UpdateCustomKeyStore

kms:UpdateCustomKeyStore

IAM 정책 * 없음

UpdateKeyDescription

kms:UpdateKeyDescription

키 정책 CMK kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

106

Page 115: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드정책 조건 사용

API 연산 및 작업(권한) 정책 유형 리소스(IAM 정책용)

AWS KMS 조건 키

확인

kms:Verify

키 정책 CMK (그림 메트릭만)

kms:MessageType (p. 127)

kms:SigningAlgorithm (p. 129)

kms:CallerAccount (p. 111)

kms:CustomerMasterKeySpec (p. 111)

kms:CustomerMasterKeyUsage (p. 112)

kms:KeyOrigin (p. 126)

kms:ViaService (p. 130)

AWS KMS의 정책 조건 사용키 정책 및 AWS Identity and Access Management 정책(IAM 정책 (p. 82))에 AWS KMS 리소스에 대한 액세스를 제어하는 조건을 지정할 수 있습니다. 이 정책 설명은 조건이 true일 때만 유효합니다. 예를 들어, 특정 날짜 이후에만 정책 설명이 적용되기를 원할 수 있습니다. 또는 API 요청에 특정 값이 있는 경우에만 정책설명이 액세스를 제어하기를 원할 수 있습니다.

조건을 지정하려면 조건 정책 연산자Condition와 함께 정책 설명의 요소에 미리 정의된 IAM조건 키를 사용합니다. 일부 조건 키는AWS 에 전체적으로 적용되고 일부는AWS KMS 에만 적용됩니다.

주제• AWS 전역 조건 키 (p. 107)• AWS KMS 조건 키 (p. 108)• AWS KMS에 대한 조건 키AWS Nitro 엔클레이브 (p. 134)

AWS 전역 조건 키AWS는 액세스 제어를 위해 IAM을 사용하는 모든 AWS 서비스에 대해 정책 조건 키 집합인 전역 조건 키를정의합니다. AWS KMS 키 정책 및 IAM 정책에서 전역 조건 키를 사용할 수 있습니다. 예를 들어, 요청의 보안 주체가 조건 키 값의 Amazon 리소스 이름(ARN)으로 표시되는 경우에만 aws:PrincipalArn 조건 키를 사용하여 고객 마스터 키(CMK)에 대한 액세스를 허용할 수 있습니다.

AWS KMS는 다음을 제외한 모든 AWS 전역 조건 키를 지원합니다.

• aws:ResourceTag• aws:SourceAccount• aws:SourceArn

사용 가능한 요청 유형을 포함하여 AWS 전역 조건 키에 대한 자세한 내용은 AWS의 전역 조건 컨텍스트키를 참조하십시오.IAM 사용 설명서 정책에서 전역 조건 키를 사용하는 예는 IAM의 요청에 대한 액세스 제어 및 태그 키 제어를 참조하십시오.IAM 사용 설명서

다음 주제에서는 IP 주소 및 VPC 엔드포인트를 기반으로 조건 키를 사용하기 위한 특별한 지침을 제공합니다.

주제

107

Page 116: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

• AWS KMS 권한으로 정책에서 IP 주소 조건 사용 (p. 108)• AWS KMS 권한으로 정책에서 VPC 엔드포인트 조건 사용 (p. 108)

AWS KMS 권한으로 정책에서 IP 주소 조건 사용AWS KMS를 사용하여 통합 AWS 서비스 (p. 341)에서 데이터를 보호할 수 있습니다. 하지만 AWS KMS에 대한 액세스를 허용하거나 거부하는 동일한 정책 설명에 aws:SourceIp 조건 키 또는 IP 주소 조건 연산자를 지정할 때 주의하십시오. 예를 들어 AWS의 정책은 다음과 같습니다. 소스 IP를 기반으로 AWS에 대한액세스 거부는 AWS 작업을 지정된 IP 범위의 요청으로 제한합니다.

다음 시나리오를 고려하십시오.

1. :AWS에 표시된 것과 같은 정책을 연결합니다. 소스 IP를 바탕으로 AWS에 대한 액세스 거부.IAMaws:SourceIp 조건 키의 값을 사용자 회사의 IP 주소 범위로 설정합니다. 이 IAM 사용자에게는Amazon EBS, Amazon EC2, AWS KMS 사용을 허용하는 다른 정책이 연결되어 있습니다.

2. 사용자가 암호화된 EBS 볼륨을 EC2 인스턴스에 연결하려고 합니다. 사용자가 모든 관련 서비스를 이용할 권한을 가지고 있음에도 인증 오류로 인해 이 작업은 실패합니다.

볼륨의 암호화된 데이터 키를 해독하라는 AWS KMS에 대한 요청이 Amazon EC2 인프라와 연결된 IP 주소에서 이루어지기 때문에 2단계는 실패합니다. 요청이 성공하려면 원래 사용자의 IP 주소에서 이루어져야 합니다. 1단계의 정책은 지정된 IP 주소 이외에서 이루어진 모든 요청을 명시적으로 거부하기 때문에, EBS 볼륨의 암호화된 데이터 키를 해독할 수 있는 권한이 Amazon EC2에 부여되지 않습니다.

또한 요청이 Amazon VPC 엔드포인트에서 이루어지는 경우 aws:sourceIP 조건 키는 유효하지 않습니다.AWS KMS VPC 엔드포인트 (p. 328)를 포함해 VPC 엔드포인트로 요청을 제한하려면 aws:sourceVpce또는 aws:sourceVpc 조건 키를 사용합니다. 자세한 내용은 Amazon VPC 사용 설명서의 VPC 엔드포인트- 엔드포인트 사용 제어를 참조하십시오.

AWS KMS 권한으로 정책에서 VPC 엔드포인트 조건 사용는 AWS KMSAmazon Virtual Private CloudAmazon VPC (p. 328)로 구동되는 (AWS) 엔드포인트PrivateLink를 지원합니다. VPC에서 요청을 보내거나 VPC 엔드포인트를 사용할 때 키 정책 및 정책에서 다음 전역 조건 키IAM를 사용하여 AWS KMS 리소스에 대한 액세스를 제어할 수 있습니다. 자세한 내용은 정책 설명에 VPC 엔드포인트 사용 (p. 332)을(를) 참조하십시오.

• aws:SourceVpc는 지정된 VPC의 요청으로 액세스를 제한합니다.• aws:SourceVpce는 지정된 VPC 엔드포인트의 요청으로 액세스를 제한합니다.

AWS KMS에 대한 액세스를 허용하거나 거부하는 키 정책 설명에 이러한 조건 키를 사용하면 사용자를 대신하여 CMKs를 사용하는 AWS 서비스에 대한 액세스를 실수로 거부할 수 있습니다.AWS KMS

IP 주소 조건 키 (p. 108) 예제와 같은 상황을 피하도록 주의하십시오. 에 대한 요청을 VPC 또는 VPC 엔드포인트로 제한하면 CMK 또는 AWS KMS 같은 통합 서비스에서 Amazon S3를 호출하지 못할 수도 있습니다.Amazon EBS 원본 요청이 궁극적으로 VPC 또는 VPC 엔드포인트에서 시작된 경우에도 이러한 상황이발생할 수 있습니다.

AWS KMS 조건 키AWS KMS는 키 정책과 IAM 정책에 사용할 수 있는 사전 정의된 조건 키 집합을 추가 제공합니다. AWSKMS에만 해당되는 특정한 조건 키입니다. 예를 들어 kms:EncryptionContext 대칭 ( (p. 16))에 대한 액세스를 제어할 때 AWS KMS 조건 키를 사용하여 특정 고객 마스터 키암호화 컨텍스트CMK를 요구할 수 있습니다.

API 작업 요청에 대한 조건

108

Page 117: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

대부분의 AWS KMS 조건 키는 CMK 작업 요청의 파라미터 값을 기반으로 AWS KMS에 대한 액세스를 제어합니다. 예를 들어, 정책에서 CustomerMasterKeySpeckms: (p. 111)IAM 조건 키를 사용하여 요청의CreateKey 파라미터 값이 인 경우에만 CustomerMasterKeySpecCreateKey 작업의 사용을 허용할 수 있습니다.RSA_4096

이 유형의 조건은 파라미터의 기본값을 사용하는 경우와 같이 요청에 파라미터가 나타나지 않는 경우에도 작동합니다. 예를 들어 kms:CustomerMasterKeySpec (p. 111) 조건 키를 사용하여 CreateKey 파라미터 값이 기본값인 CustomerMasterKeySpec인 경우에만 사용자가 SYMMETRIC_DEFAULT 작업을 사용하도록허용할 수 있습니다. 이 조건은 CustomerMasterKeySpec 파라미터 값이 SYMMETRIC_DEFAULT인 요청과CustomerMasterKeySpec 파라미터가 없는 요청을 허용합니다.

API 작업에 사용되는 CMKs의 조건

일부 AWS KMS 조건 키는 작업에 사용되는 CMK의 속성을 기반으로 작업에 대한 액세스를 제어합니다. 예를 들어 kms:KeyOrigin (p. 126) 조건을 사용하여 의 GenerateDataKey가 인 경우에만 보안 주체가 CMK에대해 Origin을 호출하도록 허용할 수 있습니다.CMKAWS_KMS 이러한 방식으로 조건 키를 사용할 수 있는지확인하려면 조건 키의 설명을 참조하십시오.

작업은 특정 CMK에 대해 승인된 작업인 CMK 리소스 작업이어야 합니다. CMK 리소스 작업을 식별하려면작업 및 리소스 테이블 (p. 97)에서, 해당 작업에 대한 Resources 열에서 CMK 값을 찾습니다.이 유형의조건 키를 특정 CMK 리소스(예: ListKeys)에 대해 권한이 부여되지 않은 작업과 함께 사용하면 조건을 충족할 수 없으므로 권한이 유효하지 않습니다. 작업 권한 부여와 관련된 CMK 리소스는 없으며 ListKeys 속성도 없습니다.CustomerMasterKeySpec

다음 주제는 각 AWS KMS 조건 키를 설명하고, 정책 구문을 보여주는 정책 설명 예제를 포함합니다.

주제• kms:BypassPolicyLockoutSafetyCheck (p. 110)• kms:CallerAccount (p. 111)• kms:CustomerMasterKeySpec (p. 111)• kms:CustomerMasterKeyUsage (p. 112)• kms:DataKeyPairSpec (p. 114)• kms:EncryptionAlgorithm (p. 114)• kms:EncryptionContext: (p. 116)• kms:EncryptionContextKeys (p. 120)• kms:ExpirationModel (p. 122)• kms:GrantConstraintType (p. 123)• kms:GrantIsForAWSResource (p. 124)• kms:GrantOperations (p. 124)• kms:GranteePrincipal (p. 125)• kms:KeyOrigin (p. 126)• kms:MessageType (p. 127)• kms:ReEncryptOnSameKey (p. 128)• kms:RetiringPrincipal (p. 128)• kms:SigningAlgorithm (p. 129)• kms:ValidTo (p. 129)• kms:ViaService (p. 130)• kms:WrappingAlgorithm (p. 133)• kms:WrappingKeySpec (p. 134)

109

Page 118: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

kms:BypassPolicyLockoutSafetyCheck

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:BypassPolicyLockoutSafetyCheck부울 CreateKey

PutKeyPolicy

IAM 정책만 해당

키 정책 및 IAM 정책

조건 키는 요청의 kms:BypassPolicyLockoutSafetyCheck 파라미터 값에 따라 CreateKey 및PutKeyPolicy 작업에 대한 액세스를 제어합니다.BypassPolicyLockoutSafetyCheck

다음 예제 IAM 정책 설명은 CMKs 요청의 BypassPolicyLockoutSafetyCheck 파라미터 값이CreateKey인 경우 사용자가 true. 생성 권한을 거부하여 정책 잠금 안전 점검을 우회하지 못하도록 합니다.

{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "Bool": { "kms:BypassPolicyLockoutSafetyCheck": true } } }}

또한 kms:BypassPolicyLockoutSafetyCheck 정책 또는 키 정책의 IAM 조건 키를 사용하여PutKeyPolicy 작업에 대한 액세스를 제어할 수도 있습니다. 키 정책의 다음 예제 정책 설명은 CMK의 정책을 변경할 때 사용자가 정책 잠금 안전 점검을 우회하지 못하도록 합니다.

명시적 Deny를 사용하는 대신에, 이 정책 설명에서는 Allow와 Null condition operator를 함께 사용하여 요청에 BypassPolicyLockoutSafetyCheck 파라미터가 포함되지 않을 때만 액세스를 허용합니다. 파라미터를 사용하지 않을 경우 기본값은 false입니다. 드물지만 우회가 필요한 경우 이렇게 조금 약한 정책 설명을 재정의할 수 있습니다.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "kms:PutKeyPolicy", "Resource": "*", "Condition": { "Null": { "kms:BypassPolicyLockoutSafetyCheck": true } } }}

다음 사항도 참조하세요.

• kms:CustomerMasterKeySpec (p. 111)• kms:KeyOrigin (p. 126)• kms:CustomerMasterKeyUsage (p. 112)

110

Page 119: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

kms:CallerAccount

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:CallerAccount 문자열 CMK 리소스 작업 Key policies only

이 조건 키를 사용해 IAM 계정 내 모든 자격 증명( AWS사용자와 역할)에 대한 액세스를 허용하거나 거부할 수 있습니다. 키 정책에서 Principal 요소를 이용해 정책 설명이 적용될 자격 증명을 지정합니다.Principal 요소에 대한 구문은 AWS 계정의 모든 자격 증명을 지정하는 방법을 제공하지 않지만 모든Principal 자격 증명을 지정하는 AWS 요소와 이 조건 키를 결합하여 이러한 효과를 얻을 수 있습니다.

이 조건은 키 정책에서만 유효하므로 이 조건을 사용하여 모든 CMK리소스 작업, 즉 특정 CMK를 사용하는모든 AWS KMS 작업에 대한 액세스를 제어할 수 있습니다. CMK 리소스 작업을 식별하려면 작업 및 리소스테이블 (p. 97)에서, 해당 작업에 대한 Resources 열에서 CMK 값을 찾습니다..

예를 들어 다음 정책 설명은 kms:CallerAccount 조건 키를 사용하는 방법을 보여줍니다. 이 정책 설명은 AWS용 CMK 관리형 Amazon EBS의 키 정책에 있습니다. 이 문은 모든 Principal 자격 증명을지정하는 AWS 요소와 kms:CallerAccount 조건 키를 결합해 AWS 계정 111122223333에서 모든 자격 증명에 액세스하도록 효과적으로 허용합니다. 여기에 추가 AWS KMS 조건 키(kms:ViaService)가포함되어 있어, Amazon EBS를 통해 수신되는 요청만 허용하여 권한을 더욱 제한합니다. 자세한 내용은kms:ViaService (p. 130) 항목을 참조하십시오.

{ "Sid": "Allow access through EBS for all principals in the account that are authorized to use EBS", "Effect": "Allow", "Principal": {"AWS": "*"}, "Condition": { "StringEquals": { "kms:CallerAccount": "111122223333", "kms:ViaService": "ec2.us-west-2.amazonaws.com" } }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*"}

kms:CustomerMasterKeySpec

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:CustomerMasterKeySpec문자열 CreateKey

CMK 리소스 작업

IAM 정책

키 정책 및 IAM 정책

조건 키는 작업에 의해 생성되거나 작업에 사용되는 kms:CustomerMasterKeySpec의CustomerMasterKeySpec 속성 값에 따라 작업에 대한 액세스를 제어합니다.CMK

111

Page 120: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

정책에서 이 조건 키를 사용하여 IAM 요청의 CreateKey 파라미터 값에 따라 CustomerMasterKeySpec 작업에 대한 액세스를 제어할 수 있습니다.CreateKey 예를 들어 이 조건을 사용하여 사용자가 대칭 CMKs만 생성하거나 RSA 키가 있는 CMKs만 생성하도록 허용할 수 있습니다.

다음 예제 IAM 정책 문은 kms:CustomerMasterKeySpec 조건 키를 사용하여 요청의 CMK가CustomerMasterKeySpec인 경우에만 보안 주체가 RSA_4096를 생성하도록 허용합니다.

{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:CustomerMasterKeySpec": "RSA_4096" } }}

또한 kms:CustomerMasterKeySpec 조건 키를 사용하여 작업에 사용되는 CMK의CustomerMasterKeySpec 속성을 기반으로 CMK를 사용하거나 관리하는 작업에 대한 액세스를 제어할 수있습니다.작업은 특정 CMK에 대해 승인된 작업인 CMK 리소스 작업이어야 합니다. CMK 리소스 작업을 식별하려면 작업 및 리소스 테이블 (p. 97)에서, 해당 작업에 대한 Resources 열에서 CMK 값을 찾습니다.

예를 들어 다음 IAM 정책은 보안 주체가 지정된 CMK 리소스 작업을 수행하도록 허용하지만 계정의 대칭CMKs에 대해서만 허용합니다.

{ "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:DescribeKey" ], "Resource": { "arn:aws:kms:us-west-2:111122223333:key/*" }, "Condition": { "StringEquals": { "kms:CustomerMasterKeySpec": "SYMMETRIC_DEFAULT" } }}

다음 사항도 참조하세요.

• kms:BypassPolicyLockoutSafetyCheck (p. 110)• kms:CustomerMasterKeyUsage (p. 112)• kms:DataKeyPairSpec (p. 114)• kms:KeyOrigin (p. 126)

kms:CustomerMasterKeyUsage

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:CustomerMasterKeyUsage문자열 CreateKey IAM 정책

112

Page 121: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

AWS KMS 조건 키 조건 유형 API 작업 정책 유형CMK 리소스 작업 키 정책 및 IAM 정책

조건 키는 작업에 의해 생성되거나 작업에 사용되는 kms:CustomerMasterKeyUsage의 KeyUsage 속성값에 따라 작업에 대한 액세스를 제어합니다.CMK

이 조건 키를 사용하여 요청의 CreateKey 파라미터 값에 따라 KeyUsage 작업에 대한 액세스를 제어할 수 있습니다. KeyUsage 유효값은 ENCRYPT_DECRYPT 및 SIGN_VERIFY입니다.

예를 들어 CMK이 KeyUsage인 경우에만 사용자가 ENCRYPT_DECRYPT을 생성하도록 허용하거나KeyUsage이 SIGN_VERIFY인 경우 사용자 권한을 거부할 수 있습니다.

다음 예제 IAM 정책 문은 kms:CustomerMasterKeyUsage 조건 키를 사용하여 CMK가 KeyUsage인 경우에만 사용자가 ENCRYPT_DECRYPT를 생성하도록 허용합니다.

{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:CustomerMasterKeyUsage": "ENCRYPT_DECRYPT" } }}

또한 kms:CustomerMasterKeyUsage 조건 키를 사용하여 작업에 사용되는 CMK의 KeyUsage 속성을기반으로 CMK를 사용하거나 관리하는 작업에 대한 액세스를 제어할 수 있습니다.작업은 특정 CMK에 대해 승인된 작업인 CMK 리소스 작업이어야 합니다. CMK 리소스 작업을 식별하려면 작업 및 리소스 테이블 (p. 97)에서, 해당 작업에 대한 Resources 열에서 CMK 값을 찾습니다.

예를 들어, 다음 IAM 정책은 보안 주체가 지정된 CMK 리소스 작업을 수행하도록 허용하지만, 서명 및 확인에 사용되는 계정의 CMKs에 대해서만 허용합니다.

{ "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:DescribeKey", "kms:GetPublicKey", "kms:ScheduleKeyDeletion" ], "Resource": { "arn:aws:kms:us-west-2:111122223333:key/*" }, "Condition": { "StringEquals": { "kms:CustomerMasterKeyUsage": "SIGN_VERIFY" } }}

다음 사항도 참조하세요.

• kms:BypassPolicyLockoutSafetyCheck (p. 110)• kms:CustomerMasterKeySpec (p. 111)• kms:KeyOrigin (p. 126)

113

Page 122: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

kms:DataKeyPairSpec

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:DataKeySpec 문자열 GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

키 정책 및 IAM 정책

이 조건 키를 사용하여 요청의 파라미터 값에 따라 GenerateDataKeyPair 및GenerateDataKeyPairWithoutPlaintext 작업에 대한 액세스를 제어할 수 있습니다.KeyPairSpec 예를 들어사용자가 특정 유형의 데이터 키 페어만 생성하도록 허용할 수 있습니다.

다음 예제 키 정책 문은 kms:DataKeyPairSpec 조건 키를 사용하여 사용자가 CMK를 사용하여 RSA 데이터 키 페어만 생성하도록 허용합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": [ "kms:GenerateDataKeyPair", "kms:GenerateDataKeyPairWithoutPlaintext" ], "Resource": "*", "Condition": { "StringLike": { "kms:DataKeyPairSpec": "RSA*" } }}

다음 사항도 참조하세요.

• kms:CustomerMasterKeySpec (p. 111)• the section called “kms:EncryptionAlgorithm” (p. 114)• the section called “kms:EncryptionContext:” (p. 116)• the section called “kms:EncryptionContextKeys” (p. 120)

kms:EncryptionAlgorithm

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:EncryptionAlgorithm문자열 Decrypt

Encrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

ReEncrypt

키 정책 및 IAM 정책

114

Page 123: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

kms:EncryptionAlgorithm 조건 키를 사용하여 작업에 사용되는 암호화 알고리즘을 기반으로 암호화 작업에 대한 액세스를 제어할 수 있습니다. Encrypt, Decrypt 및 ReEncrypt 작업의 경우 요청의EncryptionAlgorithm 파라미터 값에 따라 액세스를 제어합니다. 데이터 키 및 데이터 키 페어를 생성하는 작업의 경우 데이터 키를 암호화하는 데 사용되는 암호화 알고리즘을 기반으로 액세스를 제어합니다.

이 조건 키는 AWS KMS 외부에서 비대칭 CMK 페어의 퍼블릭 키를 사용하여 암호화하는 것과 같이 AWSKMS 외부에서 수행되는 작업에는 영향을 주지 않습니다.

EncryptionAlgorithm 요청의 파라미터

사용자가 CMK에서 특정 암호화 알고리즘만 사용하도록 허용하려면 Deny 효과 및 StringNotEquals조건 연산자가 포함된 정책 설명을 사용합니다. 예를 들어 다음 예제 키 정책 문은 요청의 암호화 알고리즘이 ExampleRole이 아닌 한 CMK 역할을 수임할 수 있는 보안 주체가 지정된 암호화 작업에서 이 대칭RSAES_OAEP_SHA_256를 사용하는 것을 금지합니다.

사용자가 특정 암호화 알고리즘을 사용하도록 허용하는 정책 문과 달리, 이와 같은 이중 부정을 가진 정책 문은 이 CMK에 대한 다른 정책 및 권한 부여를 통해 이 역할이 다른 암호화 알고리즘을 사용할 수 없도록 합니다. 이 정책 설명의 Deny는 IAM 효과가 있는 모든 키 정책 또는 Allow 정책보다 우선하며, 이 CMK 및 해당보안 주체에 대한 모든 권한 부여보다 우선합니다.

{ "Sid": "Allow only one encryption algorithm with this asymmetric CMK", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*" ], "Resource": "*", "Condition": { "StringNotEquals": { "kms:EncryptionAlgorithm": "RSAES_OAEP_SHA_256" } }}

작업에 사용되는 암호화 알고리즘

kms:EncryptionAlgorithm 조건 키를 사용하여 데이터 키 및 데이터 키 페어를 생성하는 작업에 대한 액세스도 제어할 수 있습니다. 이러한 작업은 대칭 CMKs 및 SYMMETRIC_DEFAULT 알고리즘만 사용합니다.

예를 들어 다음 IAM 정책은 보안 주체를 대칭 암호화로 제한합니다. 요청에 지정되거나 작업에 사용된 암호화 알고리즘이 SYMMETRIC_DEFAULT가 아닌 한 예제 계정에서 암호화 작업에 대한 액세스를 거부합니다.CMK 비대칭 또는 비대칭 암호화 알고리즘을 사용하여 데이터 키를 암호화하거나 데이터 키 페어의 프라이빗 키를 암호화할 수 없기 때문에 GenerateDataKey, GenerateDataKeyWithoutPlaintext, ,GenerateDataKeyPair, GenerateDataKeyPairWithoutPlaintext를 추가하면 즉각적인 실질적인 효과가 없습니다.CMK

{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*",

115

Page 124: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

"kms:GenerateDataKeyPair*" ], "Resource": { "arn:aws:kms:us-west-2:111122223333:key/*" }, "Condition": { "StringNotEquals": { "kms:EncryptionAlgorithm": "SYMMETRIC_DEFAULT" } }}

다음 사항도 참조하세요.

• kms:SigningAlgorithm (p. 129)

kms:EncryptionContext:

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:EncryptionContext:문자열 CreateGrant

Encrypt

Decrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

ReEncrypt

키 정책 및 IAM 정책

조건 키 접두사를 사용하여 암호화 작업 요청의 암호화 컨텍스트를 기반으로kms:EncryptionContext:대칭 CMK (p. 158)에 대한 액세스를 제어할 수 있습니다. 이 조건 키 접두어를 사용하여 암호화 컨텍스트 쌍의 키와 값을 평가합니다. 암호화 컨텍스트 키만을 평가하려면 kms :EncryptionContextKeys (p. 120) 조건 키를 사용하십시오.

암호화 컨텍스트는 대칭 (p. 16)(–EncryptAWS KMS, CMKDecrypt, , , GenerateDataKey) 및GenerateDataKeyWithoutPlaintext 작업을 사용하는 모든 암호화 작업에 대한 요청에 포함할 수 있는 보안되지 않은 키값 페어 집합입니다.ReEncryptCreateGrant 암호화 작업에서 암호화 컨텍스트를 지정하는 경우 해독 작업에서 동일한 암호화 컨텍스트를 지정해야 합니다. 그렇지 않으면 해독 요청이 실패합니다.

비대칭 CMK (p. 158)를 사용하여 암호화 작업에서 암호화 컨텍스트를 지정할 수 없습니다. AWS KMS에서사용하는 표준 비대칭 암호화 알고리즘은 암호화 컨텍스트를 지원하지 않습니다.

kms:EncryptionContext:조건 키 접두어를 사용하려면 encryption_context_key 자리 표시자를 암호화 컨텍스트 키로 바꿉니다. encryption_context_value 자리 표시자를 암호화 컨텍스트 값으로 바꿉니다.

"kms:EncryptionContext:encryption_context_key": "encryption_context_value"

예를 들어, 다음 조건 키는 키가 AppName이고 값이 ExampleApp 인 암호화 컨텍스트를 지정합니다.

116

Page 125: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

"kms:EncryptionContext:AppName": "ExampleApp"

다음 예제 키 정책 명령문은 이 조건 키를 사용합니다. 한 요청에 여러 암호화 컨텍스트 쌍이 있을 수 있으므로 조건 연산자에는 ForAnyValue 또는 ForAllValues이(가) 포함되어야 합니다.

이 정책은 요청에서 하나 이상의 암호화 컨텍스트 쌍이 CMK인 경우에만 보안 주체가 GenerateDataKey요청에서 "AppName": "ExampleApp"를 사용하도록 허용합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } }}

여러 암호화 컨텍스트 쌍 요구둘 이상의 암호화 컨텍스트 쌍을 요구하려면 kms:EncryptionContext: 조건의 여러 인스턴스를 포함시킬 수 있습니다. 예를 들어, 다음 예시 정책문에서는 ForAllValues 연산자로 다음의 두 암호화 컨텍스트쌍을 모두 요구합니다(다른 쌍은 요구하지 않음). 쌍이 지정된 순서는 중요하지 않습니다.

• "AppName": "ExampleApp"

• "FilePath": "/var/opt/secrets/"

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp", "kms:EncryptionContext:FilePath": "/var/opt/secrets/" } }}

암호화 컨텍스트 조건의 대/소문자 구분암호 해독 작업에 지정된 암호화 컨텍스트는 암호화 작업에 지정된 암호화 컨텍스트에 대해 대소문자가 정확히 일치해야 합니다. 여러 쌍이 있는 암호화 컨텍스트에서 쌍의 순서만 다를 수 있습니다.

그러나 정책 조건에서 조건 키는 대소문자를 구분하지 않습니다. 조건 값의 대소 문자 구분은StringEquals 또는 StringEqualsIgnoreCase와 같이 사용하는 정책 조건 연산자 에 의해 결정됩니다.

따라서 kms:EncryptionContext: 접두사와 로 구성된 조건 키가 encryption_context_key 대소문자를 구분하지 않습니다. 이 조건을 사용하는 정책은 조건 키의 두 요소의 대소문자를 검사하지 않습니다. 값의대/소문자 구분, 즉 encryption_context_value replacement는 정책 조건 연산자에 의해 결정됩니다.

117

Page 126: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

예를 들어 다음 정책 명령문은 대문자 사용에 관계없이 암호화 컨텍스트에 Appname키가 포함 된 경우 작업을 허용합니다. 예를 들어 다음 정책 명령문은 대문자 사용에 관계없이 암호화 컨텍스트에 StringEquals키가 포함 된 경우 작업을 허용합니다ExampleApp.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContext:Appname": "ExampleApp" } }}

대/소문자를 구분하는 암호화 컨텍스트 키를 요구하려면 kms: EncryptionContextKeys (p. 120) 정책 조건을 대/소문자를 구분하는 조건 연산자(예: StringEquals)와 함께 사용합니다. 이 정책 조건에서는 암호화컨텍스트 키가 정책 조건 값이기 때문에 대/소문자 구분은 조건 연산자에 의해 결정됩니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKey": "AppName" } }}

암호화 컨텍스트 키와 값 모두에 대해 대소문자가 구분된 평가가 필요하면kms:EncryptionContextKeys 및 kms:EncryptionContext: 정책 조건을 동일한 정책문에 함께 사용하십시오. 예를 들어, StringEquals 연산자는 대소문자를 구분하기 때문에 다음 정책문 예문에서는 암호화 컨텍스트 키와 암호화 컨텍스트 값 모두 대소문자를 구분합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "AppName", "kms:EncryptionContext:AppName": "ExampleApp" } }}

암호화 컨텍스트 조건에 변수 사용암호화 컨텍스트 쌍의 키와 값은 단순 리터럴 문자열이어야 합니다. 정수나 객체, 또는 완전히 해결되지 않는어떤 형식도 사용할 수 없습니다. 정수 또는 부동 소수점과 같은 다른 형식을 사용할 경우 AWS KMS는 이를리터럴 문자열로 해석합니다.

118

Page 127: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

"encryptionContext": { "department": "10103.0"}

그러나 kms:EncryptionContext: 조건 키 페어의 값은 IAM 정책 변수일 수 있습니다. 이러한 정책 변수는 런타임에 요청에 포함된 값을 기반으로 확인됩니다. 예를 들어 aws:CurrentTime 은 요청의 시간으로확인되고 aws:username은 호출자의 표시 이름으로 확인됩니다.

이러한 정책 변수를 사용하여 암호화 컨텍스트에서 매우 구체적인 정보(예: 호출자의 사용자 이름)를 요구하는 조건을 포함하는 정책 문을 생성할 수 있습니다. 변수를 포함하기 때문에 특정 역할을 수임할 수 있는 모든 사용자에 동일한 정책 문을 사용할 수 있습니다. 사용자마다 따로 정책 문을 작성할 필요가 없습니다.

모든 사용자가 동일한 CMK를 사용하여 데이터를 암호화 및 암호화 해제하도록 역할을 수임할 수 있게 하려는 상황을 생각해 보십시오. 그러나 모든 사용자가 직접 암호화한 데이터만 암호화를 해제하도록 허용하려고합니다. 먼저 AWS KMS에 대한 모든 요청이 키가 user이고 값이 다음과 같은 호출자의 AWS 사용자 이름을포함하도록 요구하는 것으로 시작합니다.

"encryptionContext": { "user": "bob"}

그런 다음 이 요구 사항을 시행하려면 다음 예제와 같은 정책 문을 사용할 수 있습니다. 이 정책 문은TestTeam 역할에게 CMK를 사용하여 데이터를 암호화하고 해독할 수 있는 권한을 부여합니다. 그러나 이권한은 요청의 암호화 컨텍스트가 "user": "<username>" 쌍을 포함하는 경우에만 유효합니다. 사용자이름을 표현하기 위해 조건이 aws:username 정책 변수를 사용합니다.

요청이 평가될 때 호출자의 사용자 이름이 조건의 변수를 대체합니다. 따라서 조건은 "bob"에 대해서는 암호화 컨텍스트 "user": "bob"을 요구하고 "alice"에 대해서는 "user": "alice"를 요구합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/TestTeam" }, "Action": [ "kms:Decrypt", "kms:Encrypt" ] "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContext:user": "${aws:username}" } }}

IAM 정책 변수는 kms:EncryptionContext: 조건 키 페어의 값에만 사용할 수 있습니다. 키에는 변수를사용할 수 없습니다.

또한 변수에 공급자별 컨텍스트 키를 사용할 수도 있습니다. 이러한 컨텍스트 키는 웹 자격 증명 연동을 사용하여 AWS에 로그인한 사용자를 고유하게 식별합니다.

다른 모든 변수와 마찬가지로 이러한 변수도 실제 암호화 컨텍스트가 아니라 kms:EncryptionContext:정책 조건에서만 사용할 수 있습니다. 또한 키가 아니라 조건의 값에만 사용할 수 있습니다.

예를 들어 다음 키 정책 문은 이전 것과 비슷합니다. 그러나 조건은 키가 sub이고 값이 Amazon Cognito 사용자 풀에 로그인한 사용자를 고유하게 식별하는 암호화 컨텍스트를 요구합니다. Amazon Cognito에서 사용자 및 역할을 식별하는 자세한 내용은 Amazon Cognito 개발자 안내서의 IAM 역할을 참조하십시오.

119

Page 128: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/TestTeam" }, "Action": [ "kms:Decrypt", "kms:Encrypt" ] "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContext:sub": "${cognito-identity.amazonaws.com:sub}" } }}

다음 사항도 참조하세요.

• the section called “kms:EncryptionContextKeys” (p. 120)• the section called “ kms:GrantConstraintType” (p. 123)

kms:EncryptionContextKeys

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:EncryptionContextKeys문자열(목록) CreateGrant

Decrypt

Encrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

ReEncrypt

키 정책 및 IAM 정책

조건 키를 사용하여 암호화 작업 요청의 암호화 컨텍스트를 기반으로 kms:EncryptionContextKeys대칭CMK (p. 158)에 대한 액세스를 제어할 수 있습니다. 이 조건 키 접두어를 사용하여 암호화 컨텍스트 쌍의키와 값을 평가합니다. 키와 값을 모두 평가하려면 kms:EncryptionContext: (p. 116) 조건 키 접두사를 사용하십시오.

비대칭 CMK (p. 158)를 사용하여 암호화 작업에서 암호화 컨텍스트를 지정할 수 없습니다. AWS KMS에서사용하는 표준 비대칭 암호화 알고리즘은 암호화 컨텍스트를 지원하지 않습니다.

이 조건 키를 사용하여 AWS KMS API 요청에서 암호화 컨텍스트 (p. 16)를 기반으로 액세스를 제어할 수있습니다. 암호화 컨텍스트는 대칭 –(AWS KMSEncryptCMKs, Decrypt, https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html, GenerateDataKey, GenerateDataKeyWithoutPlaintext, ) 및ReEncrypt 등의 암호화 작업에 포함할 수 있는 키값 페어 집합입니다.CreateGrant 한 요청에 여러 암호화 컨텍스트 쌍이 있을 수 있으므로 조건 연산자에는 ForAnyValue 또는 ForAllValues이(가) 포함되어야 합니다.

120

Page 129: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

다음 예제 정책 설명은 값과 상관없이 요청의 암호화 컨텍스트 쌍 중 하나 이상에kms:EncryptionContextKeys 키가 포함된 경우에만 CMK 조건 키를 사용하여 지정된 작업에 대해AppName 사용을 허용합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "AppName" } }}

StringEquals 조건 작업은 대소문자를 구분하므로 이전 정책 문에는 암호화 컨텍스트 키의 철자와 대소문자가 필요합니다. 그러나 StringEqualsIgnoreCase과 같은 키 대소문자를 무시하는 조건 연산자를 사용할수 있습니다.

각 명령에서 여러 마스터 키를 지정할 수 있습니다. 예를 들어 다음 정책 명령문은 값과 상관없이 요청의 암호화 컨텍스트에 AppName 키와 FilePath 키가 모두 포함될 때만(다른 키는 포함되지 않음) 지정된 작업을ForAllValues 및 StringEquals 조건 연산자로 허용합니다. 암호화 컨텍스트의 키 순서는 중요하지 않습니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kms:EncryptionContextKeys": [ "AppName", "FilePath" ] } }}

조건 키를 사용하여 kms:EncryptionContextKeys를 사용하는 암호화 작업에서 암호화 컨텍스트를 요구할 수도 있습니다.CMK

다음 예제 키 정책 문은 kms:EncryptionContextKeys 조건 키와 함께 Null condition operator를 사용하여 CMK 조건 키가 API 요청에 존재할 때만(null 아님) kms:EncryptionContextKeys에 대한 액세스를 허용합니다. 암호화 컨텍스트의 키나 값을 확인하는 것이 아니라 암호화 컨텍스트 유무만 점검합니다.

{ "Effect": "Allow", "Principal": {

121

Page 130: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

"AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "Null": { "kms:EncryptionContextKeys": false } }}

다음 사항도 참조하세요.

• kms:EncryptionContext: (p. 116)• kms:GrantConstraintType (p. 123)

kms:ExpirationModel

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:ExpirationModel 문자열 ImportKeyMaterial 키 정책 및 IAM 정책

조건 키는 요청의 kms:ExpirationModelImportKeyMaterial 파라미터 값에 따라 작업에 대한 액세스를 제어합니다.ExpirationModel

ExpirationModel은 가져온 키 자료가 만료되는지 여부를 결정하는 선택적 파라미터입니다. 유효한 값은 KEY_MATERIAL_EXPIRES 및 KEY_MATERIAL_DOES_NOT_EXPIRE이며, 기본값은KEY_MATERIAL_EXPIRES입니다.

만료 날짜 및 시간은 ValidTo 파라미터의 값에 의해 결정됩니다. 파라미터 값이 ValidTo이 아닌 경우 ExpirationModel 파라미터가 필요합니다.KEY_MATERIAL_DOES_NOT_EXPIRE 또한kms:ValidTo (p. 129) 조건 키를 사용하여 특정 만료 날짜를 액세스 조건으로 요구할 수 있습니다.

다음 예제 정책 설명은 kms:ExpirationModel 조건 키를 사용하여 요청에 CMK 파라미터가 포함되어 있고 해당 값이 ExpirationModel인 경우에만 사용자가 키 구성 요소를KEY_MATERIAL_DOES_NOT_EXPIRE로 가져오도록 허용합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "StringEquals": { "kms:ExpirationModel": "KEY_MATERIAL_DOES_NOT_EXPIRE" } }}

또한 kms:ExpirationModel 조건 키를 사용하여 조건에 만료 날짜를 지정하지 (p. 129) 않고 키자료가 만료될 때만 사용자가 키 자료를 가져오도록 허용할 수도 있습니다. 다음의 정책 설명 예제는

122

Page 131: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

kms:ExpirationModel 조건 키와 함께 Null condition operator를 사용하여 요청에 ExpirationModel 파라미터가 없을 때만 사용자가 키 자료를 가져오도록 허용합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "Null": { "kms:ExpirationModel": true } }}

다음 사항도 참조하세요.

• kms:ValidTo (p. 129)• kms:WrappingAlgorithm (p. 133)• kms:WrappingKeySpec (p. 134)

kms:GrantConstraintType

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:GrantConstraintType문자열 CreateGrant 키 정책 및 IAM 정책

이 조건 키를 사용하여 요청의 권한 부여 제약 조건CreateGrant 유형에 따라 작업에 대한 액세스를 제어할수 있습니다.

권한 부여를 생성하면 선택적으로 권한 부여 제약을 지정해 특정 암호화 컨텍스트 (p. 16)가 있는 경우에만권한 부여에 의해 허용된 작업을 허용할 수 있습니다. 권한 부여 제약은 다음 두 가지 유형 중 하나일 수 있습니다. EncryptionContextEquals 또는 EncryptionContextSubset. 이 조건 키를 사용하여 요청에 어떤 유형이 포함되었는지 확인할 수 있습니다.

다음 예제 정책 설명은 kms:GrantConstraintType 조건 키를 사용해 요청에EncryptionContextEquals 권한 부여 제약이 포함된 경우에만 사용자가 권한 부여를 생성하도록 허용합니다. 이 예제는 키 정책의 정책 설명을 보여줍니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:GrantConstraintType": "EncryptionContextEquals" } }}

다음 사항도 참조하세요.

123

Page 132: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

• kms:EncryptionContext: (p. 116)• kms:EncryptionContextKeys (p. 120)• kms:GrantIsForAWSResource (p. 124)• kms:GrantOperations (p. 124)• kms:GranteePrincipal (p. 125)• kms:RetiringPrincipal (p. 128)

kms:GrantIsForAWSResource

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:GrantIsForAWSResource부울 CreateGrant

ListGrants

RevokeGrant

키 정책 및 IAM 정책

와 통합된 CreateGrant 서비스가 사용자를 대신하여 작업을 호출하는 경우에만 ListGrants, RevokeGrant 또는 작업에 대한 권한을 허용하거나 거부합니다.AWSAWS KMS 이 정책 조건은 사용자가 이러한 권한 부여작업을 직접 호출하도록 허용하지 않습니다.

다음 예제 키 정책 문은 kms:GrantIsForAWSResource 조건 키를 사용합니다. 이를 통해 AWS와 통합된AWS KMS 서비스(예: Amazon EBS)가 지정된 사용자를 대신하여 이 CMK에 대한 권한 부여를 생성할 수 있습니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } }}

다음 사항도 참조하세요.

• kms:GrantConstraintType (p. 123)• kms:GrantOperations (p. 124)• kms:GranteePrincipal (p. 125)• kms:RetiringPrincipal (p. 128)

kms:GrantOperations

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:GrantOperations 문자열 CreateGrant 키 정책 및 IAM 정책

124

Page 133: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

이 조건 키를 사용하여 요청의 권한 부여 작업에 따라 CreateGrant 작업에 대한 액세스를 제어할 수 있습니다. 예를 들어, 사용자가 암호화할 권한은 위임하지만 해독할 권한은 위임하지 않는 권한 부여를 생성하도록허용할 수 있습니다.

다음 예제 정책 설명은 kms:GrantOperations 조건 키를 사용하여 사용자가 이 CMK가 대상 CMK일 때암호화하고 다시 암호화할 수 있는 권한을 위임하는 권한 부여를 생성하도록 허용합니다. 이 예제는 키 정책의 정책 설명을 보여줍니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Encrypt", "ReEncryptTo" ] } }}

다음 사항도 참조하세요.

• kms:GrantConstraintType (p. 123)• kms:GrantIsForAWSResource (p. 124)• kms:GranteePrincipal (p. 125)• kms:RetiringPrincipal (p. 128)

kms:GranteePrincipal

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:GranteePrincipal문자열 CreateGrant IAM 및 키 정책

이 조건 키를 사용하여 요청의 CreateGrant 파라미터 값에 따라 GranteePrincipal 작업에 대한 액세스를 제어할 수 있습니다. 예를 들어, CMK 요청의 피부여자 보안 주체가 조건문에 지정된 보안 주체와 일치할 때만 사용자가 CreateGrant를 사용할 권한을 생성하도록 허용할 수 있습니다.

다음 예제 정책 설명은 kms:GranteePrincipal 조건 키를 사용하여 권한 부여의 피부여자 보안 주체가CMK일 때만 사용자가 LimitedAdminRole에 대한 권한 부여를 생성하도록 허용합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:GranteePrincipal": "arn:aws:iam::111122223333:role/LimitedAdminRole" }

125

Page 134: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

}}

다음 사항도 참조하세요.

• kms:GrantConstraintType (p. 123)• kms:GrantIsForAWSResource (p. 124)• kms:GrantOperations (p. 124)• kms:RetiringPrincipal (p. 128)

kms:KeyOrigin

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:KeyOrigin 문자열 CreateKey

CMK 리소스 작업

IAM 정책

키 정책 및 IAM 정책

조건 키는 작업에 의해 생성되거나 작업에 사용되는 kms:KeyOrigin의 Origin 속성 값에 따라 작업에 대한 액세스를 제어합니다.CMK 이는 리소스 조건 또는 요청 조건으로 작동합니다.

이 조건 키를 사용하여 요청의 Origin(오리진)CreateKey 파라미터 값에 따라 https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html#KMS-CreateKey-request-Origin 작업에 대한 액세스를 제어할 수 있습니다. 에 유효한 값은 Origin, AWS_KMS 및 AWS_CLOUDHSM입니다.EXTERNAL

예를 들어, 키 구성 요소가 KMS(CMK)에서 생성되거나, 키 구성 요소가 AWS_KMS사용자 지정 키 스토어AWS CloudHSM()와 연결된 (p. 291) 클러스터에서 생성되거나, 외부 소스(AWS_CLOUDHSM)에서 키 구성요소를 가져왔을 (p. 277) 때만 사용자가 를 생성하도록 허용할 수 있습니다.EXTERNAL

다음 예제 정책 설명은 kms:KeyOrigin 조건 키를 사용하여 CMK가 키 구성 요소를 생성할 때만 사용자가AWS KMS를 생성하도록 허용합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeyOrigin": "AWS_KMS" } }}

또한 kms:KeyOrigin 조건 키를 사용하여 작업에 사용되는 CMK의 Origin 속성을 기반으로 CMK를 사용하거나 관리하는 작업에 대한 액세스를 제어할 수 있습니다.작업은 특정 CMK에 대해 승인된 작업인 CMK 리소스 작업이어야 합니다. CMK 리소스 작업을 식별하려면 작업 및 리소스 테이블 (p. 97)에서, 해당 작업에 대한 Resources 열에서 CMK 값을 찾습니다.

예를 들어 다음 IAM 정책은 보안 주체가 지정된 CMK 리소스 작업을 수행하도록 허용하지만, 사용자 지정 키스토어에서 생성된 계정의 CMKs에 대해서만 허용합니다.

{

126

Page 135: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

"Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:GenerateDataKeyPair", "kms:GenerateDataKeyPairWithoutPlaintext", "kms:ReEncrypt*" ], "Resource": { "arn:aws:kms:us-west-2:111122223333:key/*" }, "Condition": { "StringEquals": { "kms:KeyOrigin": "AWS_CLOUDHSM" } }}

다음 사항도 참조하세요.

• kms:BypassPolicyLockoutSafetyCheck (p. 110)• kms:CustomerMasterKeySpec (p. 111)• kms:CustomerMasterKeyUsage (p. 112)

kms:MessageType

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:MessageType 문자열 Sign

Verify

키 정책 및 IAM 정책

kms:MessageType 조건 키는 요청의 MessageType 파라미터 값에 따라 Sign 및 Verify작업에 대한 액세스를 제어합니다. MessageType 유효값은 RAW 및 DIGEST입니다.

예를 들어 다음 키 정책 문은 kms:MessageType 조건 키를 사용하여 사용자가 비대칭 CMK를 사용하여 메시지에 서명하도록 허용하지만 메시지 다이제스트는 허용하지 않습니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:Sign", "Resource": "*", "Condition": { "StringEquals": { "kms:MessageType": "RAW" } }}

다음 사항도 참조하세요.

• the section called “kms:SigningAlgorithm” (p. 129)

127

Page 136: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

kms:ReEncryptOnSameKey

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:ReEncryptOnSameKey부울 ReEncrypt 키 정책 및 IAM 정책

이 조건 키를 사용하여 요청이 원래 암호화에 사용된 것과 동일한 대상 를 지정하는지 여부에따라 ReEncryptCMK 작업에 대한 액세스를 제어할 수 있습니다. 예를 들어 다음 정책 설명은kms:ReEncryptOnSameKey 조건 키를 사용하여 대상 CMK가 원래 암호화에 사용된 것과 동일한 경우에만사용자가 재암호화하도록 허용합니다. 이 예제는 키 정책의 정책 설명을 보여줍니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:ReEncrypt*", "Resource": "*", "Condition": { "Bool": { "kms:ReEncryptOnSameKey": true } }}

kms:RetiringPrincipal

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:RetiringPrincipal문자열(목록) CreateGrant 키 정책 및 IAM 정책

이 조건 키를 사용하여 요청의 CreateGrant 파라미터 값에 따라 RetiringPrincipal 작업에 대한 액세스를 제어할 수 있습니다. 예를 들어 CMK 요청의 RetiringPrincipal가 조건문의 CreateGrant와 일치할 때만 사용자가 RetiringPrincipal를 사용할 권한을 생성하도록 허용할 수 있습니다.

다음 예제 정책 설명을 통해 사용자는 CMK에 대한 권한 부여를 생성할 수 있습니다.kms:RetiringPrincipal 조건 키는 권한 부여의 중단 주체가 LimitedAdminRole 또는 OpsAdmin 사용자 인 CreateGrant 요청에 대한 권한을 제한합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:RetiringPrincipal": [ "arn:aws:iam::111122223333:role/LimitedAdminRole", "arn:aws:iam::111122223333:user/OpsAdmin" ] } }}

128

Page 137: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

다음 사항도 참조하세요.

• kms:GrantConstraintType (p. 123)• kms:GrantIsForAWSResource (p. 124)• kms:GrantOperations (p. 124)• kms:GranteePrincipal (p. 125)

kms:SigningAlgorithm

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:SigningAlgorithm문자열 Sign

Verify

키 정책 및 IAM 정책

조건 키를 사용하여 요청의 kms:SigningAlgorithmhttps://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html 파라미터 값에 따라 Sign 및 VerifySigningAlgorithm 작업에 대한 액세스를 제어할 수 있습니다. 이 조건 키는 AWS KMS 외부에서 비대칭 CMK 페어의 퍼블릭 키를 사용하여 서명을 확인하는 경우와 같이 AWS KMS 외부에서 수행되는 작업에는 영향을 주지 않습니다.

다음 예제 키 정책은 testers 역할을 수임할 수 있는 사용자가 요청에 사용된 서명 알고리즘이RSASSA_PSS 알고리즘(예: CMK)인 경우에만 RSASSA_PSS_SHA512를 사용하여 메시지에 서명하도록 허용합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/testers" }, "Action": "kms:Sign", "Resource": "*", "Condition": { "StringLike": { "kms:SigningAlgorithm": "RSASSA_PSS*" } }}

다음 사항도 참조하세요.

• kms:EncryptionAlgorithm (p. 114)• the section called “kms:MessageType” (p. 127)

kms:ValidTo

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:ValidTo Timestamp ImportKeyMaterial 키 정책 및 IAM 정책

조건 키는 가져온 키 구성 요소가 만료되는 시점을 결정하는 요청의 kms:ValidToImportKeyMaterial 파라미터 값에 따라 작업에 대한 액세스를 제어합니다.ValidTo 이 값은 Unix 시간으로 표현됩니다.

129

Page 138: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

기본적으로 ValidTo 파라미터는 ImportKeyMaterial 요청에서 필요합니다. 그러나 ExpirationModel 파라미터의 값이 KEY_MATERIAL_DOES_NOT_EXPIRE이면 ValidTo 파라미터가 유효하지 않습니다. 또한kms:ExpirationModel (p. 122) 조건 키를 사용하여 ExpirationModel 파라미터 또는 특정 파라미터 값을요구할 수도 있습니다.

다음 예제 정책 설명을 통해 사용자는 키 구성 요소를 CMK로 가져올 수 있습니다. kms:ValidTo 조건 키는ValidTo 값이 1546257599.0 (2018년 12월 31일 11:59:59 PM)보다 작거나 같은 ImportKeyMaterial요청에 대한 권한을 제한합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "NumericLessThanEquals": { "kms:ValidTo": "1546257599.0" } }}

다음 사항도 참조하세요.

• kms:ExpirationModel (p. 122)• kms:WrappingAlgorithm (p. 133)• kms:WrappingKeySpec (p. 134)

kms:ViaService

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:ViaService 문자열 CMK 리소스 작업 키 정책 및 IAM 정책

조건 키는 kms:ViaService AWS KMS고객 마스터 키( (p. 3))의 사용을 지정된 CMK 서비스의 요청으로제한합니다.AWS 각 kms:ViaService 조건 키에 하나 이상의 서비스를 지정할 수 있습니다. 작업은 특정CMK에 대해 승인된 작업인 CMK 리소스 작업이어야 합니다. CMK 리소스 작업을 식별하려면 작업 및 리소스 테이블 (p. 97)에서, 해당 작업에 대한 Resources 열에서 CMK 값을 찾습니다.

예를 들어 키 정책의 다음 문은 kms:ViaService 조건 키를 사용하여 요청이 리전의 CMK 또는 (p. 4)에서Amazon EC2 대신 이루어지는 경우에만 Amazon RDS고객 관리형 미국 서부(오레곤)이 지정된 작업에 사용되도록 허용합니다.ExampleUser

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:ListGrants", "kms:DescribeKey"

130

Page 139: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "ec2.us-west-2.amazonaws.com", "rds.us-west-2.amazonaws.com" ] } }}

또한 요청이 특정 서비스에서 이루어지는 경우 kms:ViaService 조건 키를 사용하여 CMK 사용 권한을거부할 수 있습니다. 예를 들어 키 정책의 다음 정책 설명은 kms:ViaService 조건 키를 사용하여 요청이CMK에서 Encrypt 대신 이루어지는 경우 고객 관리형 AWS Lambda가 ExampleUser 작업에 사용되지 않도록 합니다.

{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": [ "kms:Encrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "lambda.us-west-2.amazonaws.com" ] } }}

Important

kms:ViaService 조건 키를 사용할 경우 서비스가 AWS 계정의 보안 주체 대신 요청을 생성합니다. 이러한 보안 주체는 다음 권한을 가져야 합니다.

• 사용 권한.CMK 보안 주체는 서비스가 보안 주체 대신 고객 관리형 CMK를 사용할 수 있도록 이러한 권한을 통합 서비스에 부여해야 합니다. 자세한 내용은 AWS 서비스의 AWS KMS 활용 방식 (p. 341) 항목을 참조하십시오.

• 통합 서비스 사용 권한. 사용자에게 AWS와 통합된 AWS KMS 서비스에 액세스할 수 있는 권한을부여하는 방법에 대한 세부 정보는 통합 서비스의 설명서를 참조하십시오.

모든 AWS 관리형 CMKs (p. 4)는 키 정책 문서에 kms:ViaService 조건 키를 사용합니다. 이 조건은 CMK를 생성한 서비스에서 오는 요청에만 CMK를 사용하도록 허용합니다. AWS 관리형 CMK에 대한 키 정책을보려면 GetKeyPolicy 작업을 사용합니다.

kms:ViaService 조건 키는 IAM 및 키 정책 설명에서 유효합니다. 사용자가 지정한 서비스가 AWS KMS와통합되고 kms:ViaService 조건 키를 지원해야 합니다.

조건 키를 지원하는 서비스(고객 관리형 kms:ViaService에서)CMKs

다음 표에는 AWS와 통합되고, 고객 관리형 AWS KMS를 지원하고, 고객 관리형 CMKs에서kms:ViaService 조건 키의 사용을 지원하는 CMKs 서비스가 나열되어 있습니다. 이 표에 수록된 서비스는 일부 리전에 제공되지 않을 수 있습니다. 모든 .amazonaws.com 파티션에서 AWS KMS ViaService 이름의 AWS 접미사를 사용합니다.

131

Page 140: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

Note

이 테이블의 모든 데이터를 보려면 가로 또는 세로로 스크롤해야 할 수 있습니다.

서비스 이름 AWS KMS ViaService 이름

Amazon Appflow 앱플로우.AWS_region.amazonaws.com

Amazon Athena athena.AWS_region.amazonaws.com

Amazon Aurora rds.AWS_region.amazonaws.com

AWS Backup 백업.AWS_region.amazonaws.com

AWS CodeArtifact 코드 아티팩트.AWS_region.amazonaws.com

Amazon Connect 연결합니다.AWS_region.amazonaws.com

AWS Database Migration Service (AWS DMS) 전송합니다.AWS_region.amazonaws.com

AWS Directory Service 디렉터리 서비스.AWS_region.amazonaws.com

Amazon DynamoDB dynamodb.AWS_region.amazonaws.com

Amazon EC2 Systems Manager (SSM) ssm.AWS_region.amazonaws.com

Amazon Elastic Block Store (Amazon EBS) ec2.AWS_region.amazonaws.com(EBS만 해당)

Amazon Elastic Container Registry (Amazon ECR) ecrAWS_region.amazonaws.com

Amazon Elastic File System (Amazon EFS) ElasticfilesystemAWS_region.amazonaws.com

Amazon Elastic Kubernetes Service (Amazon EKS) 있습니다.AWS_region.amazonaws.com

Amazon ElastiCache 조건 키 값에 ViaService 이름을 둘 다 포함합니다.

• Elasticache.AWS_region.amazonaws.com• Dax:AWS_region.amazonaws.com

Amazon Elasticsearch Service (Amazon ES) 있습니다.AWS_region.amazonaws.com

Amazon Forecast 예상.AWS_region.amazonaws.com

Amazon FSx fsx.AWS_region.amazonaws.com

AWS Glue 글루.AWS_region.amazonaws.com

Amazon Kendra kendra.AWS_region.amazonaws.com

Amazon Kinesis kinesis.AWS_region.amazonaws.com

Amazon Kinesis Data Firehose FirehoseAWS_region.amazonaws.com

Amazon Kinesis 비디오 스트림 kinesisvideo.AWS_region.amazonaws.com

AWS Lambda Lambda를 선택합니다.AWS_region.amazonaws.com

Amazon Lex lexAWS_region.amazonaws.com

Amazon Managed Streaming for Apache Kafka(Amazon MSK)

kafka.AWS_region.amazonaws.com

132

Page 141: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 조건 키

서비스 이름 AWS KMS ViaService 이름

Amazon MQ mqAWS_region.amazonaws.com

Amazon Neptune rds.AWS_region.amazonaws.com

Amazon RDS 성능 개선 도우미 rds.AWS_region.amazonaws.com

Amazon Redshift redshift.AWS_region.amazonaws.com

Amazon Relational Database Service (AmazonRDS)

rds.AWS_region.amazonaws.com

AWS Secrets Manager secretsmanager.AWS_region.amazonaws.com

Amazon Simple Email Service (Amazon SES) 세AWS_region.amazonaws.com

Amazon Simple Notification Service (Amazon SNS) sns.AWS_region.amazonaws.com

Amazon Simple Queue Service (Amazon SQS) sqs.AWS_region.amazonaws.com

Amazon Simple Storage Service (Amazon S3) s3AWS_region.amazonaws.com

AWS Snowball 내보내기.AWS_region.amazonaws.com

AWS Storage Gateway storagegateway.AWS_region.amazonaws.com

Amazon 타임스트림 타임스트림.AWS_region.amazonaws.com

Amazon WorkMail workmail입니다.AWS_region.amazonaws.com

Amazon WorkSpaces Workspaces.AWS_region.amazonaws.com

AWS X-Ray XRAY.AWS_region.amazonaws.com

kms:WrappingAlgorithm

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:WrappingAlgorithm문자열 GetParametersForImport키 정책 및 IAM 정책

이 조건 키는 요청의 GetParametersForImport 파라미터 값에 따라 WrappingAlgorithm 작업에 대한 액세스를 제어합니다. 이 조건을 사용하여 보안 주체가 가져오기 프로세스 중에 특정 알고리즘을 사용하여 키 자료를 암호화하도록 요구할 수 있습니다. 다른 래핑 알고리즘을 지정하면 필수 퍼블릭 키 및 가져오기 토큰에 대한 요청이 실패합니다.

다음 정책 설명 예제에서는 kms:WrappingAlgorithm 조건 키를 사용하여 GetParametersForImport작업을 호출할 수 있는 사용자 권한을 부여하지만, RSAES_OAEP_SHA_1 래핑 알고리즘을 사용하지 못하도록 합니다. GetParametersForImport 요청의 WrappingAlgorithm이 RSAES_OAEP_SHA_1이면 작업이 실패합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:GetParametersForImport", "Resource": "*",

133

Page 142: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS에 대한 조건 키AWS Nitro 엔클레이브

"Condition": { "StringNotEquals": { "kms:WrappingAlgorithm": "RSAES_OAEP_SHA_1" } }}

다음 사항도 참조하세요.

• kms:ExpirationModel (p. 122)• kms:ValidTo (p. 129)• kms:WrappingKeySpec (p. 134)

kms:WrappingKeySpec

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:WrappingKeySpec 문자열 GetParametersForImport키 정책 및 IAM 정책

이 조건 키는 요청의 GetParametersForImport 파라미터 값에 따라 WrappingKeySpec 작업에 대한 액세스를제어합니다. 가져 오기 프로세스 중에 공개 키의 특정 유형을 사용하는 사용자를 요구하는 이 조건을 사용할수 있습니다. 요청에서 다른 키 유형을 지정하면 실패합니다.

WrappingKeySpec 파라미터 값에 사용할 수 있는 값은 RSA_2048뿐이므로 실제로 사용자에게 이 값을 실제로 사용하지 못하도록 할 경우 사용자가 GetParametersForImport 작업을 사용할 수 없게 됩니다.

다음 예제 정책 설명은 kms:WrappingAlgorithm 조건 키를 사용하여 요청의 WrappingKeySpec이RSA_2048이 되도록 요구합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:GetParametersForImport", "Resource": "*", "Condition": { "StringEquals": { "kms:WrappingKeySpec": "RSA_2048" } }}

다음 사항도 참조하세요.

• kms:ExpirationModel (p. 122)• kms:ValidTo (p. 129)• kms:WrappingAlgorithm (p. 133)

AWS KMS에 대한 조건 키AWS Nitro 엔클레이브AWS Nitro 엔클레이브는 Amazon EC2enlaves라고 하는 격리된 컴퓨팅 환경을 생성하여 매우 중요한 데이터를 보호하고 처리할 수 있는 기능입니다. AWS KMS는 AWS Nitro 엔클레이브를 지원하는 조건 키를 제공합니다. 이러한 조건 키는 AWS KMS 작업에 대한 요청이 인코딩에서 시작된 경우에만 작동합니다.

134

Page 143: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS에 대한 조건 키AWS Nitro 엔클레이브

, kms-decrypt 또는 kms-generate-data-key 인코딩에서 kms-generate-randomAWS NitroEnclaves SDK 를 호출하면 이러한 APIs는 해당 APIs 작업을 해당 AWS KMS 작업과 함께 호출합니다. 이 작업에는 해당 절의 서명된 지장 문서가 포함됩니다. 서명된 증명 문서는 AWS KMS에 대한 인코딩의 자격 증명을 입증합니다.

다음 조건 키를 사용하면 서명된 증명 문서의 내용에 따라 이러한 작업에 대한 권한을 제한할 수 있습니다.작업을 허용하기 전에 AWS KMS는 절의 증명 문서를 이러한 AWS KMS 조건 키의 값과 비교합니다.

kms:RecipientAttation:ImageSha384

AWS KMS 조건 키 조건 유형 API 연산 정책 유형

kms:RecipientAttestation:ImageSha384문자열 Decrypt

GenerateDataKey

GenerateRandom

키 정책 및 IAM 정책

조건 키는 요청의 서명된 증명 문서의 이미지 해시가 조건 키의 값과 일치하는 경우에만 인코딩에서kms:RecipientAttestation:ImageSha384, kms-decrypt 및 kms-generate-data-key 요청을허용합니다.kms-generate-random 값은 증명 문서의 CR[0]에 해당합니다.ImageSha384 이 조건 키는AWS Nitro Enclaves SDK APIs를 인코딩에서 호출할 때만 유효합니다.

예를 들어 다음 키 정책 설명을 사용하면 data-processing 역할이 kms-decrypt(Decrypt), kms-generate-data-key(GenerateDataKey) 및 (kms-generate-random) 작업에 대해 CMK를 사용할 수 있습니다.GenerateRandom 조건 키는 요청의 증명 문서의 이미지 해시 값(PCR[0])이 조건에 있는 이미지 해시값과 일치하는 경우에만 작업을 허용합니다.kms:RecipientAttestation:ImageSha384

요청에 증명 문서가 포함되어 있지 않으면 이 조건이 충족되지 않기 때문에 권한이 거부됩니다.

{ "Sid" : "Enable enclave data processing", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:role/data-processing" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateRandom" ], "Resource" : "*", "Condition": { "StringEqualsIgnoreCase": { "kms:RecipientAttestation:ImageSha384": "9fedcba8abcdef7abcdef6abcdef5abcdef4abcdef3abcdef2abcdef1abcdef1abcdef0abcdef1abcdef2abcdef3abcdef4abcdef5abcdef6abcdef7abcdef99" } }}

kms:RecipientAttation:PCR

AWS KMS 조건 키 조건 유형 API 연산 정책 유형

kms:RecipientAttestation:PCR문자열 Decrypt

GenerateDataKey

키 정책 및 IAM 정책

135

Page 144: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드권한 부여 사용

AWS KMS 조건 키 조건 유형 API 연산 정책 유형GenerateRandom

조건 키는 요청의 서명된 증명 문서에서 나온 플랫폼 구성 등록(PCR)이 조건 키의kms:RecipientAttestation:PCR와 일치하는 경우에만 엔커브에서 kms-decrypt, kms-generate-data-key 및 kms-generate-random 요청을 허용합니다.PCRs 이 조건 키는 AWS Nitro Enclaves SDKAPIs를 인코딩에서 호출할 때만 유효합니다.

CRC 값을 지정하려면 다음 형식을 사용합니다. 조건 키 이름에 CRC ID를 연결합니다. 이때 CRC 값은 소문자 16진수 문자열의 최대 96바이트가 되어야 합니다.

"kms:RecipientAttestation:PCRPCR_ID": "PCR_value"

예를 들어, 다음 조건 키는 인코딩 및 부트스트랩 프로세스에 사용되는 커널의 해시에 해당하는 CRP1.1의특정 값을 지정합니다.

kms:RecipientAttestation:PCR1: "0x1abcdef2abcdef3abcdef4abcdef5abcdef6abcdef7abcdef8abcdef9abcdef8abcdef7abcdef6abcdef5abcdef4abcdef3abcdef2abcdef1abcdef0abcde"

다음 예제 키 정책 문을 사용하면 data-processing 역할이 kms-decrypt(Decrypt) 작업에 CMK를 사용할 수 있습니다.

이 문의 kms:RecipientAttestation:PCR 조건 키는 요청의 서명된 증명 문서의 CRP1 값이 조건의kms:RecipientAttestation:PCR1 값과 일치하는 경우에만 작업을 허용합니다. 정책 연산자를 사용하여 CRC 값을 대/소문자를 구분하지 않고 비교할 것을 요구합니다.StringEqualsIgnoreCase

요청에 증명 문서가 포함되어 있지 않으면 이 조건이 충족되지 않기 때문에 권한이 거부됩니다.

{ "Sid" : "Enable enclave data processing", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:role/data-processing" }, "Action": "kms:Decrypt", "Resource" : "*", "Condition": { "StringEqualsIgnoreCase": { "kms:RecipientAttestation:PCR1": "0x1de4f2dcf774f6e3b679f62e5f120065b2e408dcea327bd1c9dddaea6664e7af7935581474844767453082c6f1586116376cede396a30a39a611b9aad7966c87" } }}

권한 부여 사용AWS KMS은 다음과 같은 두 가지 자원 기반 액세스 제어 메커니즘을 지원합니다. 키 정책 (p. 65) 및가부여합니다. 권한 부여를 사용하면 프로그래밍 방식으로 KMS 고객 마스터 키(CMKs) 사용을 다른 AWS 보안 주체에 위임할 수 있습니다. 허용 규칙을 지정할 수 있지만 거부 규칙은 지정할 수 없습니다. 권한 부여는매우 구체적일 수 있고 생성 및 취소가 간편하므로 임시 권한 또는 보다 세부적인 권한을 제공하는 데 자주사용됩니다.

키 정책을 사용하여 다른 AWS 보안 주체에게 CMK에 액세스하도록 허용할 수도 있지만 키 정책은 비교적정적인 권한 할당에 가장 적합합니다. 또한 주요 정책은 사용자가 리소스로 작업을 수행 할 수 있는 권한이

136

Page 145: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드권한 부여 생성

있거나 없는 권한 정책 AWS에 대한 표준 사용 권한 모델을 사용합니다. 예를 들어 kms:PutKeyPolicy에대한 CMK 권한이 있는 사용자는 CMK의 키 정책을 선택한 다른 키 정책으로 완전히 바꿀 수 있습니다. 좀 더세분화된 권한 관리를 하고 싶으면 권한 부여를 사용합니다.

권한 부여 작업 방법을 보여주는 코드 예제는 권한 부여 작업 (p. 257) 단원을 참조하십시오.

권한 부여 생성권한 부여를 생성하려면 CreateGrant 작업을 호출합니다. , 권한 부여가 CMK 사용을 허용하는 피부여자 보안 주체, 허용된 작업 목록을 지정합니다.CMK CreateGrant 작업은 후속 작업에서 권한 부여를 식별하는데 사용할 수 있는 권한 부여 ID를 반환합니다. 권한 부여를 사용자 지정하려면 선택적 Constraints 매개변수를 사용하여 권한 부여 제약을 정의합니다.

예를 들어 다음 CreateGrant 명령은 exampleUser가 지정된 대칭 에서 CMKDecrypt (p. 158) 작업을 호출하도록 허용하는 권한 부여를 생성합니다. 이 권한 부여는 RetiringPrincipal 파라미터를 사용하여 권한 부여를 중단시킬 수 있는 보안 주체를 지정합니다. 또한 요청의 암호화 컨텍스트 (p. 16)가"Department": "IT"를 포함하는 경우에만 권한을 허용하는 권한 부여 제약 조건이 포함되어 있습니다.

$ aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:user/exampleUser \ --operations Decrypt \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --constraints EncryptionContextSubset={Department=IT}

권한 부여를 보려면 ListGrants 작업을 사용합니다.

Note

ListGrants 응답의 GranteePrincipal 필드에는 일반적으로 권한 부여의 피부여자보안 주체가 포함됩니다. 그러나 권한 부여의 피부여자 보안 주체가 AWS 서비스인 경우GranteePrincipal 필드에는 서비스 보안 주체(여러 피부여자 보안 주체가 될 수 있음)가 포함됩니다.

$ aws kms list-grants --key-id 1234abcd-12ab-34cd-56ef-1234567890ab{ "Grants": [ { "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1572216195.0, "GrantId": "abcde1237f76e4ba7987489ac329fbfba6ad343d6f7075dbd1ef191f0120514", "Constraints": { "EncryptionContextSubset": { "Department": "IT" } }, "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole", "Name": "", "IssuingAccount": "arn:aws:iam::111122223333:root", "GranteePrincipal": "arn:aws:iam::111122223333:user/exampleUser", "Operations": [ "Decrypt" ] } ]}

권한 부여는 에 대한 kms:RevokeGrantCMK 권한을 가진 모든 사용자에 의해 취소(삭제)될 수 있습니다.

137

Page 146: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드대칭 및 비대칭 CMKs에 대한 권한 부여

권한 부여는 다음 보안 주체 중 하나가 중단할 수 있습니다.

• 보조금이 생성된 AWS 계정(루트 사용자)• 승인된 중단 보안 주체• 권한 부여가 RetireGrant 작업을 허용하는 경우 피부여자 보안 주체입니다.

대칭 및 비대칭 CMKs에 대한 권한 부여대칭 CMK 또는 비대칭 CMK에 대한 액세스를 제어하는 권한 부여를 생성할 수 있습니다. 그러나 보안 주체가 CMK에서 지원하지 않는 작업을 수행하도록 허용하는 권한 부여를 생성할 수 없습니다. 이러한 권한 부여를 시도하면 AWS KMS가 ValidationError 예외를 반환합니다.

대칭 CMKs

대칭 CMKs에 대한 권한 부여는 Sign(서명), Verify(확인) 또는 GetPublicKey 작업을 허용할 수 없습니다.(레거시 작업의 경우 이 규칙에 대한 제한적 예외가 있지만, AWS KMS가 지원하지 않는 작업에 대해 권한 부여를 생성하면 안 됩니다.)

비대칭 CMKs

비대칭 CMKs에 대한 권한 부여는 데이터 키 또는 데이터 키 페어를 생성하는 작업을 허용할 수 없습니다. 또한 사용자 지정 키 스토어 (p. 170)에서 자동 키 교체 (p. 277), CMKs가져온 키 구성 요소 또는 (p. 291)와 관련된 작업도 허용하지 않습니다.

키 사용이 CMKs인 SIGN_VERIFY에 대한 권한 부여는 암호화 작업을 허용할 수 없습니다. 키 사용이CMKs인 ENCRYPT_DECRYPT에 대한 권한 부여는 Sign 또는 Verify 작업을 허용할 수 없습니다.

제약 편집권한 부여 제약 조건은 피부여자 보안 주체가 수행할 수 있는 권한에 대한 조건을 설정합니다. AWS KMS는두 가지 제약 조건을 지원하며 둘 다 암호화 작업 요청의 암호화 컨텍스트 (p. 16)와 관련됩니다. 이러한 권한부여 제약 조건은 비대칭 CMKs가 있는 암호화 작업 및 DescribeKey 또는 RetireGrant와 같은 관리 작업과같은 암호화 컨텍스트를 지원하지 않는 작업에는 적용되지 않습니다.

Note

비대칭 CMK에 대한 권한 부여에는 암호화 컨텍스트 권한 부여 제약 조건을 사용할 수 없습니다.AWS KMS가 사용하는 비대칭 암호화 알고리즘은 암호화 컨텍스트를 지원하지 않습니다.

• EncryptionContextEquals암호 해독 작업에 지정된 암호화 컨텍스트는 암호화 작업에 지정된 암호화컨텍스트에 대해 대소문자가 정확히 일치해야 합니다. 쌍은 순서에 관계없이 나타날 수 있지만 각 쌍의 키와 값은 다를 수 없습니다.

• EncryptionContextSubset은 요청의 암호화 컨텍스트가 권한 부여 제한 조건에 지정된 암호화 컨텍스트를 포함 할 때만 권한이 적용되도록 지정합니다. 요청의 암호화 컨텍스트는 제약 조건의 암호화 컨텍스트와 대소문자가 정확히 일치해야 하지만 추가 암호화 컨텍스트 쌍을 포함할 수 있습니다. 쌍은 순서에 관계없이 나타날 수 있지만 각 쌍의 키와 값은 다를 수 없습니다.

예를 들어 GenerateDataKey 및 Decrypt 작업을 허용하는 권한 부여를 고려해 보십시오. 여기에는 다음 값이있는 EncryptionContextSubset 제한 조건이 포함됩니다.

{"Department":"Finance","Classification":"Public"}

이 예에서 다음 암호화 컨텍스트 값 중 하나가 EncryptionContextSubset 제약 조건을 충족시킵니다.

138

Page 147: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 정책에서 CreateGrant 권한 부여

• {"Department":"Finance","Classification":"Public"}

• {"Classification":"Public","Department":"Finance"}

• {"Customer":"12345","Department":"Finance","Classification":"Public","Purpose":"Test"}

그러나 다음 암호화 컨텍스트 값은 불완전하거나 지정된 쌍의 대소문자가 정확히 일치하지 않기 때문에 제약조건을 충족시키지 못합니다.

• {"Department":"Finance"}

• {"department":"finance","classification":"public"}

• {"Classification":"Public","Customer":"12345"}

키 정책에서 CreateGrant 권한 부여CreateGrant 작업에 대한 액세스를 제어하는 키 정책을 생성할 때 하나 이상의 정책 조건을 사용하여 권한을제한할 수 있습니다. 는 다음과 같은 권한 부여 관련 조건 키를 모두 지원합니다.AWS KMS 이러한 조건 키에대한 자세한 정보는 AWS KMS 조건 키 (p. 108)을 참조하십시오.

• kms:GrantConstraintType (p. 123)• kms:GrantIsForAWSResource (p. 124)• kms:GrantOperations (p. 124)• kms:GranteePrincipal (p. 125)• kms:RetiringPrincipal (p. 128)

권한 부여CreateGrant권한 부여에 CreateGrant 작업을 요청할 수 있는 권한이 포함되어 있는 경우 해당 권한 부여는 피부여자보안 주체만 동등하게 제한적이거나 보다 제한적인 권한 부여를 생성할 수 있도록 허용합니다.

예를 들면, GenerateDataKey, Decrypt 및 CreateGrant조작을 호출할 수 있게 하는 권한 부여를 고려하십시오. 피부여자 보안 주체는 이 권한을 사용하여 상위 권한 부여에 지정된 작업의 하위 집합(예: GenerateDataKey 및 Decrypt)을 포함하는 권한 부여를 생성할 수 있습니다. 그러나ScheduleKeyDeletion 또는 ReEncrypt와 같은 다른 작업은 포함할 수 없습니다.

또한, 하위 권한 부여에 대한 권한 부여 제약 조건 은 상위 권한 부여와 동등한 수준에서 제한적이거나 이보다 더 제한적이어야 합니다. 예를 들어, 하위 권한 부여는 상위 권한 부여의EncryptionContextSubset 제한 조건에 쌍을 추가 할 수 있지만 이를 제거 할 수는 없습니다. 하위 권한부여는 EncryptionContextSubset 제약 조건을 EncryptionContextEquals 제약 조건으로 변경할수 있지만 그 반대는 아닙니다.

AWS KMS에 서비스 연결 역할 사용AWS Key Management Service의 경우 AWS Identity and Access Management(IAM) 서비스 연결 역할을 사용합니다. 서비스 연결 역할은 AWS KMS에 직접 연결된 고유한 유형의 IAM 역할입니다. 서비스 연결 역할은 AWS KMS에서 정의하며 서비스에서 다른 AWS 서비스를 자동으로 호출하기 위해 필요한 모든 권한을 포함합니다.

서비스 연결 역할을 통해 AWS KMS 설정이 쉬워지는데 필요한 권한을 수동으로 추가할 필요가 없기 때문입니다. AWS KMS에서 서비스 연결 역할 권한을 정의하므로, 달리 정의되지 않은 한 AWS KMS에서만 해당 역

139

Page 148: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 사용자 지정 키 스토어에 대한 서비스 연결 역할 권한

할을 맡을 수 있습니다. 정의된 권한에는 신뢰 정책과 권한 정책이 포함되며, 이 권한 정책은 다른 IAM 개체에 연결할 수 없습니다.

먼저 관련 리소스를 삭제한 후에만 서비스 연결 역할을 삭제할 수 있습니다. 이렇게 하면 리소스에 대한 액세스 권한을 부주의로 삭제할 수 없기 때문에 AWS KMS 리소스가 보호됩니다.

서비스 연결 역할을 지원하는 기타 서비스에 대한 자세한 내용은IAM으로 작업하는 AWS 서비스를 참조하고서비스 연결 역할 열에 예가 있는 서비스를 찾으십시오. 해당 서비스에 대한 서비스 연결 역할 설명서를 보려면 예 링크를 선택합니다.

AWS KMS 사용자 지정 키 스토어에 대한 서비스 연결역할 권한AWS KMS는 AWSServiceRoleForKeyManagementServiceCustomKeyStores이라는 서비스 연결 역할을 사용해 사용자 지정 키 스토어 (p. 291)를 지원합니다. 이 서비스 연결 역할은 AWS CloudHSM 클러스터를 보고 사용자 지정 키 스토어와 해당 AWS CloudHSM 클러스터 간의 연결을 지원하는 네트워크 인프라를 생성하는 AWS KMS 권한을 제공합니다. AWS KMS는 사용자가 사용자 지정 키 스토어 (p. 291)를 생성할 때만이 역할을 생성합니다. 사용자는 이러한 서비스 연결 역할을 직접 생성할 수 없습니다.

AWSServiceRoleForKeyManagementServiceCustomKeyStores 서비스 연결 역할은 이 역할을 맡을cks.kms.amazonaws.com을 신뢰합니다. 따라서 AWS KMS만 이러한 서비스 연결 역할을 수임할 수 있습니다.

이 역할의 권한은 AWS KMS가 AWS CloudHSM 클러스터에 사용자 지정 키 스토어를 연결하기 위해 수행하는 작업으로 제한됩니다. 이렇게 해도 AWS KMS에 어떤 추가 권한도 부여되지 않습니다. 예를 들어 AWSKMS는 AWS CloudHSM 클러스터, HSM 또는 백업을 생성, 관리 또는 삭제할 권한을 가지고 있지 않습니다.

역할을 확인, 편집 및 삭제하는 방법과 AWS KMS가 사용자를 위해 역할을 다시 생성하도록 하는 방법에 대한 권한 및 지침 목록을 포함한 AWSServiceRoleForKeyManagementServiceCustomKeyStores 역할에 대한자세한 내용은 AWS KMS에 AWS CloudHSM 및 Amazon EC2 리소스를 관리할 수 있는 권한 부여 (p. 295)단원을 참조하십시오.

액세스 권한 결정 AWS KMS 고객 마스터 키현재 어느 정도 고객 마스터 키 (CMK) AWS KMS을(를) 검사해야 합니다. CMK의 주요 정책 보조금 (p. 136) 적용되는 CMK, 그리고 잠재적으로 AWS Identity and Access Management (IAM) 정책. 이 작업을 통해 CMK또는 규정 준수 또는 감사 요구 사항을 충족하는 데 도움이 됩니다. 다음 항목들은 전체 목록을생성하는 데 도움이 될 수 있습니다. AWS 현재 CMK.

주제• 키 정책 검사 (p. 140)• IAM 정책 검사 (p. 142)• 권한 부여 검사 (p. 144)• 키 액세스 문제 해결 (p. 144)

키 정책 검사주요 정책 (p. 65) AWS KMS에 대한 액세스를 제어하는 기본 방법 고객 마스터 키 (CMKs) ).

주요 정책이 포함되거나 포함된 경우 기본 키 정책 (p. 67)키 정책은 IAM 사용할 계정의 관리자 IAM 정책에 대한 액세스를 제어하는 정책 CMK. 또한 다른 AWS 계정 (p. 91) 사용 권한 CMK, IAM 외부 계정의

140

Page 149: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 정책 검사

관리자는 IAM 정책을 위임할 수 있습니다. 에 액세스할 수 있는 전체 주 목록을 확인하려면 CMK, 검사하기IAM 정책 (p. 142).

의 주요 정책을 보려면 AWS KMS 고객 관리 CMK (p. 4) 또는 AWS 관리 CMK (p. 4) 계정에서 AWSManagement 콘솔 또는 게키톨시 작업 AWS KMS API 주요 정책을 보려면 kms:GetKeyPolicy 사용 권한CMK. 에 대한 주요 정책을 보려면 CMK, 참조: the section called “키 정책 보기” (p. 76).

키 정책 문서를 검사하고 각 정책 문서의 Principal 요소에 지정된 모든 보안 주체를 기록해 둡니다. TheIAM 사용자, IAM 역할 및 AWS 계정 Principal 이 요소는 CMK.

Note

조건을 사용하여 키 정책을 제한하는 경우를 제외하고, 권한을 허용하는 키 정책 문에 보안 주체를별표(*)로 설정하지 마시기 바랍니다. 별표는 다른 정책문에서 명백하게 거부한 경우를 제외하고 모든 AWS 계정 내 모든 자격 증명에게 CMK를 사용할 수 있도록 허가합니다. 다른 AWS 계정의 사용자는 본인의 계정에서 CMK를 사용할 수 있는 해당 IAM 허가만 있으면 됩니다.

다음 예제는 기본 키 정책 (p. 67)에 수록된 정책 설명을 사용하여 이를 수행하는 방법을 보여줍니다.

Example 정책 설명 1

{ "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:root"}, "Action": "kms:*", "Resource": "*"}

앞의 정책 설명에서 arn:aws:iam::111122223333:root는 AWS 계정 111122223333을 나타냅니다. 기본적으로 이 정책과 같은 정책 설명은 새 CMK 콘솔을 사용하여 또한, 새로운 CMK 프로그램적으로 중요 정책을 제공하지 않습니다.

주요 정책 문서를 사용하여 AWS 계정(루트 사용자)을 사용하여 IAM 계정 내의 정책을 CMK (p. 67). 이는IAM 계정의 사용자 및 역할은 CMK 주요 정책 문서에 원칙으로 명시적으로 등재되지 않습니다. 주의를 기울이십시오 모두 살펴보기 IAM 정책 (p. 142) 모두 AWS 원칙으로 나열된 계좌로, CMK.

Example 정책 설명 2

{ "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/KMSKeyAdmin"}, "Action": [ "kms:Describe*", "kms:Put*", "kms:Create*", "kms:Update*", "kms:Enable*", "kms:Revoke*", "kms:List*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*"}

141

Page 150: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드IAM 정책 검사

앞의 정책 설명에서 arn:aws:iam::111122223333:user/KMSKeyAdmin은 IAM 계정 AWS에서KMSKeyAdmin이라는111122223333 사용자를 나타냅니다. 이 사용자는 정책 문서에 나열된 작업을 수행할수 있습니다. 이 작업은 관리를 위한 관리 동작입니다. CMK.

Example 정책 설명 3

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:role/EncryptionApp"}, "Action": [ "kms:DescribeKey", "kms:GenerateDataKey*", "kms:Encrypt", "kms:ReEncrypt*", "kms:Decrypt" ], "Resource": "*"}

앞의 정책 문에서 arn:aws:iam::111122223333:role/EncryptionApp은IAM 계정AWS 에서EncryptionApp이라는 111122223333 역할을 나타냅니다. 이 역할을 수행할 수 있는 책임자는 정책 설명에나열된 작업을 수행할 수 있습니다. 이 작업은 데이터 암호화 및 암호화를 위한 암호화 동작입니다. CMK.

Example 정책 설명 4

{ "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:role/EncryptionApp"}, "Action": [ "kms:ListGrants", "kms:CreateGrant", "kms:RevokeGrant" ], "Resource": "*", "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}}}

앞의 정책 문에서 arn:aws:iam::111122223333:role/EncryptionApp은IAM 계정AWS 에서EncryptionApp이라는 111122223333 역할을 나타냅니다. 이 역할을 맡을 수 있는 보안 주체는 정책 문서에수록된 작업을 수행할 수 있습니다. 이러한 조치들은 정책 설명 예제 3은(는) CMK 가장 AWS 통합된 서비스를 AWS KMS (p. 341), 특히 사용하는 서비스 보조금 (p. 136). Condition 요소는 위임이 AWS와 통합되는 AWS KMS 서비스이고 승인을 위해 권한 부여를 사용하는 경우에만 위임이 허용되도록 보장합니다.

주요 정책 문서에서 원금을 지정할 수 있는 다양한 방법을 보려면 Principal 지정 in the IAM 사용 설명서.

AWS KMS 키 정책에 대한 자세한 내용은 AWS KMS에서 키 정책 사용 (p. 65) 단원을 참조하십시오.

IAM 정책 검사주요 정책 및 보조금 외에도 IAM 정책과 함께 CMK의 주요 정책을 CMK. IAM 정책과 키 정책이 상호 작용하는 방식에 대한 자세한 내용은 키 액세스 문제 해결 (p. 144) 단원을 참조하십시오.

현재 어느 Principals에 액세스할 수 있는지 CMK 다음을 통해 IAM 브라우저를 사용하여 IAM 정책 시뮬레이터 요청할 수 있습니다. IAM API

IAM 정책을 검사하는 방법

142

Page 151: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드IAM 정책 검사

• IAM 정책 시뮬레이터로 IAM 정책 검사 (p. 143)• IAM API로 IAM 정책 검사 (p. 143)

IAM 정책 시뮬레이터로 IAM 정책 검사The IAM 정책 시뮬레이터는 어떤 Principals가 KMS에 액세스할 수 있는지 알 수 있습니다. CMK 이를 통해IAM 정책.

사용 방법 IAM KMS 액세스를 결정하기 위한 정책 시뮬레이터 CMK

1. AWS Management 콘솔에 로그인한 다음 https://policysim.aws.amazon.com/에서 IAM 정책 시뮬레이터를 엽니다.

2. [Users, Groups, and Roles] 창에서 정책을 시뮬레이션할 사용자, 그룹 또는 역할을 선택합니다.3. (선택 사항) 시뮬레이션을 생략할 정책 옆 확인란의 선택을 취소합니다. 모든 정책을 시뮬레이션하려면

모든 정책을 선택해 둡니다.4. [Policy Simulator] 창에서 다음과 같이 실행합니다.

a. [Select service]에서 [Key Management Service]를 선택합니다.b. 특정 AWS KMS 작업을 시뮬레이션하려면 [Select actions]에서 시뮬레이션할 작업을 선택합니다.

모든 AWS KMS 작업을 시뮬레이션하려면 [Select All]을 선택합니다.5. (선택 사항) 정책 시뮬레이터는 모든 KMS에 대한 액세스를 시뮬레이션합니다. CMKs 기본적으로. 특정

KMS 액세스 시뮬레이션 CMK, 선택 시뮬레이션 설정KMS의 Amazon 자원 이름(ARN)을 입력합니다.CMK 을(를) 시뮬레이션합니다.

6. Run Simulation(시뮬레이션 실행)을 선택합니다.

[Results] 섹션에서 시뮬레이션 결과를 볼 수 있습니다. IAM계정의 모든 AWS 사용자, 그룹, 역할에 대해 2 ~6단계를 반복합니다.

IAM API로 IAM 정책 검사IAM API를 사용해 IAM 정책을 프로그래밍 방식으로 검사할 수 있습니다. 다음 절차는 이 방법의 개요를 제공합니다.

1. 각각에 대해 AWS 계정을 CMK의 주요 정책(즉, 루트 계정 이 형식으로 나열됩니다. "Principal":{"AWS": "arn:aws:iam::111122223333:root"}), 사용자 목록 and 리스트로스 운영 IAM API에서모든 목록 검색 IAM 사용자 및 역할.

2. 목록의 각 IAM 사용자와 역할에 대해 IAM API에서 SimulatePrincipalPolicy 작업을 사용하여 다음 파라미터를 전달합니다.• PolicySourceArn에 대해, 목록에서 사용자나 역할의 Amazon 리소스 이름(ARN)을 지정합니다.PolicySourceArn 요청별로 한 SimulatePrincipalPolicy만 지정할 수 있으므로, 이 작업을 목록의 각 IAM 사용자 및 역할마다 한 번씩 여러 차례 호출해야 합니다.

• ActionNames 목록에 시뮬레이션할 모든 AWS KMS API 작업을 지정합니다. 모두 시뮬레이션하기위해 AWS KMS API 작업, 사용 kms:*. 개별 테스트를 위해 AWS KMS API 작업, 각 API 작업 전에"kms:", 예를 들어 "kms:ListKeys". 전체 목록을 보려면 AWS KMS API 작업, 참조 조치 in the AWSKey Management Service API Reference.

• (선택 사항) IAM 특정 KMS에 액세스할 수 있는 사용자 또는 역할 CMKs, ResourceArns 매개 변수를사용하여 CMKs. 해당 항목이 IAM 사용자 또는 역할은 CMK은(는) ResourceArns 매개변수.

IAM 각 질문에 응답 SimulatePrincipalPolicy 평가 결정 요청: allowed, explicitDeny, 또는implicitDeny. 평가 결정을 포함하는 각 응답에 대해 allowed에 응답에는 구체적인 AWS KMS 허용되는API 작업. 여기에는 또한 CMK 이 평가에는 (있는 경우)

143

Page 152: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드권한 부여 검사

권한 부여 검사보조금(Grants)은 귀하나 AWS 서비스 통합 AWS KMS 사용 방법 및 시기를 지정하는 데 CMK 을(를) 사용할수 있습니다. 교부금은 CMK, 그리고 각 교부금은 CMK 및 허용되는 작업 목록. 권한 부여는 키 정책의 대안으로, 특정한 사용 사례에 유용합니다. 자세한 정보는 권한 부여 사용 (p. 136) 단원을 참조하십시오.

에 대한 보조금 목록을 받으려면 CMK, AWS KMS 청취 작업. 귀하는 CMK 현재 이용 가능한 CMK 을(를) 보조금으로 제공합니다. 예를 들어 다음은 AWS CLI에서 list-grants 명령을 통해 얻어진 권한 부여를 JSON으로 표현한 것입니다.

{"Grants": [{ "Operations": ["Decrypt"], "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Name": "0d8aa621-43ef-4657-b29c-3752c41dc132", "RetiringPrincipal": "arn:aws:iam::123456789012:root", "GranteePrincipal": "arn:aws:sts::111122223333:assumed-role/aws:ec2-infrastructure/i-5d476fab", "GrantId": "dc716f53c93acacf291b1540de3e5a232b76256c83b2ecb22cdefa26576a2d3e", "IssuingAccount": "arn:aws:iam::111122223333:root", "CreationDate": 1.444151834E9, "Constraints": {"EncryptionContextSubset": {"aws:ebs:id": "vol-5cccfb4e"}}}]}

누가 사용할 수 있는지 알아보기 위해 CMK, "GranteePrincipal" 요소. 앞의 예에서 피부여자 보안 주체는 EC2 인스턴스 i-5d476fab와 연결된 위임된 역할 사용자입니다. EC2 인프라는 이 역할을 사용해 암호화된EBS 볼륨 vol-5cccfb4e를 인스턴스에 연결합니다. 이 경우 EC2 인프라 역할은 CMK 이전에 암호화된 EBS볼륨을 생성한 이유는 무엇입니까? CMK. 그리고 사용자는 EC2 인스턴스에 볼륨을 연결합니다.

다음은 AWS CLI에서 list-grants 명령을 통해 얻어진 권한 부여를 JSON으로 표현한 또 하나의 예입니다. 다음 예에서 피부여자 보안 주체는 다른 AWS 계정입니다.

{"Grants": [{ "Operations": ["Encrypt"], "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Name": "", "GranteePrincipal": "arn:aws:iam::444455556666:root", "GrantId": "f271e8328717f8bde5d03f4981f06a6b3fc18bcae2da12ac38bd9186e7925d11", "IssuingAccount": "arn:aws:iam::111122223333:root", "CreationDate": 1.444151269E9}]}

키 액세스 문제 해결(고객 마스터 키)에 대한 액세스 권한을 부여할 때 CMK는 다음을 평가합니다.AWS KMS

• 에 연결된 키 정책 (p. 140)입니다.CMK 키 정책은 항상 AWS를 소유한 CMK 계정에서 정의됩니다.• 요청을 수행하는 사용자 또는 역할에 연결된 IAM모든 (p. 142)IAM 정책IAM. 보안 주체의 CMK 사용을

관리하는 AWS 정책은 항상 보안 주체의 계정에 정의됩니다.• 에 적용되는 모든 권한 부여 (p. 144).CMK• 서비스 제어 정책CMK 및 VPC 엔드포인트 정책AWS Organizations과 같이 사용 요청에 적용될 수 있는

다른 유형의 정책입니다.??? (p. 329) 이러한 정책은 선택 사항이며 기본적으로 모든 작업을 허용하지만보안 주체에게 부여되는 권한을 제한하는 데 사용할 수 있습니다.

AWS KMS는 이러한 정책 메커니즘을 함께 평가하여 CMK에 대한 액세스가 허용되는지 또는 거부되는지를결정합니다. 이를 위해 AWS KMS에서는 다음 흐름 차트에 나온 것과 유사한 프로세스를 사용합니다. 다음흐름 차트에는 정책 평가 프로세스가 시각적으로 표시됩니다.

144

Page 153: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 액세스 문제 해결

이 흐름 차트는 두 부분으로 나뉩니다. 각 부분은 차례로 표시되지만 대개 동시에 평가됩니다.

• Use authorization(권한 부여 사용)은 키 정책, CMK 정책, 권한 부여 및 기타 적용 가능한 정책에 따라 IAM사용이 허용되는지 여부를 결정합니다.

• 키 신뢰에 따라 사용자가 사용할 수 있는 CMK를 신뢰해야 하는지 여부가 결정됩니다. 일반적으로 사용자는 본인의 AWS AWS 계정에 있는 리소스를 신뢰합니다. 하지만 본인 계정의 권한 부여 또는 CMKs 정책에서 AWS를 사용할 수 있는 경우, 다른 IAM 계정의 CMK를 사용할 수도 있습니다.

145

Page 154: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 액세스 문제 해결

이 흐름 차트를 사용하여 호출자의 CMK 사용 권한이 부여되거나 거부된 이유를 확인할 수 있습니다. 사용자의 정책과 권한을 평가할 수도 있습니다. 예를 들어 이 흐름 차트에서는 키 정책, IAM 정책 또는 권한 부여에명시적 DENY 문이 있거나 명시적 ALLOW 문이 없어서 호출자의 액세스가 거부될 수 있음을 보여줍니다.

이 흐름 차트를 사용하여 몇 가지 일반적인 권한 시나리오를 설명하겠습니다.

권한 예제• 예 1: 사용자가 CMK 계정에서 AWS에 액세스할 수 없음 (p. 146)• 예 2: 사용자가 다른 CMK 계정에서 AWS를 사용할 권한이 있는 역할을 수임 (p. 147)

예 1: 사용자가 CMK 계정에서 AWS에 액세스할 수 없음Alice는 111122223333 AWS 계정의 IAM 사용자입니다. Alice는 동일한 CMK 계정에서 AWS에 대한 액세스가 거부되었습니다. Alice가 CMK를 사용할 수 없는 이유는 무엇입니까?

이 경우 Alice는 본인에게 필요한 권한을 부여하는 권한 부여, CMK 정책 또는 키 정책이 없으므로 IAM에 대한 액세스가 거부됩니다. 의 키 정책을 사용하면 CMK 계정이 AWS 정책을 사용하여 IAM에 대한 액세스를제어할 수 있지만, Alice에게 CMK를 사용할 수 있는 권한을 부여하는 IAM 정책이 없습니다.CMK

146

Page 155: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 액세스 문제 해결

이 예제와 관련된 정책을 살펴보겠습니다.

• Alice가 사용할 CMK에는 기본 키 정책 (p. 67)이 있습니다. 이 정책은 를 소유하는 AWS 계정 (p. 67)이 CMK 정책을 사용하여 IAM에 대한 액세스를 제어하도록 허용합니다.CMK 이 키 정책은 흐름 차트에 있는 키 정책에서 호출자의 계정이 IAM 정책을 사용하여 키 액세스를 제어하도록 허용하는가?조건을 충족합니다.

{ "Version" : "2012-10-17", "Id" : "key-test-1", "Statement" : [ { "Sid" : "Delegate to IAM policies", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : "kms:*", "Resource" : "*" } ]}

• 그러나 Alice에게는 키 정책, IAM 정책이 없고 CMK 사용 권한도 부여되지 않았습니다. 따라서 Alice는CMK 사용 권한이 거부됩니다.

예 2: 사용자가 다른 CMK 계정에서 AWS를 사용할 권한이 있는 역할을 수임Bob은 계정 1(111122223333)의 사용자입니다. Bob은 CMK암호화 작업444455556666에서 계정 2()의 (p. 11)를 사용할 수 있습니다. 이렇게 할 수 있는 이유는 무엇입니까?

Tip

교차 계정 권한을 평가할 때는 키 정책이 CMK의 계정에 지정되어 있다는 점에 유의하십시오. IAM정책은 호출자가 다른 계정에 속하더라도 호출자의 계정에 지정됩니다. 에 대한 교차 계정 액세스를제공하는 방법에 대한 자세한 내용은 CMKs 단원을 참조하십시오.다른 계정의 사용자가 CMK를 사용하도록 허용 (p. 91)

• 계정 2의 CMK에 대한 키 정책을 통해 계정 2는 IAM 정책을 사용하여 CMK에 대한 액세스를 제어할 수 있습니다.

• 계정 2의 CMK에 대한 키 정책은 계정 1이 암호화 작업에서 CMK를 사용하도록 허용합니다. 그러나 계정 1은 IAM 정책을 사용하여 해당 보안 주체에 CMK에 대한 액세스 권한을 부여해야 합니다.

• 계정 1의 IAM 정책을 사용하면 Engineering 역할이 암호화 작업에 계정 2의 CMK를 사용할 수 있습니다.

• 계정 1의 사용자인 Bob은 Engineering 역할을 맡을 수 있는 권한을 가집니다.• Bob은 이 CMK이 본인의 계정에는 없지만 계정의 IAM 정책에 따라 이 CMK을 사용할 수 있는 명시적 권한

을 부여받으므로 이 을 신뢰할 수 있습니다.

147

Page 156: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 액세스 문제 해결

계정 1의 사용자인 Bob이 계정 2에서 CMK를 사용하도록 허용하는 정책을 살펴보겠습니다.

• 에 대한 키 정책을 사용하면 계정 2(CMK를 소유한 계정인 444455556666)가 CMK 정책을 사용하여 IAM에 대한 액세스를 제어할 수 있습니다.CMK 또한 이 키 정책은 계정 1(111122223333)이 정책 설명의 CMK요소에 지정된 암호화 작업에서 Action를 사용하도록 허용합니다. 하지만 계정 1이 CMK에 대한 액세스권한을 보안 주체에 부여하는 IAM 정책을 정의할 때까지는 계정 1의 어떤 사용자도 계정 2의 CMK를 사용할 수 없습니다.

이 흐름 차트에서 계정 2의 이 키 정책은 키 정책에서 호출자의 계정이 IAM 정책을 사용하여 키 액세스를제어하도록 허용하는가? 조건을 충족합니다.

{ "Id": "key-policy-acct-2", "Version": "2012-10-17", "Statement": [ { "Sid": "Permission to use IAM policies", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:root" },

148

Page 157: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 액세스 문제 해결

"Action": "kms:*", "Resource": "*" }, { "Sid": "Allow account 1 to use this CMK", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncryptFrom", "kms:ReEncryptTo", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:DescribeKey" ], "Resource": "*" } ]}

• 호출자의 IAM 계정(계정 1, AWS)에 있는 111122223333 정책은 보안 주체에게 계정 2(CMK)에서444455556666를 사용하여 암호화 작업을 수행할 수 있는 권한을 부여합니다. 요소는 계정 2의 키 정책이계정 1에 제공한 것과 동일한 권한을 보안 주체에 위임합니다.Action 계정 1의 Engineering 역할에 이러한 권한을 부여하려면 역할에 이 인라인 정책이 포함되어 있어야 합니다Engineering.

이와 같은 교차 계정 IAM 정책은 계정 2의 CMK에 대한 키 정책이 계정 1에 CMK를 사용할 권한을 부여하는 경우에만 유효합니다. 또한 계정 1은 키 정책이 계정에 제공한 작업을 수행할 수 있는 권한만 해당 보안주체에 제공할 수 있습니다.

이것은 흐름 차트에서 IAM 정책에서 호출자가 이 작업을 수행하도록 허용하는가? 조건을 충족합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncryptFrom", "kms:ReEncryptTo", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:DescribeKey" ], "Resource": [ "arn:aws:kms:us-west-2:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab" ] } ]}

• 마지막 필수 요소는 계정 1의 Engineering 역할 정의입니다. 역할의 AssumeRolePolicyDocument에따라 Bob은 Engineering 역할을 맡을 수 있습니다.

{ "Role": { "Arn": "arn:aws:iam::111122223333:role/Engineering", "CreateDate": "2019-05-16T00:09:25Z",

149

Page 158: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 액세스 문제 해결

"AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": { "Principal": { "AWS": "arn:aws:iam::111122223333:user/bob" }, "Effect": "Allow", "Action": "sts:AssumeRole" } }, "Path": "/", "RoleName": "Engineering", "RoleId": "AROA4KJY2TU23Y7NK62MV" }}

150

Page 159: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드데이터 보호

보안 AWS Key Management ServiceAWS에서 가장 우선순위가 높은 것이 클라우드 보안입니다. AWS 고객은 보안에 매우 민감한 조직의 요구사항에 부합하도록 구축된 데이터 센터 및 네트워크 아키텍처의 혜택을 누릴 수 있습니다.

보안은 AWS와 귀하의 공동 책임입니다. 공동 책임 모델은 이 사항을 클라우드의 보안 및 클라우드 내 보안으로 설명합니다.

• 보안 of 클라우드 – AWS 운영되는 인프라를 보호할 책임이 있습니다. AWS 서비스 AWS 클라우드. AWS또한 안전하게 사용할 수 있는 서비스를 제공합니다. 타사 감사자는 AWS 규정 준수 프로그램의 일환으로보안 효과를 정기적으로 테스트하고 검증합니다. 적용되는 규정 준수 프로그램에 대해 알아보려면 AWSKey Management Service (AWS KMS참조) 컴플라이언스 프로그램별 범위 내 AWS 서비스.

• 보안 에서 클라우드 – 귀하의 책임은 AWS 사용하는 서비스입니다. 에서 AWS KMS, 고객 마스터 키의 구성 및 사용과 더불어, 여러분은 데이터, 회사 요건, 관련 법률 및 규정의 민감도를 비롯한 다른 요인들을 책임집니다.

이 설명서는 AWS Key Management Service 사용 시 공동 책임 모델을 적용하는 방법을 이해하는 데 도움이됩니다. 보안 및 규정 준수 목표에 맞게 AWS KMS를 구성하는 방법을 보여줍니다.

주제• AWS Key Management Service의 데이터 보호 (p. 151)• AWS Key Management Service의 자격 증명 및 액세스 관리 (p. 153)• AWS Key Management Service의 로깅 및 모니터링 (p. 153)• AWS Key Management Service의 규정 준수 확인 (p. 154)• AWS Key Management Service의 인프라 보안 (p. 155)• AWS Key Management Service의 보안 모범 사례 (p. 156)

AWS Key Management Service의 데이터 보호AWS Key Management Service는 암호화 키를 저장하고 보호하여 가용성이 뛰어난 동시에 강력하고 유연한액세스 제어를 제공합니다.

주제• 데이터 암호화 (p. 151)• 인터네트워크 트래픽 개인 정보 보호 (p. 153)

데이터 암호화의 데이터는 AWS KMS고객 마스터 키(CMK)와 이들이 나타내는 암호화 키 구성 요소로 구성됩니다. (p. 3)이 키 구성 요소는 AWS KMS HSM(하드웨어 보안 모듈) 내에서만 사용 중인 경우에만 일반 텍스트로 존재합니다. 그렇지 않으면 키 구성 요소가 암호화되어 내구성 있는 영구 스토리지에 저장됩니다.

가 AWS KMS에 대해 생성하는 키 구성 요소는 CMKs AWS KMS의 경계를 암호화되지 않은 상태로 두지 않습니다.HSMs API 작업에서 내보내거나 전송하지 않습니다.AWS KMS

주제• 저장된 암호화 (p. 152)• 전송 중 데이터 암호화 (p. 152)• 키 관리 (p. 152)

151

Page 160: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드데이터 암호화

저장된 암호화AWS KMS는 FIPS 140-2 레벨 2–호환 HSM(하드웨어 보안 모듈)에서 고객 마스터 키(CMK)에 대한 키 구성요소를 생성합니다. 사용하지 않는 경우 키 구성 요소는 HSM에 의해 암호화되고 내구성 있는 영구 스토리지에 기록됩니다. 에 대한 키 구성 요소 및 키 구성 요소를 보호하는 암호화 키는 CMKs를 일반 텍스트 형식으로 두지 않습니다.HSMs

에 대한 키 구성 요소의 암호화 및 관리는 전적으로 CMKs에서 처리합니다.AWS KMS

자세한 내용은 AWS Key Management Service 암호화 세부 정보 백서의 "고객 마스터 키" 단원을 참조하십시오.

전송 중 데이터 암호화에서 AWS KMS에 대해 생성되는 키 구성 요소는 CMKs API 작업에서 절대 내보내거나 전송되지 않습니다.AWS KMS는 AWS KMS키 식별자를 사용하여 API 작업에서 (p. 12)를 나타냅니다.CMKs 마찬가지로 CMKsAWS KMS사용자 지정 키 스토어의 (p. 291)에 대한 키 구성 요소는 내보낼 수 없으며 AWS KMS 또는AWS CloudHSM API 작업에서 전송되지 않습니다.

그러나 일부 AWS KMS API 작업은 데이터 키 (p. 5)를 반환합니다. 또한 고객은 API 작업을 사용하여 선택한에 대한 (p. 277)키 구성 요소를 가져오기CMKs할 수 있습니다.

모든 AWS KMS API 호출은 서명 후 TLS(전송 계층 보안) 1.2 이상을 사용하여 전송해야 합니다. 또한 AWSKMS를 호출하려면 완벽한 전방향 보안을 지원하는 최신 암호 제품군이 필요합니다. 즉, 프라이빗 키와 같은보안 암호의 침해로 인해 세션 키가 손상되지 않습니다.

명령줄 인터페이스 또는 API를 통해 AWS에 액세스할 때 FIPS 140-2 검증 암호화 모듈이 필요한 경우 FIPS 엔드포인트를 사용합니다. 사용 가능한 FIPS 엔드포인트에 대한 자세한 내용은 FIPS(FederalInformation Processing Standard) 140-2를 참조하십시오. FIPS 엔드포인트 목록은 AWS KMS의 AWS KeyManagement Service 엔드포인트 및 할당량을 참조하십시오.AWS General Reference

서비스 호스트와 AWS KMS 간의 통신은 인증된 암호화 체계에서 ECC(Elliptic Curve Cryptography) 및AES(Advanced Encryption Standard)를 사용하여 보호됩니다.HSMs 자세한 내용은 AWS Key ManagementService 암호화 세부 정보 백서의 "Internal Communications Security" 단원을 참조하십시오.

키 관리AWS KMS는 고객 데이터를 직접 저장하지 않습니다. 대신, AWS KMS는 암호화 키 구성 요소에서 지원하는논리적 엔터티인 고객 마스터 키(CMK)를 저장하고 보호해야 합니다.

용 키 구성 요소는 FIPS 140-2 레벨-2AWS KMS검증된 하드웨어 보안 모듈(HSM)의 분산 플릿에서 지원됩니다.CMKs– 각 AWS KMS HSM은 AWS KMS의 보안 및 확장성 요구 사항을 충족하는 전용 암호화 기능을 제공하도록 설계된 독립형 암호화 하드웨어 어플라이언스입니다.

에 대한 키 구성 요소는 CMKs 내부에서만 그리고 키 구성 요소가 생성되거나 암호화 작업에 사용되는 경우에만 일반 텍스트로 존재합니다.HSMs

사용하지 않는 경우 키 구성 요소는 HSMs에서 암호화되고, 암호화된 키 구성 요소는 내구성 있고 지연 시간이 짧은 영구 스토리지에 기록됩니다. 키 구성 요소를 보호하는 암호화 키는 HSMs를 일반 텍스트 형식으로두지 않습니다. 서비스 연산자를 포함하여 키 구성 요소 또는 HSM 암호화 키를 일반 텍스트로 내보내거나볼 수 있는 모든 사용자의 메커니즘이 없습니다.AWS

선택적 기능인 (p. 291)사용자 지정 키 스토어AWS KMS를 사용하면 제어하는 CMKs 하드웨어 보안 모듈에서 생성된 키 구성 요소를 기반으로 AWS CloudHSM를 생성할 수 있습니다. 이러한 HSMs은 FIPS 140-2레벨 3에서 인증되었습니다.

또 다른 선택적 기능을 사용하면 CMK에 대한 키 구성 요소를 가져오도록 (p. 277)할 수 있습니다. 소스에서 AWS KMS로 전송하는 동안 가져온 키 구성 요소는 AWS KMS HSMs에서 생성된 RSA 키 페어를 사용하여 암호화되어야 합니다. 가져온 키 구성 요소는 AWS KMS HSM에서 해독되고 HSM의 대칭 키 아래에서 재

152

Page 161: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드인터네트워크 개인 정보 보호

암호화됩니다. 이러한 작업은 가져온 키 구성 요소가 AWS KMS에서 생성된 키 구성 요소와 함께 저장되기전에 수행됩니다. 가져온 키 구성 요소는 암호화되지 않은 상태로 HSMs를 벗어나지 않습니다. 키 구성 요소를 제공한 고객은 AWS KMS 외부에서 키 구성 요소의 안전한 사용, 내구성 및 유지 관리를 책임집니다.

및 키 구성 요소의 관리에 대한 자세한 내용은 CMKs 단원을 참조하십시오.AWS Key Management Service암호화 세부 정보 백서

인터네트워크 트래픽 개인 정보 보호AWS KMS는 AWS Management 콘솔 및 고객 마스터 키(CMK)를 생성 및 관리하고 암호화 작업에 사용할 수있도록 하는 API 작업 세트를 지원합니다.

AWS KMS는 프라이빗 네트워크에서 AWS까지 두 가지 네트워크 연결 옵션을 지원합니다.

• 인터넷을 통한 IPSec VPN 연결• AWS Direct Connect: 표준 이더넷 광섬유 케이블을 통해 내부 네트워크를 위치에 연결합니다.AWS

Direct Connect

개인 정보를 보호하려면 모든 AWS KMS API 호출에 서명하고 TLS(전송 계층 보안 프로토콜) 1.2 이상을 통해 전송해야 합니다. 또한 호출에는 완벽한 전방향 보안을 지원하는 최신 암호 제품군이 필요합니다. 용 키구성 요소를 저장하는 HSM(하드웨어 보안 모듈)에 대한 트래픽은 CMKs 내부 네트워크를 통해 알려진 AWSKMS API 호스트에서만 허용됩니다.AWS

퍼블릭 인터넷을 통해 트래픽을 전송하지 않고 Virtual Private Cloud(VPC)에서 AWS KMS에 직접 연결하려면 AWS PrivateLink로 구동되는 VPC 엔드포인트를 사용합니다. 자세한 정보는 VPC 엔드포인트를 통해AWS KMS에 연결 (p. 328) 단원을 참조하십시오.

또한 AWS KMS는 TLS(전송 계층 보안) 네트워크 암호화 프로토콜에 대한 하이브리드 포스트 양자 키 교환 (p. 336) 옵션을 지원합니다. KMS API 엔드포인트에 연결할 때 TLS와 함께 이 옵션을 사용할 수 있습니다.

AWS Key Management Service의 자격 증명 및 액세스 관리

AWS Identity and Access Management (IAM)는 관리자가 AWS 리소스에 대한 액세스를 안전하게 제어할 수있도록 도와줍니다. IAM 관리자는 인증 (로그인) 및 승인됨 사용할 수 있습니다. AWS KMS 자원. 자세한 정보는 AWS KMS에서 IAM 정책 사용 (p. 82) 단원을 참조하십시오.

주요 정책 (p. 65) 의 고객 마스터 키(cmk)에 대한 액세스를 제어하는 기본 메커니즘입니다. AWS KMS. 모든CMK에는 키 정책이 있어야 합니다. 또한 IAM 정책 (p. 82) and 보조금 (p. 136)주요 정책과 함께 cmks 에 대한 액세스를 제어합니다. 자세한 정보는 AWS KMS에 대한 인증 및 액세스 제어 (p. 62) 단원을 참조하십시오.

만약 여러분이 Amazon Virtual Private Cloud (Amazon VPC) 인터페이스 VPC 끝점 생성 (p. 328) ~ AWSKMS Powered by AWS PrivateLink. VPC 끝점 정책을 사용하여 어떤 Principals를 액세스할 수 있는지 AWSKMS 끝점은 API 호출을 수행할 수 있으며, 어떤 cmks가 액세스할 수 있는가 입니다. 자세한 내용은 VPC 엔드포인트에 대한 액세스 제어 (p. 329) 단원을 참조하십시오.

AWS Key Management Service의 로깅 및 모니터링모니터링은 고객 마스터 키(cmk)의 가용성, 상태 및 사용량을 이해하는 데 있어 중요한 부분입니다. AWSKMS. 모니터링은 사용자의 보안, 신뢰성, 가용성 및 성능을 AWS 솔루션. AWS 에서는 cmks 모니터링을 위한 여러 도구를 제공합니다.

153

Page 162: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드규정 준수 확인

AWS CloudTrail 로그

모든 통화 AWS KMS API 작업은 AWS CloudTrail 로그. 이 로그는 AWS KMS 콘솔 및 통화 AWSKMS 기타 AWS 서비스. 상이한 방식으로 CMK를 사용하는 통화 등 교차 계정 API 호출 AWS 계정이CloudTrail 두 계정 모두에 대한 로그가 있습니다.

문제 해결 또는 감사 시 로그를 사용하여 CMK의 수명 주기를 재구성할 수 있습니다. 또한 암호화 작업에서 CMK의 관리 및 사용을 확인할 수 있습니다. 자세한 정보는 the section called “AWS CloudTrail를 사용한 로깅” (p. 181) 단원을 참조하십시오.

Amazon CloudWatch Logs

로그 파일 모니터링, 저장 및 액세스 AWS CloudTrail 및 기타 소스. 자세한 정보는 Amazon CloudWatch사용 설명서를 참조하십시오.

대상 AWS KMS, CloudWatch 주요 자료가 만료될 때까지 초를 저장하여 가져온 키 재료 (p. 277). 자세한 정보는 the section called “CloudWatch을(를) 사용하여 모니터링” (p. 214) 단원을 참조하십시오.

Amazon CloudWatch Events

AWS KMS 생성 CloudWatch CMK가 회전 (p. 170) 또는 삭제됨 (p. 266) 또는 가져온 키 재료 (p. 277) CMK에서 만료됩니다. 검색 AWS KMS 이벤트(API 작업)를 하나 이상의 대상 함수 또는스트림으로 라우팅하여 상태 정보를 캡처합니다. 자세한 내용은 the section called “AWS KMS 이벤트” (p. 216) 및 Amazon CloudWatch Events 사용 설명서를 참조하십시오.

Amazon CloudWatch 지표

다음을 사용하여 고객 마스터 키(cmk)를 모니터링할 수 있습니다. CloudWatch AWS KMS에서 성능 메트릭으로 원시 데이터를 수집하고 처리하는 메트릭. 데이터는 2주 간격으로 기록되므로 현재 및 과거 정보의 추세를 볼 수 있습니다. 이렇게 하면 cmks를 사용하는 방법과 시간이 지남에 따라 어떻게 사용되는지 이해할 수 있습니다. 사용에 대한 정보 CloudWatch cmks를 모니터링하는 메트릭, 참조 AWS KMS 지표 및 차원 (p. 214).

Amazon CloudWatch 경보

지정한 기간 동안 단일 메트릭 변경을 봅니다. 그런 다음 여러 기간 동안 임계값에 상대적인 메트릭 값을기준으로 작업을 수행합니다. 예를 들어, CloudWatch 누군가가 암호화 작업에서 삭제할 예정인 CMK를사용하려고 할 때 트리거되는 알람입니다. 이는 CMK가 여전히 사용되고 있으며 삭제되지 않아야 함을나타냅니다. 자세한 정보는 the section called “Amazon CloudWatch 경보 생성” (p. 271) 단원을 참조하십시오.

AWS Key Management Service의 규정 준수 확인외부 감사자는 여러 AWS 규정 준수 프로그램의 일환으로 AWS Key Management Service의 보안 및 규정 준수를 평가합니다. 여기에는 SOC, PCI, Fedramp, HIPPA 등이 포함됩니다.

주제• 규정 준수 및 보안 문서 (p. 154)• 자세히 알아보기 (p. 155)

규정 준수 및 보안 문서다음 규정 준수 및 보안 문서 다루기 AWS KMS. 이를 보려면 AWS Artifact.

• C5(Cloud Computing Compliance Controls Catalogue)• ISO 27001:2013 적용성 보고서(SoA)• ISO 27001:2013 인증서

154

Page 163: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드자세히 알아보기

• ISO 27017:2015 적용성 보고서(SoA)• ISO 27017:2015 인증서• ISO 27018:2015 적용성 보고서(SoA)• ISO 27018:2014 인증서• ISO 9001:2015 인증서• PCI DSS 규정 준수 증명(AOC) 및 책임 요약• SOC(Service Organization Controls) 1 보고서• SOC(Service Organization Controls) 2 보고서• 기밀성에 대한 SOC(Service Organization Controls) 2 보고서• Fedramp-High

도움이 필요한 경우 AWS Artifact, 참조: AWS 아티팩트 보고서 다운로드.

자세히 알아보기AWS KMS 사용 시 규정 준수 책임은 데이터의 민감도, 회사의 규정 준수 목표 및 관련 법률 및 규정에 따라결정됩니다. 사용자의 AWS KMS 출판된 표준 준수 여부에 따라 AWS 에 도움이 되는 자원 제공:

• 컴플라이언스 프로그램별 범위 내 AWS 서비스 – 이 페이지 목록은 AWS 특정 규정 준수 프로그램의 범위에 속하는 서비스입니다. 일반 정보는 AWS 규정 준수 프로그램을 참조하십시오.

• 보안 및 규정 준수 빠른 시작 안내서 – 이 배포 안내서에서는 아키텍처 고려 사항에 대해 설명하고 보안 및규정 준수에 중점을 둔 기본 AWS 환경을 배포하기 위한 단계를 제공합니다.

• AWS 규정 준수 리소스 – 이 워크북 및 안내서는 귀사의 산업 및 위치에 적용될 수 있습니다.• AWS Config – 이 AWS 제품으로 리소스 구성이 내부 관행, 업계 지침 및 규정을 준수하는 정도를 평가할

수 있습니다.• AWS Security Hub – 이 AWS 서비스는 보안 업계 표준 및 모범 사례를 준수하는지 여부를 확인하는 데 도

움이 되도록 AWS 내 보안 상태에 대한 포괄적인 보기를 제공합니다.

AWS Key Management Service의 인프라 보안관리 서비스로서 AWS Key Management Service (AWS KMS)는 AWS 글로벌 네트워크 보안 절차를Amazon 웹 서비스: : 보안 프로세스 개요(백서)

액세스하려면 AWS KMS 네트워크를 통해 AWS KMS API 작업이 AWS Key Management Service APIReference. 사용 방법 표준 AWS KMS 평가변수클라이언트는 TLS(Transport Layer Security) 1.0 이상을 지원해야 합니다. 사용 방법 AWS KMS FIPS 엔드포인트고객은 TLS 1.2 이상을 지원해야 합니다. 클라이언트는 Ephemeral Diffie-Hellman(DHE) 또는 Elliptic Curve Ephemeral Diffie-Hellman(ECDHE)과 같은 PFS(전달완전 보안, Perfect Forward Secrecy)가 포함된 암호 제품군도 지원해야 합니다. Java 7 이상의 최신 시스템은 대부분 이러한 모드를 지원합니다.

또한 요청은 액세스 키 ID 및 IAM 주체와 관련된 보안 액세스 키를 사용하여 서명해야 합니다. 또는 AWSSecurity Token Service(AWS STS)를 사용하여 임시 보안 자격 증명을 생성하여 요청에 서명할 수 있습니다.

네트워크 위치에서 이러한 API 작업을 호출할 수 있지만 AWS KMS 는 소스 IP 주소, VPC 및 VPC 엔드포인트에 따라 CMK에 대한 액세스를 제어할 수 있는 글로벌 정책 조건을 지원합니다. 주요 정책 및 IAM 정책. 그러나 이러한 조건들은 AWS 을(를) 대신하여 CMK를 사용합니다. 자세한 내용은 AWS 전역 조건 키 (p. 107)단원을 참조하십시오.

예를 들어, 다음과 같은 주요 정책 설명을 통해 사용자는 다음과 같이 가정할 수 있습니다. KMSTestRole 이고객 마스터 키(CMK)를 사용하기 위한 역할을 암호화 작업 (p. 11) 소스 IP 주소가 정책에 지정된 IP 주소 중하나이면

155

Page 164: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드물리적 호스트 격리

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:role/KMSTestRole"}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "NotIpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "203.0.113.0/24" ] } } }}

물리적 호스트 격리다음과 같은 물리적 인프라의 보안 AWS KMS 사용에는 물리적 및 환경적 보안 섹션 Amazon 웹 서비스: : 보안 프로세스 개요(백서) 이전 섹션에 나열된 규정 준수 보고서와 제3자 감사 결과에 대한 자세한 내용을 확인할 수 있습니다.

AWS KMS 는 물리적 공격에 저항하기 위한 특정 제어로 설계된 강화된 하드웨어 보안 모듈(hsm)을 지원합니다. hsms는 하지 마십시오 는 여러 논리적 테넌트 간에 물리적 디바이스를 구성하는 하이퍼바이저와 같은가상화 계층을 가지고 있습니다. 핵심 재료 AWS KMS 고객 마스터 키(cmk)는 hsm의 휘발성 메모리에만 저장되며 CMK가 사용 중인 동안에만 저장됩니다. 이 메모리는 HSM이 의도한 및 의도하지 않은 종료 및 재설정을 포함하여 운영 상태에서 벗어날 때 삭제됩니다. 작업에 대한 자세한 정보는 AWS KMS hsms, AWS KeyManagement Service 암호화 세부 정보 백서.

AWS Key Management Service의 보안 모범 사례AWS Key Management Service (AWS KMS)는 암호화 키 보호를 강화하기 위해 구현할 수 있는 여러 보안기능을 지원합니다. 이러한 특징은 이 주제에 요약되어 있으며, AWS Key Management Service 모범 사례 백서. 이러한 일반 지침은 완전한 보안 솔루션을 대표하지 않습니다. 모든 상황에 대한 모든 모범 사례가 적절하지 않기 때문에 이는 처방을 위한 것이 아닙니다.

156

Page 165: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드

대칭 및 비대칭 키 사용AWS KMS는 데이터 및 데이터 키를 보호하는 데 사용하는 고객 마스터 키 (p. 3)(CMKs)를 보호합니다. 보안키는 AWS 직원을 포함하여 아무도 일반 텍스트 키 구성 요소에 액세스할 수 없도록 설계된 하드웨어 보안모듈에서만 생성되고 사용됩니다.

에 대한 액세스를 제어하는 CMKs키 정책AWS, ??? (p. 65) 정책 및 IAM권한 부여 (p. 82) 설정, 활성화 및 비활성화 (p. 136), CMKs태그 및 별칭 생성, (p. 47)삭제CMKs를 포함하여 계정에서 (p. 44)를 생성하고 관리할 수 있습니다.CMKs (p. 266) 를 사용하여 CMKs와 통합된 AWS 서비스에서 리소스를 보호할 수 있습니다.AWS KMS (p. 341) 또한 CMKs 로그AWS CloudTrail에서 (p. 181)를 사용하거나 관리하는 모든 작업을 감사할 수 있습니다.

AWS KMS는 대칭 및 비대칭 CMKs를 지원합니다.

• 대칭 CMK (p. 158): 절대로 암호화되지 않은 상태로 AWS KMS를 벗어나지 않는 단일 256비트 보안 암호화 키를 나타냅니다. 대칭 CMK를 사용하려면 AWS KMS를 호출해야 합니다.

• 비대칭 CMK (p. 158): 암호화 및 암호 해독 또는 서명 및 확인에 사용할 수 있는 수학적으로 관련된 퍼블릭 키 및 프라이빗 키 페어를 나타내지만 둘 다 사용할 수는 없습니다. 프라이빗 키는 절대로 암호화되지않은 상태로 AWS KMS를 벗어나지 않습니다. 퍼블릭 키는 AWS KMS API 작업을 호출하여 AWS KMS 내부에서 사용하거나 퍼블릭 키를 다운로드하여 AWS KMS 외부에서 사용할 수 있습니다.

Note

비대칭 CMK 및 비대칭 데이터 키 페어는 중국(베이징) 및 중국(닝샤)를 제외하고 AWS KMS에서 지원하는 모든 AWS 리전에서 지원됩니다.

또한 AWS KMS는 AWS KMS 외부에서 클라이언트 측 암호화에 사용하도록 설계된 대칭 데이터 키 페어 (p. 5) 및 비대칭 데이터 키 페어 (p. 6)를 제공합니다. 비대칭 데이터 키 페어의 프라이빗 키와 대칭 데이터키는 CMK의 대칭 AWS KMS에 의해 보호됩니다.

• 대칭 데이터 키 — AWS KMS 외부의 데이터를 암호화하는 데 사용할 수 있는 대칭 암호화 키입니다. 이 키는 CMK의 대칭 AWS KMS에 의해 보호됩니다.

• 비대칭 데이터 키 페어 — 퍼블릭 키와 프라이빗 키로 구성된 RSA 또는 타원 곡선(ECC) 키 페어입니다.AWS KMS 외부에서 데이터 키 페어를 사용하여 데이터를 암호화 및 암호 해독하거나 메시지에 서명하고서명을 확인할 수 있습니다. 프라이빗 키는 CMK의 대칭 AWS KMS에 의해 보호됩니다.

데이터 키 및 데이터 키 페어를 생성하고 사용하는 방법에 대한 자세한 내용은 데이터 키 (p. 5) 및 데이터 키페어 (p. 6) 단원을 참조하십시오. 계정의 보안 주체가 생성할 수 있는 데이터 키 페어의 유형을 제한하려면kms:DataKeyPairSpec (p. 114) 조건 키를 사용합니다.

이 주제에서는 대칭 및 비대칭 CMKs의 작동 방식, 차이점, 그리고 데이터를 보호하는 데 필요한 CMK 유형을 결정하는 방법을 설명합니다. 또한 대칭 데이터 키와 비대칭 데이터 키 페어의 작동 방식과 AWS KMS 외부에서 사용하는 방법에 대해서도 설명합니다.

자세히 알아보기

• 각 AWS KMS 유형에 적용되는 CMK API 작업을 비교하는 표는 the section called “대칭 및 비대칭 CMKs비교” (p. 166) 단원을 참조하십시오.

• 이 대칭 또는 비대칭인지 여부를 확인하려면 CMK 단원을 참조하십시오.대칭 및 비대칭 CMKs 식별 (p. 40)

• 콘솔에서 대칭 및 비대칭 AWS KMS에 대해 설정하는 기본 키 정책의 차이점을 검사하려면 CMKs 단원을참조하십시오.the section called “주요 사용자가 CMK with AWS 서비스” (p. 72)

157

Page 166: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드대칭 및 비대칭 CMKs 정보

• 계정의 보안 주체가 CMKs에 사용할 수 있는 키 사양, 키 사용, 암호화 알고리즘 및 서명 알고리즘을 지정하려면 the section called “AWS KMS 조건 키” (p. 108) 단원을 참조하십시오.

• 다양한 유형의 요청 할당량에 적용되는 CMKs에 대한 자세한 내용은 the section called “요청 할당량” (p. 398) 단원을 참조하십시오.

• 비대칭 CMKs를 사용하여 메시지에 서명하고 서명을 확인하는 방법을 알아보려면 보안 블로그AWS KMS의 의 새로운 비대칭 키 기능을 사용하여 디지털 서명을 참조하십시오.AWS

주제• 대칭 및 비대칭 CMKs 정보 (p. 158)• 구성을 선택하는 방법CMK (p. 159)• 의 암호화 구성 보기CMKs (p. 165)• 대칭 및 비대칭 CMKs 비교 (p. 166)

대칭 및 비대칭 CMKs 정보에서는 대칭 및 비대칭 AWS KMS를 생성할 수 있습니다.CMKs

대칭 고객 마스터 키KMS에서 고객 마스터 키(CMK)를 생성하면 기본적으로 대칭 CMK가 생성됩니다.

에서 AWS KMS대칭 CMK는 절대로 암호화되지 않은 상태에서 를 벗어나지 않는 256비트 암호화 키를 나타냅니다.AWS KMS 대칭 CMK를 사용하려면 AWS KMS를 호출해야 합니다. 대칭 키는 대칭 암호화에 사용되며 동일한 키가 암호화 및 암호 해독에 사용됩니다.

작업에서 명시적으로 비대칭 암호화를 요구하지 않는 한, CMKs를 암호화되지 않은 상태로 두지 않는 대칭 AWS KMS가 좋은 선택입니다. 대칭 의 암호화 구성 또는 키 사양CMKs에 대한 자세한 내용은SYMMETRIC_DEFAULT 키 사양 (p. 161)을 참조하십시오. 대칭 CMK 생성에 대한 도움말은 대칭 CMKs생성 (p. 22) 단원을 참조하십시오.

AWS KMS와 통합되는 AWS 서비스는 대칭 CMK를 사용하여 데이터를 암호화합니다. 이러한 서비스는 비대칭 CMK를 사용한 암호화를 지원하지 않습니다. CMK가 대칭 또는 비대칭인지 여부를 확인하는 방법은 대칭및 비대칭 CMKs 식별 (p. 40) 단원을 참조하십시오.

에서 대칭 CMK를 사용하여 데이터를 암호화, 암호 해독 및 다시 암호화하고, 데이터 키 및 데이터 키 페어를생성하고, 임의의 바이트 문자열을 생성할 수 있습니다.AWS KMS 대칭 로 (p. 277)자체 키 구성 요소를 가져오고CMK사용자 지정 키 스토어CMKs에서 대칭 를 생성할 수 있습니다. (p. 291) 대칭 및 비대칭 CMKs에서 수행할 수 있는 작업을 비교하는 표는 대칭 및 비대칭 CMKs 비교 (p. 166)를 참조하십시오.

비대칭 고객 마스터 키Note

비대칭 CMK 및 비대칭 데이터 키 페어는 중국(베이징) 및 중국(닝샤)를 제외하고 AWS KMS에서 지원하는 모든 AWS 리전에서 지원됩니다.

에서 비대칭 CMK를 생성할 수 있습니다.AWS KMS 비대칭 CMK은 수학적으로 관련된 퍼블릭 키 및 프라이빗 키 페어를 나타냅니다. 퍼블릭 키는 신뢰할 수 없더라도 누구에게나 제공할 수 있지만 프라이빗 키는 비밀로 유지해야 합니다.

비대칭 CMK에서 프라이빗 키는 AWS KMS에서 생성되며 절대로 암호화되지 않은 상태로 AWS KMS를 벗어나지 않습니다. 프라이빗 키를 사용하려면 AWS KMS에 전화해야 합니다. 퍼블릭 키는 AWS KMS API 작업을 호출하여 AWS KMS 내부에서 사용할 수 있습니다. 또는 퍼블릭 키를 다운로드 (p. 48)하여 AWS KMS외부에서 사용할 수 있습니다.

158

Page 167: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드구성을 선택하는 방법CMK

사용 사례에서 AWS를 호출할 수 없는 사용자가 AWS KMS 외부에서 암호화를 수행해야 하는 경우 비대칭CMKs를 사용하는 것이 좋습니다. 그러나 CMK 서비스에 저장하거나 관리하는 데이터를 암호화하기 위해AWS를 생성하는 경우 대칭 CMK를 사용합니다. AWS KMS와 통합되는 AWS 서비스는 대칭 CMK를 사용하여 데이터를 암호화합니다. 이러한 서비스는 비대칭 CMK를 사용한 암호화를 지원하지 않습니다.

AWS KMS는 두 가지 유형의 비대칭 CMKs를 지원합니다.

• RSA CMKs: 암호화 및 암호 해독 또는 서명 및 확인을 위한 RSA 키 페어가 있는 CMK(둘 다는 아님). KMS는 다양한 보안 요구 사항에 따라 여러 키 길이를 지원합니다.

• 타원 곡선(ECC) CMKs: 서명 및 확인을 위한 타원 곡선 키 페어가 있는 CMK입니다. KMS는 일반적으로 사용되는 여러 곡선을 지원합니다.

가 RSA AWS KMS에 대해 지원하는 암호화 및 서명 알고리즘에 대한 자세한 기술적 내용은 CMKsRSA 키사양을 참조하십시오. (p. 162) 가 ECC AWS KMS에 대해 지원하는 서명 알고리즘에 대한 자세한 기술적내용은 CMKs타원 곡선 키 사양을 참조하십시오. (p. 164)

대칭 및 비대칭 CMKs에서 수행할 수 있는 작업을 비교하는 표는 대칭 및 비대칭 CMKs 비교 (p. 166)를 참조하십시오. 이 대칭 또는 비대칭인지 여부를 확인하는 방법은 CMK 단원을 참조하십시오.대칭 및 비대칭CMKs 식별 (p. 40)

구성을 선택하는 방법CMK생성하는 CMK 유형은 주로 CMK 사용 계획, 보안 요구 사항 및 권한 부여 요구 사항에 따라 다릅니다. 을 생성할 때 CMK의 키 사양 및 키 사용을 포함한 CMK의 암호화 구성은 CMK을 생성할 때 설정되며 변경할 수없다는 점에 유의하십시오. 대칭 및 비대칭 CMK 생성에 대한 도움말은 the section called “키 생성” (p. 21)단원을 참조하십시오.

AWS KMS는 두 가지 CMK 키 유형을 지원합니다. 대칭 및 비대칭. 각 키 유형은 특정 키 사용 (p. 160) 및키 사양 (p. 161) 옵션과 관련되어 있습니다.

사용 사례에 따라 필요한 CMK 유형을 결정하려면 다음 지침을 사용하십시오.

암호화 및 암호 해독

데이터 암호화 및 암호 해독이 필요한 대부분의 사용 사례에서는 대칭 CMK (p. 158)를 사용합니다.AWS KMS에서 사용하는 대칭 암호화 알고리즘은 빠르고 효율적이며 데이터의 기밀성과 신뢰성을 보장합니다. 또한 암호화 컨텍스트 (p. 16)로 정의된 추가 인증 데이터(AAD)를 사용하는 인증된 암호화를 지원합니다. 이 유형의 CMK의 경우 암호화된 데이터의 발신자와 수신자 모두 AWS를 호출할 수 있는 유효한 AWS KMS 자격 증명이 있어야 합니다.

사용 사례에서 AWS를 호출할 수 없는 사용자가 AWS KMS 외부에서 암호화해야 하는 경우 비대칭CMKs (p. 158)이 적합합니다. 이러한 사용자가 데이터를 암호화할 수 있도록 비대칭 CMK의 퍼블릭 키를 배포할 수 있습니다. 또한 해당 데이터를 해독해야 하는 애플리케이션은 CMK 내 비대칭 AWSKMS의 프라이빗 키를 사용할 수 있습니다.

메시지 서명 및 서명 확인

메시지에 서명하고 서명을 확인하려면 비대칭 CMK (p. 158)를 사용해야 합니다. RSA 키 페어 또는 타원 곡선(ECC) 키 페어를 나타내는 CMK키 사양과 함께 (p. 161)를 사용할 수 있습니다. 선택하는 키사양은 사용하려는 서명 알고리즘에 따라 결정됩니다. 서명을 확인하는 사용자가 AWS 사용자가 아니고확인 작업을 호출할 수 없는 경우가 있습니다. 이러한 경우에는 해당 사용자가 로컬 애플리케이션에서지원할 수 있는 서명 알고리즘과 관련된 키 사양 (p. 161)을 선택합니다.

퍼블릭 키 암호화 수행

퍼블릭 키 암호화를 수행하려면 비대칭 CMK (p. 158)를 RSA 키 사양 (p. 162)과 함께 사용해야 합니다. 타원 곡선(ECC) 키 사양 (p. 164)은 퍼블릭 키 암호화에 사용할 수 없습니다. 에서 RSA AWS

159

Page 168: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 사용 선택

KMS의 퍼블릭 키로 데이터를 암호화하려면 CMKEncrypt 작업을 사용합니다. 또한 퍼블릭 키를 다운로드 (p. 48)하여 AWS KMS 외부의 데이터를 암호화해야 하는 당사자와 공유할 수 있습니다.

비대칭 CMK의 퍼블릭 키를 다운로드하면 AWS KMS 외부에서 사용할 수 있습니다. 그러나 더 이상AWS KMS에서 CMK를 보호하는 보안 제어가 적용되지 않습니다. 예를 들어 KMS 키 정책 또는 권한 부여를 사용하여 퍼블릭 키의 사용을 제어할 수 없습니다. 또한 키가 AWS KMS에서 지원하는 RSA 암호화 알고리즘을 사용하여 암호화 및 암호 해독에만 사용되는지 여부를 제어할 수 없습니다. 자세한 내용은 퍼블릭 키 다운로드 시 특별 고려 사항 (p. 48)을 참조하십시오.

AWS KMS 외부에서 퍼블릭 키로 암호화된 데이터를 해독하려면 Decrypt 작업을 호출합니다. 데이터가Decrypt키 사용CMK이 인 (p. 160)의 퍼블릭 키로 암호화된 경우 SIGN_VERIFY 작업이 실패합니다.KMS가 RSA CMKs에 대해 지원하지 않는 알고리즘을 사용하여 암호화된 경우에도 실패합니다.

이러한 오류를 방지하려면 AWS KMS 외부에서 퍼블릭 키를 사용하는 모든 사용자가 키 구성을 저장해야 합니다. AWS KMS 콘솔 및 GetPublicKey 응답은 퍼블릭 키를 공유할 때 포함해야 하는 정보를 제공합니다.

통합 AWS 서비스와 함께 사용

와 통합된 AWS 서비스CMK와 함께 사용할 를 생성하려면 해당 서비스 설명서를 참조하십시오.AWSKMS (p. 341) 사용자를 대신하여 데이터를 암호화하는 모든 AWS 서비스에는 대칭 CMK (p. 158)가필요합니다.

이러한 고려 사항 이외에도 키 사양이 다른 CMKs는 요금 및 요청 할당량가 다릅니다. AWS KMS 요금에 대한 자세한 내용은 AWS 키 관리 서비스 요금을 참조하십시오. 요청 할당량에 대한 자세한 내용은 요청 할당량 (p. 398) 단원을 참조하십시오.

키 사용 선택의 키 사용 (p. 14)에 따라 CMK가 암호화 및 암호 해독 또는 서명 및 확인에 사용되는지 여부가 결정됩니다.CMK 둘 다 선택할 수는 없습니다. 두 가지 이상의 작업 유형에 CMK를 사용하면 두 작업의 제품이 공격에더 취약해집니다.

다음 표와 같이 대칭 CMKs는 암호화 및 암호 해독에만 사용할 수 있습니다. 타원 곡선(ECC) CMKs은 서명및 확인에만 사용할 수 있습니다. 키 사용 결정은 실제로 RSA CMKs에 대해서만 이루어집니다.

유형에 유효한 키 사용CMK

CMK 유형 암호화 및 암호 해독 서명 및 확인

대칭 CMKs

RSA 키 페어가 있는 비대칭CMKs

ECC 키 페어가 있는 비대칭CMKs

콘솔에서 먼저 키 유형(대칭 또는 비대칭)을 선택한 다음 비대칭 AWS KMS의 경우 키 사용을 선택합니다.CMKs 대칭 키 유형을 선택하면 대칭 CMKs는 암호화 및 암호 해독만 지원하므로 키 사용 옵션이 표시되지 않습니다. 선택한 키 사용에 따라 표시되는 키 사양 (p. 161)이 결정됩니다.

AWS KMS 콘솔에서 키 사용을 선택하려면

• 타원 곡선(ECC) 키 구성 요소가 있는 CMKs의 경우 서명 및 확인을 선택합니다.• RSA 키 구성 요소가 있는 CMKs의 경우 암호화 및 암호 해독 또는 서명 및 확인을 선택합니다.

160

Page 169: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 사양 선택

계정의 보안 주체가 CMKs에 사용할 수 있는 키 사용을 결정하려면 kms:CustomerMasterKeyUsage (p. 112)조건 키를 사용합니다.

키 사양 선택비대칭 CMK를 생성할 때 키 사양 (p. 14)을 선택합니다. 모든 ()의 속성인 고객 마스터 키키 사양CMK은CMK의 암호화 구성을 나타냅니다. 키 사양은 CMK를 생성할 때 선택하며 이후에는 변경할 수 없습니다. 잘못된 키 사양을 선택한 경우 를 삭제CMK하고 새 사양을 생성합니다. (p. 266)

Note

AWS KMS API 작업에서 CMK에 대한 키 사양은 CustomerMasterKeySpec으로 알려져 있습니다. 따라서 이 사양은 데이터 키(KeySpec) 및 데이터 키 페어(KeyPairSpec)에 대한 키 사양 및 가져오기를 위해 키 재료를 래핑할 때 사용되는 키 사양(WrappingKeySpec)과 구분됩니다. 키 사양유형별로 값이 서로 다릅니다.

키 사양에 따라 CMK가 대칭 또는 비대칭인지 여부, CMK의 키 구성 요소 유형, AWS KMS가 CMK에 대해 지원하는 암호화 알고리즘 또는 서명 알고리즘이 결정됩니다. 선택하는 키 사양은 일반적으로 사용 사례 및 규정 요구 사항에 따라 결정됩니다.

계정의 보안 주체가 CMKs에 사용할 수 있는 키 사양을 결정하려면 kms:CustomerMasterKeySpec (p. 111)조건 키를 사용합니다.

AWS KMS는 CMKs에 대해 다음과 같은 키 사양을 지원합니다.

• 대칭 CMKs (p. 161)(기본값, 암호화 및 암호 해독)• SYMMETRIC_DEFAULT

• RSA 키 사양 (p. 162)(암호화 및 암호 해독 또는 서명 및 확인)• RSA_2048• RSA_3072• RSA_4096

• 타원 곡선 키 사양 (p. 164)• 비대칭 NIST 권장 타원 곡선 키 페어(서명 및 확인)

• ECC_NIST_P256(secp256r1)• ECC_NIST_P384(secp384r1)• ECC_NIST_P521(secp521r1)

• 기타 비대칭 타원 곡선 키 페어(서명 및 확인)• ECC_SECG_P256K1(secp256k1), 일반적으로 암호 화폐에 사용됨.

항목

다음 주제에서는 키 사양에 대한 기술 정보를 제공합니다.

• SYMMETRIC_DEFAULT 키 사양 (p. 161)• RSA 키 사양 (p. 162)• 타원 곡선 키 사양 (p. 164)

SYMMETRIC_DEFAULT 키 사양기본 키 사양인 SYMMETRIC_DEFAULT는 대칭 CMKs의 키 사양입니다. AWS KMS 콘솔에서 대칭 키 유형을 선택하면 SYMMETRIC_DEFAULT 키 사양이 선택됩니다. CreateKey 작업에서 값을 지정하지 않으면SYMMETRIC_DEFAULT가 선택됩니다.CustomerMasterKeySpec 다른 키 사양을 사용할 이유가 없다면SYMMETRIC_DEFAULT가 좋은 선택입니다.

161

Page 170: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 사양 선택

대칭 CMKs에 대한 암호화 알고리즘을 SYMMETRIC_DEFAULT라고도 합니다. 현재 이 알고리즘은 보안암호화를 위한 업계 표준인 256비트 키를 사용하는 Galois Counter Mode(GCM)의 Advanced EncryptionStandard(AES)를 기반으로 하는 대칭 알고리즘을 나타냅니다. 이 알고리즘이 생성하는 암호화 텍스트는 암호화 컨텍스트 (p. 16)와 같은 추가 인증 데이터(AAD)를 지원하며 GCM은 암호화 텍스트에 대한 추가 무결성검사를 제공합니다. 기술 세부 정보는 AWS Key Management Service 암호화 세부 정보 백서 단원을 참조하십시오.

AES-256-GCM으로 암호화된 데이터는 미래에도 보호됩니다. 암호 전문가는 이 알고리즘을 양자 저항으로간주합니다. 256비트 AES-GCM 키로 생성된 암호화 텍스트에 대한 이론적인 미래의 대규모 양자 컴퓨팅 공격은 키의 효과적 보안을 128비트로 감소시킵니다. 하지만 이 보안 수준으로도 충분히 AWS KMS 암호화 텍스트에 대한 무차별 암호 대입 공격을 불가능하게 만들 수 있습니다.

의 대칭 CMK를 사용하여 데이터를 암호화, 암호 해독 및 다시 암호화하고 데이터 키 및 데이터 키 페어를 생성할 수 있습니다. AWS KMS와 통합된 AWS 서비스는 대칭 AWS KMS를 사용하여 유휴 데이터를 암호화합니다.CMKs 대칭 로 (p. 277)자체 키 구성 요소를 가져오고CMK사용자 지정 키 스토어CMKs에서 대칭 를생성할 수 있습니다. (p. 291) 대칭 및 비대칭 CMKs에서 수행할 수 있는 작업을 비교하는 표는 대칭 및 비대칭 CMKs 비교 (p. 166)를 참조하십시오.

RSA 키 사양RSA 키 사양을 사용하는 경우 AWS KMS는 RSA 키 페어를 사용하여 비대칭 CMK을 생성합니다. 프라이빗키는 절대로 암호화되지 않은 상태로 AWS KMS를 벗어나지 않습니다. 퍼블릭 키는 AWS KMS 내부에서 사용하거나 퍼블릭 키를 다운로드하여 AWS KMS 외부에서 사용할 수 있습니다.

Warning

AWS KMS 외부에서 데이터를 암호화할 때는 암호화 텍스트를 해독할 수 있어야 합니다. 에서 삭제된 CMK의 퍼블릭 키, 서명 및 확인을 위해 구성된 AWS KMS의 퍼블릭 키 또는 CMK에서 지원하지않는 암호화 알고리즘을 사용하는 경우 데이터를 복구할 수 없습니다.CMK

에서는 RSA 키 페어와 함께 비대칭 AWS KMS를 암호화 및 암호 해독 또는 서명 및 확인에 사용할 수 있지만둘 다 사용할 수는 없습니다.CMKs 키 사용 (p. 160)이라고 하는 이 속성은 키 사양과는 별도로 결정되지만키 사양을 선택하기 전에 먼저 결정해야 합니다.

AWS KMS에서는 암호화 및 암호 해독 또는 서명 및 확인을 위해 다음과 같은 RSA 키 사양을 지원합니다.

• RSA_2048• RSA_3072• RSA_4096

RSA 키 사양은 RSA 키 길이(비트)에 따라 다릅니다. 선택하는 RSA 키 사양은 보안 표준 또는 작업 요구 사항에 따라 결정될 수 있습니다. 일반적으로 작업에 실용적이고 저렴한 키 중에서 가장 큰 키를 사용하십시오.RSA 키 사양이 다른 CMKs는 가격이 다르게 책정되며 요청 할당량도 마찬가지입니다. AWS KMS 요금에 대한 자세한 내용은 AWS 키 관리 서비스 요금을 참조하십시오. 요청 할당량에 대한 자세한 내용은 요청 할당량 (p. 398) 단원을 참조하십시오.

암호화 및 암호 해독을 위한 RSA 키 사양

RSA 비대칭 CMK가 암호화 및 암호 해독에 사용되는 경우 퍼블릭 키로 암호화하고 프라이빗 키로 해독합니다. 에서 RSA Encrypt에 대한 AWS KMS 작업을 호출하면 CMK는 RSA 키 페어의 퍼블릭 키와 지정한 암호화 알고리즘을 사용하여 데이터를 암호화합니다.AWS KMS 암호화 텍스트를 해독하려면 Decrypt 작업을 호출하고 동일한 CMK 및 암호화 알고리즘을 지정합니다. 그런 다음 AWS KMS는 RSA 키 페어의 프라이빗 키를 사용하여 데이터를 해독합니다.

또한 퍼블릭 키를 다운로드하여 AWS KMS 외부의 데이터를 암호화하는 데 사용할 수 있습니다. 가 RSAAWS KMS에 대해 지원하는 암호화 알고리즘을 사용해야 합니다.CMKs 암호화 텍스트를 해독하려면 동일한Decrypt 및 암호화 알고리즘을 사용하여 CMK 함수를 호출합니다.

162

Page 171: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 사양 선택

AWS KMS는 RSA 키 사양을 사용하는 CMKs에 대해 두 가지 암호화 알고리즘을 지원합니다. PKCS#1 v2.2에 정의된 이러한 알고리즘은 내부적으로 사용하는 해시 함수가 다릅니다. AWS KMS에서RSAES_OAEP 알고리즘은 해싱 용도와 마스크 생성 함수(MGF1)에 항상 동일한 해시 함수를 사용합니다.Encrypt 및 Decrypt 작업을 호출할 때 암호화 알고리즘을 지정해야 합니다. 각 요청마다 다른 알고리즘을 선택할 수 있습니다.

RSA 키 사양에 지원되는 암호화 알고리즘

암호화 알고리즘 알고리즘 설명

RSAES_OAEP_SHA_1 PKCS #1 v2.2, Section 7.1. 빈 레이블과 함께 해시및 MGF1 마스크 생성 기능 모두에 SHA-1을 사용하는 OAEP 패딩 포함 RSA 암호화입니다.

RSAES_OAEP_SHA_256 PKCS #1, Section 7.1. 빈 레이블과 함께 해시 및MGF1 마스크 생성 기능 모두에 SHA-256을 사용하는 OAEP 패딩 포함 RSA 암호화입니다.

특정 암호화 알고리즘을 사용하도록 CMK를 구성할 수 없습니다. 그러나 kms:EncryptionAlgorithm (p. 114)정책 조건을 사용하여 보안 주체가 CMK와 함께 사용할 수 있는 암호화 알고리즘을 지정할 수 있습니다.

에 대한 암호화 알고리즘을 가져오려면 CMK 콘솔에서 의 (p. 30)암호화 구성을 확인CMK하거나 AWSKMSDescribeKey 작업을 사용합니다. 또한 에서는 AWS KMS 콘솔에서 또는 AWS KMS 작업을 사용하여 퍼블릭 키를 다운로드할 때 키 사양 및 암호화 알고리즘을 제공합니다.GetPublicKey

각 요청에서 암호화할 수 있는 일반 텍스트 데이터의 길이를 기준으로 RSA 키 사양을 선택할 수 있습니다.다음 표에서는 Encrypt 작업을 한 번 호출하여 암호화할 수 있는 일반 텍스트의 최대 크기(바이트)를 보여 줍니다. 값은 키 사양 및 암호화 알고리즘에 따라 다릅니다. 비교를 위해 대칭 CMK를 사용하여 한 번에 최대4,096바이트까지 암호화할 수 있습니다.

이러한 알고리즘에 대한 최대 일반 텍스트 길이(바이트)를 계산하려면 다음 공식을 사용합니다.key_size_in_bits / 8) - (2 * hash_length_in_bits/8) - 2. 예를 들어 SHA-256을 사용하는RSA_2048의 경우 바이트 단위의 최대 일반 텍스트 크기는 (2048/8) - (2 * 256/8) - 2 = 190입니다.

암호화 작업의 최대 일반 텍스트 크기(바이트)

  암호화 알고리즘

RSA_2048 214 190

RSA_3072 342 318

RSA_4096 470 446

서명 및 확인을 위한 RSA 키 사양

서명 및 확인에 RSA 비대칭 CMK가 사용되는 경우 프라이빗 키를 사용하여 메시지에 대한 서명을 생성하고퍼블릭 키를 사용하여 서명을 확인합니다.

비대칭 Sign에 대해 AWS KMS에서 CMK 작업을 호출하면 AWS KMS는 RSA 키 페어의 프라이빗 키, 메시지 및 지정한 서명 알고리즘을 사용하여 서명을 생성합니다. 서명을 확인하려면 확인 작업을 호출합니다. 서명을 지정하고 동일한 CMK, 메시지 및 서명 알고리즘을 지정합니다. 그런 다음 AWS KMS는 RSA 키 페어의퍼블릭 키를 사용하여 서명을 확인합니다. 퍼블릭 키를 다운로드하여 AWS KMS 외부에서 서명을 확인하는데 사용할 수도 있습니다.

AWS KMS는 RSA 키 사양을 사용하는 CMKs에 대해 다음과 같은 서명 알고리즘을 지원합니다. 서명 및 확인 작업을 호출할 때 서명 알고리즘을 지정해야 합니다. 각 요청마다 다른 알고리즘을 선택할 수 있습니다.

163

Page 172: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 사양 선택

RSA 키 사양에 지원되는 서명 알고리즘

서명 알고리즘 알고리즘 설명

RSASSA_PKCS1_V1_5_SHA_256 PKCS #1 v2.2, Section 8.2(PKCS #1v1.5 패딩 및SHA-256을 사용하는 RSA 서명)

RSASSA_PKCS1_V1_5_SHA_384 PKCS #1 v2.2, Section 8.2(PKCS #1v1.5 패딩 및SHA-384를 사용하는 RSA 서명)

RSASSA_PKCS1_V1_5_SHA_512 PKCS #1 v2.2, Section 8.2(PKCS #1v1.5 패딩 및SHA-512를 사용하는 RSA 서명)

RSASSA_PSS_SHA_256 PKCS #1 v2.2, Section 8.1(256비트 솔트와 함께 메시지 다이제스트 및 MGF1 마스크 생성 기능 모두에SHA-256을 사용하는 PSS 패딩 포함 RSA 서명)

RSASSA_PSS_SHA_384 PKCS #1 v2.2, Section 8.1(384비트 솔트와 함께 메시지 다이제스트 및 MGF1 마스크 생성 기능 모두에SHA-384를 사용하는 PSS 패딩 포함 RSA 서명)

RSASSA_PSS_SHA_512 PKCS #1 v2.2, Section 8.1(512비트 솔트와 함께 메시지 다이제스트 및 MGF1 마스크 생성 기능 모두에SHA-512를 사용하는 PSS 패딩 포함 RSA 서명)

특정 서명 알고리즘을 사용하도록 CMK를 구성할 수 없습니다. 그러나 kms:SigningAlgorithm (p. 129) 정책조건을 사용하여 보안 주체가 CMK와 함께 사용할 수 있는 서명 알고리즘을 지정할 수 있습니다.

에 대한 서명 알고리즘을 가져오려면 CMK 콘솔에서 또는 (p. 30) 작업을 사용하여 CMK의 AWS KMS암호화 구성을 봅니다. 또한 DescribeKey에서는 콘솔에서 또는 AWS KMSAWS KMS 작업을 사용하여 퍼블릭키를 다운로드할 때 키 사양 및 서명 알고리즘을 제공합니다.GetPublicKey

타원 곡선 키 사양

타원 곡선(ECC) 키 사양을 사용하는 경우 AWS KMS는 서명 및 확인을 위해 ECC 키 페어가 있는 비대칭CMK을 생성합니다. 서명을 생성하는 프라이빗 키는 절대로 암호화되지 않은 상태로 AWS KMS를 떠나지 않습니다. 퍼블릭 키는 AWS KMS 내부에서 서명을 확인하는 데 사용하거나 퍼블릭 키를 다운로드 (p. 283)하여 AWS KMS 외부에서 사용할 수 있습니다.

AWS KMS는 비대칭 CMKs에 대해 다음과 같은 ECC 키 사양을 지원합니다.

• 비대칭 NIST 권장 타원 곡선 키 페어(서명 및 확인)• ECC_NIST_P256(secp256r1)• ECC_NIST_P384(secp384r1)• ECC_NIST_P521(secp521r1)

• 기타 비대칭 타원 곡선 키 페어(서명 및 확인)• ECC_SECG_P256K1(secp256k1), 암호 화폐에 공통적으로 사용.

선택하는 ECC 키 사양은 보안 표준 또는 작업 요구 사항에 따라 결정될 수 있습니다. 일반적으로 작업에 실용적이고 저렴한 곡선 중에서 가장 포인트가 많은 곡선을 사용하십시오.

암호 화폐에 사용할 비대칭 CMK를 생성하는 경우 ECC_SECG_P256K1 키 사양을 사용합니다. 이 키 사양은다른 용도로도 사용할 수 있지만 비트코인 및 기타 암호 화폐에는 필수입니다.

164

Page 173: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드의 암호화 구성 보기CMKs

ECC 키 사양이 다른 CMKs는 가격이 다르게 책정되며 다른 요청 할당량가 적용됩니다. AWS KMS 요금에대한 자세한 내용은 AWS 키 관리 서비스 요금을 참조하십시오. 요청 할당량에 대한 자세한 내용은 요청 할당량 (p. 398) 단원을 참조하십시오.

다음 표에는 AWS KMS가 각 ECC 키 사양에 대해 지원하는 서명 알고리즘이 나와 있습니다. 특정 서명 알고리즘을 사용하도록 CMK를 구성할 수 없습니다. 그러나 kms:SigningAlgorithm (p. 129) 정책 조건을 사용하여 보안 주체가 CMK와 함께 사용할 수 있는 서명 알고리즘을 지정할 수 있습니다.

ECC 키 사양에 지원되는 서명 알고리즘

키 사양 서명 알고리즘 알고리즘 설명

ECC_NIST_P256 ECDSA_SHA_256 NIST FIPS 186-4, Section 6.4(메시지 다이제스트를 위해 키 및SHA-256에 의해 지정된 곡선을사용하는 ECDSA 서명.)

ECC_NIST_P384 ECDSA_SHA_384 NIST FIPS 186-4, Section 6.4(메시지 다이제스트를 위해 키 및SHA-384에 의해 지정된 곡선을사용하는 ECDSA 서명.)

ECC_NIST_P521 ECDSA_SHA_512 NIST FIPS 186-4, Section 6.4(메시지 다이제스트를 위해 키 및SHA-512에 의해 지정된 곡선을사용하는 ECDSA 서명.)

ECC_SECG_P256K1 ECDSA_SHA_256 NIST FIPS 186-4, Section 6.4(메시지 다이제스트를 위해 키 및SHA-256에 의해 지정된 곡선을사용하는 ECDSA 서명.)

의 암호화 구성 보기CMKs를 생성한 후 해당 암호화 구성을 볼 수 있습니다.CMK 를 생성한 후에는 구성을 변경할 수 없습니다.CMK 다른 구성을 선호하는 경우 CMK를 삭제하고 다시 생성합니다.

콘솔에서 또는 CMKs API를 사용하여 키 사양, 키 사용, 지원되는 암호화 또는 서명 알고리즘을 비롯한 AWSKMS의 암호화 구성을 찾을 수 있습니다.AWS KMS 자세한 내용은 대칭 및 비대칭 CMKs 식별 (p. 40) 단원을 참조하십시오.

콘솔에서 AWS KMS각 의 세부 정보 페이지CMK에는 (p. 30)에 대한 암호화 세부 정보를 표시하는 암호화구성 탭이 포함되어 있습니다.CMKs 예를 들어 다음 이미지는 서명 및 확인에 사용되는 RSA 의 암호화 구성CMK 탭을 보여줍니다.

165

Page 174: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드대칭 및 비대칭 CMKs 비교

API에서 AWS KMSDescribeKey 작업을 사용합니다. 응답의 KeyMetadata 구조에는 CMK의 암호화 구성이포함됩니다. 예를 들어 DescribeKey는 서명 및 확인에 사용되는 RSA CMK에 대해 다음 응답을 반환합니다.

{ "KeyMetadata": { "AWSAccountId": "111122223333", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1571767572.317, "Enabled": false, "Description": "", "KeyUsage": "SIGN_VERIFY", "KeyState": "Disabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "RSA_2048", "SigningAlgorithms": [ "RSASSA_PKCS1_V1_5_SHA_256", "RSASSA_PKCS1_V1_5_SHA_384", "RSASSA_PKCS1_V1_5_SHA_512", "RSASSA_PSS_SHA_256", "RSASSA_PSS_SHA_384", "RSASSA_PSS_SHA_512" ] }}

대칭 및 비대칭 CMKs 비교콘솔 및 CMKs API를 사용하여 대칭 및 비대칭 AWS KMS를 생성하고 관리할 수 있습니다.AWS KMS 그러나 AWS KMS는 CMKs에 대해 다양한 유형의 다양한 기능을 지원합니다.

예를 들어 대칭 CMKs만 사용하여 대칭 데이터 키 및 비대칭 데이터 키 페어를 생성할 수 있습니다. 또한 키구성 요소 가져오기 (p. 277) 및 자동 키 교체 (p. 170)는 대칭 CMKs에 대해서만 지원되며 CMKs사용자지정 키 스토어에서 대칭 (p. 291)만 생성할 수 있습니다.

다음 표에는 각 유형의 AWS KMS를 생성하고 관리하는 데 사용할 수 있는 CMKs 작업이 나열되어 있습니다.지원하지 않는 CMK에서 작업을 사용하면 작업이 실패합니다.

166

Page 175: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드대칭 및 비대칭 CMKs 비교

AWS KMS대칭 및 비대칭 포함 작업CMKs

AWS KMS API 연산 대칭 CMKs 비대칭CMKs(ENCRYPT_DECRYPT)

비대칭 CMKs(SIGN_VERIFY)

CancelKeyDeletion

CreateAlias

CreateGrant

CreateKey

- 키 구성 요소 없음(오리진 = 외부)

- 사용자 정의 키 스토어 내(오리진 = AWS_CLOUSDHSM)

암호화 해제

DeleteAlias

DeleteImportedKeyMaterial

DescribeKey

DisableKey

DisableKeyRotation

EnableKey

EnableKeyRotation

Encrypt

GenerateDataKey

GenerateDataKeyPair [1]

GenerateDataKeyPairWithoutPlaintext [1]

167

Page 176: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드대칭 및 비대칭 CMKs 비교

AWS KMS API 연산 대칭 CMKs 비대칭CMKs(ENCRYPT_DECRYPT)

비대칭 CMKs(SIGN_VERIFY)

GenerateDataKeyWithoutPlaintext

GetKeyPolicy

GetKeyRotationStatus

(KeyRotationEnabled는항상 false.)

(KeyRotationEnabled는 항상false.)

GetParametersForImport

GetPublicKey

ImportKeyMaterial

ListAliases

ListGrants

ListKeyPolicies

ListResourceTags

ListRetirableGrants

PutKeyPolicy

ReEncrypt

RetireGrant

RevokeGrant

ScheduleKeyDeletion

Sign

168

Page 177: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드대칭 및 비대칭 CMKs 비교

AWS KMS API 연산 대칭 CMKs 비대칭CMKs(ENCRYPT_DECRYPT)

비대칭 CMKs(SIGN_VERIFY)

TagResource

UntagResource

UpdateAlias

현재 CMK 및 새 CMK는 동일한유형(모두 대칭 또는 두 비대칭)이어야 하며 키 사용이 동일해야합니다(ENCRYPT_DECRYPT 또는SIGN_VERIFY).

UpdateKeyDescription

확인

[1] GenerateDataKeyPair 및 GenerateDataKeyPairWithoutPlaintext는 대칭 CMK로 보호되는비대칭 데이터 키 페어를 생성합니다.

169

Page 178: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드

회전 고객 마스터 키암호화 모범 사례에 따르면 암호화 키를 광범위하게 사용하지 않는 것이 좋습니다. 새로운 암호화 자료를 만들려면 AWS Key Management Service (AWS KMS) ) 고객 마스터 키 (CMKs), CMKs, 그리고 애플리케이션또는 별칭을 변경하여 CMKs. 또는 기존의 고객 관리 CMK (p. 4).

사용 시 자동 키 회전 고객 관리 CMK, AWS KMS 새로운 암호화 재료 생성 CMK 매년. AWS KMS 또한 CMK의 이전 암호화 자료를 영구 암호화하여 암호화된 데이터를 암호화하는 데 사용할 수 있습니다. AWS KMS회전된 키 자료를 삭제하지 않음 삭제 CMK (p. 266).

키 회전은 CMK의 후면 키암호화 작업에 사용되는 암호화 자료입니다. The CMK 은(는) 배킹 키 변경 여부와상관없이 동일한 논리 리소스입니다. 의 CMK 은(는) 다음 이미지에서 볼 수 있습니다.

자동 키 교체에는 다음과 같은 이점이 있습니다.

• 의 CMK키 ID, 주요 ARN, 지역, 정책 및 권한을 포함하여 키를 회전할 때 변경하지 마십시오.• 다음을 참조하는 응용 프로그램 또는 별칭을 변경할 필요가 없습니다. CMK ID 또는 ARN.• 키 회전을 설정한 후 AWS KMS 회전 CMK 매년 자동으로. 업데이트를 기억하거나 예약할 필요가 없습니

다.

그러나 자동 키 회전은 CMK 보호. 데이터는 CMK 생성 또는 재암호화된 데이터를 CMK을(를) 통해 침해된데이터 키의 영향을 완화할 수 없습니다.

새로운 CMK 원래 대신 CMK. 이는 기존 자재의 주요 재료를 회전하는 것과 동일한 효과를 CMK이 때문에 수동으로 키 회전 (p. 172). 수동 교체는 키 교체 일정을 제어하려는 경우에 좋은 선택입니다. 또한 CMKs 자동 키 회전 자격이 없는 경우 메트릭 CMKs (p. 157), CMKs 에서 맞춤형 키 스토어 (p. 291), 그리고 CMKswith 가져온 키 재료 (p. 170).

키 교체 및 요금

고객 관리 CMKs 추가 월 요금이 발생할 수 있습니다. 자세한 내용은 AWS Key Management Service 요금을참조하십시오. 배킹 키와 회전에 대한 자세한 내용은 AWS Key Management Service 암호화 세부 정보 백서.

주제• 자동 키 교체의 작동 방식 (p. 171)• 자동 키 교체를 활성화하고 비활성화하는 방법 (p. 171)• 수동으로 키 교체 (p. 172)

170

Page 179: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드자동 키 교체의 작동 방식

자동 키 교체의 작동 방식의 키 회전 AWS KMS 은(는) 투명하고 사용하기 쉬운 암호화 모범 사례입니다. AWS KMS 옵션 자동 키 회전만 지원 고객 관리 CMKs (p. 4).

• 키 관리 백업 AWS KMS 모든 백킹 키를 CMK키 회전이 비활성화되어 있더라도 입니다. 배킹 키는 CMK 삭제되었습니다. 귀하가 CMK 암호화하려면 AWS KMS 현재 배킹 키를 사용합니다. 귀하가 CMK 해독하려면 AWS KMS 는 를 암호화하는 데 사용된 배킹 키를 사용합니다.

• 키 교체 활성화 및 비활성화. 자동 키 회전은 고객 관리에서 기본적으로 비활성화됨 CMKs. 키 회전을 활성화(또는 재활성화)하는 경우, AWS KMS 자동으로 CMK 활성화 날짜 후 365일 및 그 이후 365일마다.

• 사용 안 함 CMKs. a CMK 비활성화됨 AWS KMS 을(를) 넣지 않습니다. 그러나 키 회전 상태가 변경되지않으며 CMK 은(는) 비활성화되었습니다. 언제 CMK 후면 키가 365일 이상이면 다시 활성화됩니다. AWSKMS 은(는) 그 후 365일마다 즉시 회전합니다. 백업 키가 365일 미만인 경우 AWS KMS는 원래의 키 교체일정을 다시 시작합니다.

• CMKs 삭제 대기 중. a CMK 삭제 대기 중, AWS KMS 을(를) 넣지 않습니다. 키 교체 상태는 false로 설정되며 삭제가 보류 중인 동안에는 해당 상태를 변경할 수 없습니다. 삭제가 취소되면 이전의 키 교체 상태가 복원됩니다. 백업 키가 365일을 초과한 경우 AWS KMS는 CMK를 즉시 교체하고 이후 365일마다 교체합니다. 백업 키가 365일 미만인 경우 AWS KMS는 원래의 키 교체 일정을 다시 시작합니다.

• AWS 관리 CMKs. 다음에 대한 키 회전을 관리할 수 없습니다. AWS 관리 CMKs (p. 4). AWS KMS 자동으로 회전 AWS 관리 CMKs 3년마다(1095일).

• AWS 소유 CMKs. 다음에 대한 키 회전을 관리할 수 없습니다. AWS 소유 CMKs. AWS에서 소유한 CMK에 대한 키 교체 (p. 170) 전략은 CMK를 생성하고 관리하는 AWS 서비스에 의해 결정됩니다. 자세한 내용은 저장 시 암호화 서비스를 위한 사용자 안내서 또는 개발자 가이드의 주제.

• AWS 서비스. 에서 자동 키 회전을 활성화할 수 있습니다. 고객 관리 CMKs (p. 4) 서버 측 암호화를 위해AWS 서비스. 연간 교체는 투명하며 AWS 서비스와 호환됩니다.

• 키 교체 모니터링. 언제 AWS KMS 자동으로 AWS 관리 CMK (p. 4) 또는 고객 관리 CMK (p. 4)쓰기 KMSCMK Rotation 이벤트 Amazon CloudWatch Events 그리고 rotatekey 이벤트 (p. 204) to your AWSCloudTrail 로그. 이러한 기록을 사용하여 CMK 회전했습니다.

• 지원되지 않음 CMK 유형. 자동 키 회전은 아님 다음 유형의 지원 CMKs하지만 이 CMKs 수동으로 (p. 172).• 비대칭 CMKs (p. 158)• CMKs 에서 맞춤형 키 스토어 (p. 291)• CMKs 이는 가져온 키 재료 (p. 277)

자동 키 교체를 활성화하고 비활성화하는 방법귀하는 AWS KMS 콘솔 또는 AWS KMS API를 사용하여 자동 키 회전을 활성화 및 비활성화하고 고객 관리상태를 확인합니다. CMK.

자동 키 회전을 활성화하는 경우 AWS KMS 회전 CMK 활성화 날짜 후 365일 및 그 이후 365일마다.

주제• 키 교체 활성화 및 비활성화(console) (p. 171)• 키 교체 활성화 및 비활성화(AWS KMS API) (p. 172)

키 교체 활성화 및 비활성화(console)1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/kms에서 AWS Key

Management Service(AWS KMS) 콘솔을 엽니다.

171

Page 180: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 교체 활성화 및 비활성화(AWS KMS API)

2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 탐색 창에서 고객 관리형 키를 선택합니다. (의 회전을 활성화 또는 비활성화할 수 없습니다. AWS 관리

합니다. 3년마다 자동으로 회전됩니다.)4. 의 별칭 또는 키 ID 선택 CMK.5. Key rotation(키 회전) 탭을 선택합니다.

The 키 회전 탭은 대칭의 세부 정보 페이지에만 표시됩니다. CMKs 핵심 소재를 사용하여 AWS KMS생성된 원산지 is AWS_KMS) ). ping 메트릭을 자동으로 입력할 수 없습니다. CMKs, CMKs with 가져온 키 재료 (p. 277), 또는 CMKs 에서 맞춤형 키 스토어 (p. 291). 그러나 이들을 수동으로 회전할 (p. 172)수 있습니다.

6. 선택 또는 선택 자동으로 CMK 매년 확인란을 선택합니다.

Note

a CMK 비활성화 또는 보류 중인 삭제, 자동으로 CMK 매년 확인란을 선택 취소하면 변경할 수없습니다. 키 회전 상태는 CMK 또는 삭제를 취소합니다. 자세한 내용은 자동 키 교체의 작동 방식 (p. 171) 및 주요 상태: 귀하의 CMK (p. 175) 단원을 참조하십시오.

7. Save를 선택합니다.

키 교체 활성화 및 비활성화(AWS KMS API)귀하는 AWS Key Management Service (AWS KMS) API 자동 키 회전을 활성화 및 비활성화하고, 고객이 관리하는 모든 고객의 현재 회전 상태를 CMK. 이 예제들은 AWS Command Line Interface(AWS CLI)를 사용하지만, 사용자는 어떤 지원되는 프로그래밍 언어라도 사용할 수 있습니다.

The 활성화 작동하면 지정된 작업에 대한 자동 키 회전을 CMK. DisableKeyRotation 작업은 이를 비활성화합니다. 이를 위해 CMK 이 작업을 통해 키 ID (p. 12) 또는 키 ARN (p. 12). 기본적으로 고객 관리를 위해 키 회전이 비활성화됨 CMKs.

다음 예는 지정된 대칭에서 키 회전을 활성화합니다. CMK 그리고 getkeyrotation상태 결과를 볼 수 있습니다. 그런 다음 키 회전을 해제하고 GetKeyRotationStatus 변경 사항을 보려면.

$ aws kms enable-key-rotation --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

$ aws kms get-key-rotation-status --key-id 1234abcd-12ab-34cd-56ef-1234567890ab{ "KeyRotationEnabled": true}

$ aws kms disable-key-rotation --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

$ aws kms get-key-rotation-status --key-id 1234abcd-12ab-34cd-56ef-1234567890ab{ "KeyRotationEnabled": false}

수동으로 키 교체새로운 CMK 현재 대신 CMK 자동 키 회전을 설정하는 대신. 새로운 CMK 현재 다른 암호화 재질이 CMK, 새로운 CMK 기존 환경에서 배킹 키를 변경하는 것과 동일한 효과를 CMK. 하나의 교체 프로세스 CMK 다른 하나는 수동 키 회전.

172

Page 181: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드수동으로 키 교체

교체 빈도를 제어할 수 있도록 수동으로 키를 교체하려고 할 수 있습니다. 또한 CMKs ping 메트릭 등 자동키 회전에 적합하지 않습니다. CMKs, CMKs 에서 맞춤형 키 스토어 (p. 291) and CMKs with 가져온 키 재료 (p. 277).

Note

새로운 사용을 시작할 때 CMK원래 CMK 사용하도록 설정합니다 AWS KMS 원래 데이터가 CMK암호화된. 데이터를 해독할 때 KMS는 CMK 데이터를 암호화하는 데 사용했고, CMK 데이터를 복호화합니다. 원본과 새로운 CMKs 활성화됨 AWS KMS 이(가) 암호화를 통해 암호화된 데이터를 해독할 수 있습니다. CMK.

새로운 CMK 은(는) 현재의 다른 리소스입니다. CMK에 다른 키 ID와 ARN이 있습니다. 변경할 때 CMKs에대한 참조를 업데이트해야 합니다. CMK 응용 프로그램의 ID 또는 ARN. 별칭은 친근한 이름을 CMK, 이 프로세스를 보다 쉽게 만듭니다. 별칭을 사용하여 CMK 을(를) 사용합니다. 그런 다음 CMK 애플리케이션을 사용하고 타겟을 CMK 별칭입니다.

목표를 업데이트하려면 CMK 별칭 업데이트 별칭 작업 AWS KMS API 예를 들어, 이 명령은 TestCMK 별칭으로 새로운 CMK. 작업이 어떤 출력도 반환하지 않기 때문에 리스알리스 별칭이 다른 것과 연관되어 있다는것을 CMK.

$ aws kms list-aliases{ "Aliases": [ { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/TestCMK", "AliasName": "alias/TestCMK", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }, ]}

$ aws kms update-alias --alias-name alias/TestCMK --target-key-id 0987dcba-09fe-87dc-65ba-ab0987654321 $ aws kms list-aliases

173

Page 182: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드수동으로 키 교체

{ "Aliases": [ { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/TestCMK", "AliasName": "alias/TestCMK", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321" }, ]}

174

Page 183: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드

주요 상태: 귀하의 CMK고객 마스터 키 (CMKs)는 항상 다음 상태 중 하나에 속합니다. Enabled, Disabled, PendingImport,PendingDeletion, 또는 Unavailable.

다음 표에는 다음 표가 나와 있습니다. AWS KMS A에서 실행되는 API 작업 CMK 각 상태에서 성공(✓), 실패(X) 또는 성공할 것으로 기대될 수 있습니다(?). 결과는 종종 CMKs 가져온 키 재료.

대칭 CMKs 이(가) Enabled, Disabled, PendingImport, PendingDeletion, 또는 Unavailable 상태.&t={\f CMKs 이(가) Enabled, Disabled, 또는 PendingDeletion 키 상태.

The Unavailable 상태는 CMK 에서 사용자 지정 키 스토어 (p. 291). A CMK 에서 사용자 지정 키 스토어is Unavailable 언제 사용자 지정 키 스토어 의도적으로 AWS CloudHSM 클러스터. 사용 불가 및 관리 가능 CMKs을(를) 암호화 작업에서 사용할 수는 없습니다.

다음 API 작업이 기존 사용자를 사용하지 않기 때문에 표에 나타나지 않습니다. CMK.

• ConnectCustomKeyStore• CreateCustomKeyStore• CreateKey• DeleteCustomKeyStore• DescribeCustomKeyStores• DisconnectCustomKeyStore• GenerateRandom• UpdateCustomKeyStore

API Enabled Disabled 가져오기 보류중

삭제 보류 중 Unavailable

CancelKeyDeletion

[4] [4] [4] [4], [13]

CreateAlias

[3]

CreateGrant

[1] [5] [2] 또는 [3]

암호화 해제

[1] [5] [2] 또는 [3] [11]

DeleteAlias

175

Page 184: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드

API Enabled Disabled 가져오기 보류중

삭제 보류 중 Unavailable

DeleteImportedKeyMaterial

9. 9. (효과 없음) 9. 9.

DescribeKey

DisableKey

[5] [3] [12]

DisableKeyRotation

7. [1] 또는 [7] [6] [3] 또는 [7] 7.

EnableKey

[5] [3] [12]

EnableKeyRotation

7. [1] 또는 [7] [6] [3] 또는 [7] 7.

Encrypt

[1] [5] [2] 또는 [3] [11]

GenerateDataKey

[1] [5] [2] 또는 [3] [11]

GenerateDataKeyPair

[1] [5] [2] 또는 [3] [11]

GenerateDataKeyPairWithoutPlaintext

[1] [5] [2] 또는 [3] [11]

GenerateDataKeyWithoutPlaintext

[1] [5] [2] 또는 [3] [11]

176

Page 185: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드

API Enabled Disabled 가져오기 보류중

삭제 보류 중 Unavailable

GetKeyPolicy

GetKeyRotationStatus

7. 7. [6] 7. 7.

GetParametersForImport

9. 9. [8] 또는 [9] 9.

GetPublicKey

1.

해당 사항 없음

[2] 또는 [3]

해당 사항 없음

ImportKeyMaterial

9. 9. [8] 또는 [9] 9.

ListAliases

ListGrants

ListKeyPolicies

ListKeys

ListResourceTags

ListRetirableGrants

PutKeyPolicy

ReEncrypt

[1] [5] [2] 또는 [3] [11]

RetireGrant

177

Page 186: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드

API Enabled Disabled 가져오기 보류중

삭제 보류 중 Unavailable

RevokeGrant

ScheduleKeyDeletion

[3]

Sign

1.

해당 사항 없음

[2] 또는 [3]

해당 사항 없음

TagResource()

[3]

UnTagResource

[3]

UpdateAlias

[10]

UpdateKeyDescription

[3]

확인

1.

해당 사항 없음

[2] 또는 [3]

해당 사항 없음

테이블 세부 정보

• [1] DisabledException: <CMK ARN> is disabled.• [2] DisabledException: <CMK ARN> is pending deletion.• [3] KMSInvalidStateException: <CMK ARN> is pending deletion.• [4] KMSInvalidStateException: <CMK ARN> is not pending deletion.• [5] KMSInvalidStateException: <CMK ARN> is pending import.• [6] UnsupportedOperationException: <CMK ARN> origin is EXTERNAL which is notvalid for this operation.

• [7] CMK 수입된 키 자료를 가지고 있거나 사용자 지정 키 스토어에서UnsupportedOperationException.

• [8] CMK 가져온 키 재료: KMSInvalidStateException

178

Page 187: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드

• [9] CMK 가져온 키 재료 없음 또는 없음: UnsupportedOperationException.• [10] 소스가 있는 경우 CMK 님이 삭제 대기 중입니다. 명령이 성공합니다. 목적지가 CMK 은(는) 삭제 대

기 중입니다. 명령이 오류로 실패합니다. KMSInvalidStateException : <CMK ARN> is pendingdeletion.

• [11] KMSInvalidStateException: <CMK ARN> is unavailable. 이 작업을 사용할 수 없는 경우수행할 수 없습니다. CMK.

• [12] 작업이 성공하지만, CMK 이(가) 사용 가능해질 때까지 변경되지 않습니다.• [13] 하지만 CMK 사용자 지정 키 스토어에서 삭제가 보류 중입니다. 키 상태는 PendingDeletion 심지

어 CMK 을(를) 사용할 수 없습니다. 이렇게 하면 CMK 대기 기간 중 언제든지.

179

Page 188: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드모니터링 도구

고객 마스터 키 모니터링모니터링은 사용자의 가용성, 상태 및 사용량을 이해하는 데 있어 중요한 부분입니다. 고객 마스터 키(CMKs) AWS KMS 신뢰성, 가용성 및 성능을 AWS 솔루션. AWS 솔루션의 모든 부분으로부터 모니터링 데이터를 수집하면 다중 지점 실패가 발생할 경우 디버깅하는 데 도움을 줍니다. 모니터링을 시작하기 전에CMKs그러나 다음 질문에 대한 답변을 포함하는 모니터링 계획을 만듭니다.

• 모니터링의 목표• 모니터링할 리소스• 이러한 리소스를 모니터링하는 빈도• 사용할 모니터링 도구 (p. 180)• 모니터링 작업을 수행할 사람• 문제 발생 시 알려야 할 대상

다음 단계는 CMKs 정상 궤도에 대한 기준을 확립하는 데 AWS KMS 사용 및 기대치. 여러분이 자신의CMKs, 과거 모니터링 데이터를 저장하여 현재 데이터와 비교하고 정상적인 패턴과 이상을 식별하고 문제를해결할 방법을 고안할 수 있습니다.

예를 들어, AWS KMS API 활동 및 귀하에게 영향을 미치는 이벤트 CMKs. 데이터가 정해진 기준을 초과하거나 미달하는 경우, 조사를 실시하거나 시정 조치를 취해야 할 수 있습니다.

정상 패턴의 기준선을 설정하려면 다음 항목을 모니터링합니다.

• 데이터 영역 작업에 대한 AWS KMS API 활동. 이들은 암호화 작업 (p. 11) 이를 통해 CMK과 같은 해독, 암호화, 재암호화, 그리고 generatedatakey.

• 사용자가 중요시하는 제어 플레인 작업에 대한 AWS KMS API 활동. 이러한 작업은 CMK을(를) 변경할 수있습니다. CMK의 가용성(예: 스케줄키 삭제, 취소삭제, 장애, 키키, 재료, 그리고 삭제키 재료) 또는 CMK의 액세스 제어(예: 푸트키피시 and 취소) ).

• 기타 AWS KMS 메트릭(예: 가져온 키 재료 (p. 277) 만료됩니다. CMK) ).

모니터링 도구AWS 귀하가 귀하를 모니터링하는 데 사용할 수 있는 다양한 도구를 제공합니다. CMKs. 이들 도구 중에는모니터링을 자동으로 수행하도록 구성할 수 있는 도구도 있지만, 수동 작업이 필요한 도구도 있습니다. 모니터링 작업을 최대한 자동화하는 것이 좋습니다.

자동 모니터링 도구다음과 같은 자동 모니터링 도구를 사용하여 귀하를 볼 수 있습니다. CMKs 어떤 일이 있었는지 보고하십시오.

• AWS CloudTrail 로그 모니터링 – 계정 간에 로그 파일을 공유하고, CloudTrail 로그 파일을 CloudWatchLogs에 전송하여 실시간으로 모니터링하며, CloudTrail 처리 라이브러리를 사용하여 로그 처리 애플리케이션을 작성하고, CloudTrail을 통한 전송 후 로그 파일이 변경되지 않았는지 확인합니다. 자세한 내용은작업 CloudTrail 로그 파일 in the AWS CloudTrail User Guide.

• Amazon CloudWatch Alarms – Watch a single metric over a time period that you specify, and performone or more actions based on the value of the metric relative to a given threshold over a number of timeperiods. The action is a notification sent to an Amazon Simple Notification Service (Amazon SNS) topicor Amazon EC2 Auto Scaling policy. CloudWatch alarms do not invoke actions simply because they arein a particular state; the state must have changed and been maintained for a specified number of periods.For more information, see Amazon CloudWatch을(를) 사용하여 모니터링 (p. 214).

180

Page 189: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드수동 도구

• Amazon CloudWatch Events – 이벤트를 매칭하고 하나 이상의 대상 함수 또는 스트림으로 라우팅하여 상태 정보를 캡처하고, 필요에 따라 값을 변경하거나 시정 조치를 취합니다. 자세한 내용은 AWS KMS 이벤트 (p. 216) 및 Amazon CloudWatch Events 사용 설명서를 참조하십시오.

• Amazon CloudWatch Logs – 인스턴스, AWS CloudTrail, 또는 기타 소스의 로그 파일을 모니터링, 저장 및액세스합니다. 자세한 내용은 Amazon CloudWatch Logs 사용 설명서를 참조하십시오.

수동 모니터링 도구모니터링의 또 다른 중요한 부분 CMKs 수동으로 CloudWatch 알람 및 이벤트는 에 적용되지 않습니다. AWSKMS, CloudWatch, AWS Trusted Advisor 및 기타 AWS 대시보드에서는 AWS 환경의 상태를 한눈에 볼 수있습니다.

여러분은 사용자 지정 (p. 27) the AWS 관리 키 and 고객 관리 키 페이지 AWS KMS 콘솔 각각에 대한 다음정보를 표시합니다. CMK:

• 키 ID.• Status• 생성 날짜• 만료일 CMKs with 가져온 키 재료 (p. 277))• Origin• 사용자 지정 키 저장소 ID(용) CMKs 에서 맞춤형 키 스토어 (p. 291))

CloudWatch 콘솔 대시보드는 다음 정보를 보여줍니다.

• 현재 경보 및 상태.• 경보 및 리소스 그래프• 서비스 상태

또한 CloudWatch를 사용하여 다음 작업을 수행할 수도 있습니다.

• 사용자 정의 대시보드를 만들어 원하는 서비스 모니터링.• 지표 데이터를 그래프로 작성하여 문제를 해결하고 추세 파악.• 모든 AWS 리소스 지표 검색 및 찾아보기.• 문제에 대해 알려주는 경보 생성 및 편집.

AWS Trusted Advisor 사용을 통해 AWS 리소스를 모니터링함으로써 성능, 안정성, 보안 및 경제성을 향상할 수 있습니다. 모든 사용자에 대해 4가지 Trusted Advisor 검사를 수행할 수 있고, 비즈니스 또는 엔터프라이즈 지원 플랜에 따라 사용자에 대해 50개 이상의 검사를 수행할 수 있습니다. 자세한 정보는 AWS TrustedAdvisor 단원을 참조하십시오.

AWS CloudTrail을 사용하여 AWS KMS API 호출 로깅

AWS KMS는 사용자, 역할 및 기타 서비스에 의한 모든 호출을 기록하는 서비스인 AWS CloudTrailAWSKMS와 통합됩니다. AWS는 CloudTrail 콘솔, AWS KMS AWS KMS AWS KMS, APIs(AWS Command LineInterface) 및 AWS CLI의 호출을 포함하여 PowerShell용 AWS 도구에 대한 모든 API 호출을 이벤트로 캡처합니다.

181

Page 190: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드에서 이벤트 로깅CloudTrail

CloudTrail는 AWS KMSListAliases 및 과 같은 읽기 전용 작업, GetKeyRotationStatusCMKs 및 같은 를 관리하는 작업, CreateKey 등의 암호화 작업PutKeyPolicy을 포함한 모든 작업을 기록합니다.??? (p. 11)GenerateDataKeyhttps://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html

CloudTrail는 호출자가 리소스에 대한 액세스를 거부한 경우와 같이 실패한 성공적인 작업과 시도된 호출을 기록합니다. 다른 계정의 에 대한 작업CMKs은 호출자의 계정과 CMK 소유자 계정에 모두 로깅됩니다. (p. 91)

보안상의 이유로 일부 필드는 AWS KMS 로그 항목에서 생략됩니다(예: Plaintext암호화 요청의 파라미터, GetKeyPolicy에 대한 응답 또는 암호화 작업).

기본적으로 모든 AWS KMS 작업은 CloudTrail 이벤트로 기록되지만 CloudTrail 추적에서 AWS KMS 작업을제외할 수 있습니다. 자세한 내용은 추적에서 AWS KMS 이벤트 제외 (p. 182)을(를) 참조하십시오.

주제• 에서 이벤트 로깅CloudTrail (p. 182)• 추적에서 AWS KMS 이벤트 제외 (p. 182)• 로그 항목의 예AWS KMS (p. 183)

에서 이벤트 로깅CloudTrailCloudTrail은 계정 생성 시 AWS 계정에서 활성화됩니다. AWS KMS에서 활동이 수행되면 해당 활동은 이벤트 기록에서 다른 AWS 서비스 이벤트와 함께 CloudTrail 이벤트에 기록됩니다. AWS 계정에서 최신 이벤트를 확인, 검색 및 다운로드할 수 있습니다. 자세한 내용은 CloudTrail 이벤트 기록에서 이벤트 보기를 참조하십시오.

AWS KMS 이벤트를 포함하여 AWS 계정에 이벤트를 지속적으로 기록하려는 경우 추적을 생성합니다. 추적은 CloudTrail이 Amazon S3 버킷으로 로그 파일을 전송할 수 있도록 합니다. 콘솔에서 추적을 생성하면 기본적으로 모든 리전에 추적이 적용됩니다. 추적은 AWS 파티션에 있는 모든 리전의 이벤트를 로깅하고 지정된Amazon S3 버킷으로 로그 파일을 전송합니다. 또는 CloudTrail 로그에서 수집된 이벤트 데이터를 추가 분석및 처리하도록 다른 AWS 서비스를 구성할 수 있습니다. 자세한 정보는 다음을 참조하십시오.

• 추적 생성 개요• CloudTrail 지원되는 서비스 및 통합• 에 대한 Amazon SNS 알림 구성 CloudTrail• 여러 리전에서 CloudTrail 로그 파일 받기 및 여러 계정에서 CloudTrail 로그 파일 받기

CloudTrail에 대한 자세한 내용은 AWS CloudTrail User Guide 단원을 참조하십시오. 의 사용을 모니터링하는 다른 방법에 대해 알아보려면 CMKs 단원을 참조하십시오.고객 마스터 키 모니터링 (p. 180)

모든 이벤트 또는 로그 항목에는 요청을 생성한 사용자에 대한 정보가 들어 있습니다. 자격 증명 정보를 이용하면 다음을 쉽게 판단할 수 있습니다.

• 요청을 루트로 했는지 아니면 IAM 사용자 자격 증명으로 했는지 여부• 역할 또는 연합된 사용자에 대한 임시 보안 자격 증명을 사용하여 요청이 생성되었는지 여부.• 다른 AWS 서비스에서 요청했는지 여부.

자세한 내용은 CloudTrail userIdentity요소를 참조하십시오.

추적에서 AWS KMS 이벤트 제외대부분의 AWS KMS 사용자는 CloudTrail 추적의 이벤트에 의존하여 AWS KMS 리소스의 사용 및 관리에 대한 기록을 제공합니다. 추적은 고객 마스터 키(CMKs) 생성, 비활성화 및 삭제, 키 정책 변경, 사용자를 대신

182

Page 191: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

하여 CMKs 서비스에서 AWS 사용 등 중요한 이벤트를 감사하기 위한 중요한 데이터 소스가 될 수 있습니다.경우에 따라 암호화 작업의 암호화 컨텍스트 (p. 16)와 같은 CloudTrail 로그 항목의 메타데이터가 오류를 방지하거나 해결하는 데 도움이 될 수 있습니다.

그러나 AWS KMS는 수많은 이벤트를 생성할 수 있으므로 AWS CloudTrail을 사용하여 추적에서 AWS KMS이벤트를 제외할 수 있습니다. 이 추적별 설정은 모든 AWS KMS 이벤트를 제외하며 특정 AWS KMS 이벤트를 제외할 수는 없습니다.

Warning

로그에서 AWS KMS 이벤트를 제외하면 CloudTrail를 사용하는 작업이 가려질 수 있습니다.CMKs보안 주체에게 이 작업을 수행하는 데 필요한 cloudtrail:PutEventSelectors 권한을 부여할때는 주의해야 합니다.

추적에서 AWS KMS 이벤트를 제외하려면

• 추적을 생성CloudTrail하거나 추적을 업데이트할 때 콘솔에서 로그 키 관리 서비스 이벤트 설정을 사용합니다. 자세한 내용은 AWS CloudTrail User Guide의 AWS Management Console을 사용하여 관리 이벤트로깅을 참조하십시오.

• API에서 CloudTrailPutEventSelectors 작업을 사용합니다. 값을 사용하여 이벤트 선택기에ExcludeManagementEventSources 속성을 추가합니다.kms.amazonaws.com 예제는 예제:를 참조하십시오. 의 AWS Key Management Service 이벤트를 로깅하지 않는 추적AWS CloudTrail User Guide

콘솔 설정 또는 추적용 이벤트 선택기를 변경하여 언제든지 이 제외를 비활성화할 수 있습니다. 그러면 추적이 AWS KMS 이벤트 기록을 시작합니다. 그러나 제외가 유효한 동안 발생한 AWS KMS 이벤트는 복구할 수없습니다.

콘솔 또는 API를 사용하여 KMS 이벤트를 제외하면 결과 CloudTrail PutEventSelectorsAPI 작업도 CloudTrail Logs에 기록됩니다. KMS 이벤트가 CloudTrail Logs에 나타나지 않으면ExcludeManagementEventSources 속성이 kms.amazonaws.com으로 설정된 PutEventSelectors이벤트를 찾습니다.

로그 항목의 예AWS KMSAWS KMS는 CloudTrail 작업을 호출할 때와 AWS KMS 서비스가 사용자를 대신하여 작업을 호출할 때 AWS로그에 항목을 기록합니다. 또한 AWS KMS는 사용자를 대신하여 작업을 호출할 때 항목을 기록합니다. 예를들어 삭제하도록 예약한 CMK를 삭제 (p. 190)할 때 항목을 기록합니다.

다음 주제에서는 CloudTrail 작업에 대한 AWS KMS 로그 항목의 예제를 보여줍니다.

주제• CancelKeyDeletion (p. 184)• CreateAlias (p. 185)• CreateGrant (p. 186)• CreateKey (p. 186)• Decrypt (p. 187)• 암호화 해제(enclave에서) (p. 188)• DeleteAlias (p. 189)• DeleteExpiredKeyMaterial (p. 190)• DeleteKey (p. 190)• DescribeKey (p. 191)• DisableKey (p. 193)• EnableKey (p. 193)

183

Page 192: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

• EnableKeyRotation (p. 194)• Encrypt (p. 195)• GenerateDataKey (p. 195)• GenerateDataKey(포함에서) (p. 196)• GenerateDataKeyPair (p. 197)• GenerateDataKeyPairWithoutPlaintext (p. 197)• GenerateDataKeyWithoutPlaintext (p. 198)• GenerateRandom (p. 199)• GenerateRandom(포함에서) (p. 199)• GetKeyPolicy (p. 200)• GetParametersForImport (p. 201)• ImportKeyMaterial (p. 202)• ListAliases (p. 202)• ListGrants (p. 203)• ReEncrypt (p. 204)• RotateKey (p. 204)• ScheduleKeyDeletion (p. 205)• TagResource (p. 206)• UntagResource (p. 207)• Amazon EC2 예제 1 (p. 207)• Amazon EC2 예제 2 (p. 209)

CancelKeyDeletion다음 예는 AWS CloudTrail 로그 입력이 생성됨 취소삭제 작업. 삭제에 대한 정보 고객 마스터 키, 참조: 고객마스터 키 삭제 (p. 266).

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2020-07-27T21:53:17Z", "eventSource": "kms.amazonaws.com", "eventName": "CancelKeyDeletion", "awsRegion": "us-west-2", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }, "responseElements": { "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, "requestID": "e3452e68-d4b0-4ec7-a768-7ae96c23764f", "eventID": "d818bf03-6655-48e9-8b26-f279a07075fd", "readOnly": false, "resources": [

184

Page 193: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

{ "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

CreateAlias다음 예는 AWS CloudTrail 로그 입력 createalias 작업. 리소스 요소에는 별칭을 위한 필드 및 CMK 자원. 별칭 생성 관련 정보 AWS KMS, 참조: 별칭 생성 (p. 52).

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2014-11-04T00:52:27Z" } } }, "eventTime": "2014-11-04T00:52:27Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateAlias", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "aliasName": "alias/my_alias", "targetKeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, "responseElements": null, "requestID": "d9472f40-63bc-11e4-bc2b-4198b6150d5c", "eventID": "f72d3993-864f-48d6-8f16-e26e1ae8dff0", "readOnly": false, "resources": [{ "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }, { "ARN": "arn:aws:kms:us-east-1:123456789012:alias/my_alias", "accountId": "111122223333" }], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } ]}

185

Page 194: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

CreateGrant다음 예는 AWS CloudTrail 로그 입력 Creategrant 작업. 에서 보조금 생성 관련 정보 AWS KMS, 참조: 권한부여 사용 (p. 136).

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-11-04T00:53:12Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "constraints": { "encryptionContextSubset": { "ContextKey1": "Value1" } }, "operations": ["Encrypt", "RetireGrant"], "granteePrincipal": "EX_PRINCIPAL_ID" }, "responseElements": { "grantId": "f020fe75197b93991dc8491d6f19dd3cebb24ee62277a05914386724f3d48758" }, "requestID": "f3c08808-63bc-11e4-bc2b-4198b6150d5c", "eventID": "5d529779-2d27-42b5-92da-91aaea1fc4b5", "readOnly": false, "resources": [{ "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } ]}

CreateKey다음 예는 AWS CloudTrail 에 대한 로그 항목 생성키 운영 환경을 대칭 고객 마스터 키 (p. 158). 생성에 대한정보 고객 마스터 키 에서 AWS KMS, 참조: 키 생성 (p. 21).

{ "Records": [ { "eventVersion": "1.02", "userIdentity": {

186

Page 195: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

"type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2020-06-30T02:34:07Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateKey", "awsRegion": "us-west-2", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "policy": "{\n \"Version\":\"2012-10-17\",\n \"Statement\":[{\n \"Effect\":\"Allow\",\n \"Principal\":{\"AWS\":\"arn:aws:iam::123456789012:user/Alice\"},\n \"Action\":\"kms:*\",\n \"Resource\":\"*\"\n }, {\n \"Effect\":\"Allow\",\n \"Principal\":{\"AWS\":\"arn:aws:iam::012345678901:user/Bob\"},\n \"Action\":\"kms:CreateGrant\",\n \"Resource\":\"*\"\n }, {\n \"Effect\":\"Allow\",\n \"Principal\":{\"AWS\":\"arn:aws:iam::012345678901:user/Charlie\"},\n \"Action\":\"kms:Encrypt\",\n \"Resource\":\"*\"\n}]\n}", "description": "", "keyUsage": "ENCRYPT_DECRYPT", "customerMasterKeySpec": "SYMMETRIC_DEFAULT", "origin": "AWS_KMS", "bypassPolicyLockoutSafetyCheck": false }, "responseElements": { "keyMetadata": { "aWSAccountId": "111122223333", "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "creationDate": "Jun 30, 2020 2:34:07 AM", "enabled": true, "description": "", "keyUsage": "ENCRYPT_DECRYPT", "keyState": "Enabled", "origin": "AWS_KMS", "keyManager": "CUSTOMER", "customerMasterKeySpec": "SYMMETRIC_DEFAULT", "encryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] }, "requestID": "ebe8ee68-63bc-11e4-bc2b-4198b6150d5c", "eventID": "ba116326-1792-4784-87dd-a688d1cb42ec", "readOnly": false, "resources": [{ "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } ]}

Decrypt다음 예는 AWS CloudTrail 에 대한 로그 항목 해독 작업.

{

187

Page 196: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

"eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2020-07-27T22:58:24Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-west-2", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "encryptionAlgorithm": "SYMMETRIC_DEFAULT", "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, "responseElements": null, "requestID": "b4a65126-30d5-4b28-98b9-9153da559963", "eventID": "e5a2f202-ba1a-467c-b4ba-f729d45ae521", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

암호화 해제(enclave에서)다음 예제는 AWS CloudTrailNitro Enclaves SDKkms-decrypt의 작업에 대한 로그 항목을 보여줍니다.API는 절의 서명된 kms-decrypt 증명 문서AWS KMS를 포함하는 파라미터로 Decrypt 작업을 호출합니다.https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitro-enclave-concepts.html#term-attestdoc

AWS Nitro 엔클레이브는 Amazon EC2enlaves라는 격리된 컴퓨팅 환경을 생성하여 매우 민감한 데이터를보호하고 처리할 수 있는 기능입니다. 및 AWS Nitro 엔클레이브과의 통합에 대한 자세한 내용은 AWS KMS의 Nitro Enclaves를 참조하십시오.Linux 인스턴스용 Amazon EC2 사용 설명서

호출이 인코딩에서 시작되는 경우 CloudTrail 로그에는 인코딩의 측정값을 나타내는 수신자 데이터가 포함됩니다.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2020-07-27T22:58:24Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-west-2",

188

Page 197: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

"sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "encryptionAlgorithm": "SYMMETRIC_DEFAULT", "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, "responseElements": null, "additionalEventData": { "recipient": { "attestationDocumentModuleId": "i-123456789abcde123-enc123456789abcde12", "attestationDocumentEnclaveImageDigest": "ee0d451a2ff9aaaa9bccd07700b9cab123a0ac2386ef7e88ad5ea6c72ebabea840957328e2ec890b408c9b06cb8ebe6a", } }, "requestID": "b4a65126-30d5-4b28-98b9-9153da559963", "eventID": "e5a2f202-ba1a-467c-b4ba-f729d45ae521", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

DeleteAlias다음 예는 AWS CloudTrail 로그 입력 삭제별칭 작업. 별칭 삭제에 대한 자세한 내용은 다음을 참조하십시오.별칭 삭제 (p. 58).

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2014-11-04T00:52:27Z" } } }, "eventTime": "2014-11-04T00:52:27Z", "eventSource": "kms.amazonaws.com", "eventName": "DeleteAlias", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "aliasName": "alias/my_alias" }, "responseElements": null, "requestID": "d9542792-63bc-11e4-bc2b-4198b6150d5c",

189

Page 198: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

"eventID": "12f48554-bb04-4991-9cfc-e7e85f68eda0", "readOnly": false, "resources": [{ "ARN": "arn:aws:kms:us-east-1:111122223333:alias/my_alias", "accountId": "111122223333" }, { "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } ]}

DeleteExpiredKeyMaterial키 자료를 가져올 때 고객 마스터 키 (CMK)에 대한 만료 날짜와 시간을 설정할 수 있습니다. AWS KMS 항목을 CloudTrail 로그인 키 재료 가져오기 (p. 202) (만료 설정 포함) 및 언제 AWS KMS 만료된 키 재료 를 삭제합니다. 생성에 대한 정보 CMKs 수입된 키 재질로 AWS Key Management Service(AWS KMS)에서 키 구성 요소 가져오기 (p. 277).

다음 예는 AWS CloudTrail 다음에 생성된 로그 항목 AWS KMS 만료된 키 재료 를 삭제합니다.

{ "eventVersion": "1.05", "userIdentity": { "accountId": "111122223333", "invokedBy": "AWS Internal" }, "eventTime": "2021-01-01T16:00:00Z", "eventSource": "kms.amazonaws.com", "eventName": "DeleteExpiredKeyMaterial", "awsRegion": "us-east-1", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": null, "responseElements": null, "eventID": "cfa932fd-0d3a-4a76-a8b8-616863a2b547", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsServiceEvent", "recipientAccountId": "111122223333", "serviceEventDetails": { "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }}

DeleteKey다음 예는 AWS CloudTrail 로그 항목이 생성됨 고객 마스터 키 (CMK)을(를) 삭제했습니다. 삭제하려면 CMK를 사용하여 스케줄키 삭제 작업. 지정된 대기 기간 만료 후, AWS KMS 키를 삭제합니다. AWS KMS 다음 중하나와 같은 항목을 기록하십시오. CloudTrail 로그를 기록하도록 로그합니다.

190

Page 199: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

예를 들어 CloudTrail 로그 입력 ScheduleKeyDeletion 작동, 참조 ScheduleKeyDeletion (p. 205). 삭제에 대한 정보 CMKs, 참조: 고객 마스터 키 삭제 (p. 266).

{ "eventVersion": "1.05", "userIdentity": { "accountId": "111122223333", "invokedBy": "AWS Internal" }, "eventTime": "2020-07-31T00:07:00Z", "eventSource": "kms.amazonaws.com", "eventName": "DeleteKey", "awsRegion": "us-east-1", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": null, "responseElements": null, "eventID": "b25f9cda-74e1-4458-847b-4972a0bf9668", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsServiceEvent", "recipientAccountId": "111122223333", "serviceEventDetails": { "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }}

DescribeKey다음 예는 여러 통화를 기록하는 로그 파일을 보여 줍니다. 설명 작업. AWS KMS 다음에 전화할 때 다음과같은 항목을 기록합니다. DescribeKey 작동 또는 보기 CMKs (p. 27) in the AWS KMS 콘솔. 이러한 호출은AWS KMS 관리 콘솔에서 키 보기 (p. 27)의 결과였습니다.

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2014-11-05T20:51:21Z" } }, "invokedBy": "signin.amazonaws.com" }, "eventTime": "2014-11-05T20:51:34Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "us-east-1",

191

Page 200: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

"sourceIPAddress": "192.0.2.0", "userAgent": "signin.amazonaws.com", "requestParameters": { "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }, "responseElements": null, "requestID": "874d4823-652d-11e4-9a87-01af2a1ddecb", "eventID": "f715da9b-c52c-4824-99ae-88aa1bb58ae4", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }, { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2014-11-05T20:51:21Z" } }, "invokedBy": "signin.amazonaws.com" }, "eventTime": "2014-11-05T20:51:55Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "signin.amazonaws.com", "requestParameters": { "keyId": "0987dcba-09fe-87dc-65ba-ab0987654321" }, "responseElements": null, "requestID": "9400c720-652d-11e4-9a87-01af2a1ddecb", "eventID": "939fcefb-dc14-4a52-b918-73045fe97af3", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "accountId": "111122223333" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } ]}

192

Page 201: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

DisableKey다음 예는 AWS CloudTrail 로그 입력 장애 작업. 활성화와 비활성화에 대한 정보 고객 마스터 키 에서 AWSKMS, 참조: 키 활성화 및 비활성화 (p. 47).

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-11-04T00:52:43Z", "eventSource": "kms.amazonaws.com", "eventName": "DisableKey", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }, "responseElements": null, "requestID": "e26552bc-63bc-11e4-bc2b-4198b6150d5c", "eventID": "995c4653-3c53-4a06-a0f0-f5531997b741", "readOnly": false, "resources": [{ "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } ]}

EnableKey다음 예는 AWS CloudTrail 로그 입력 키키 작업. 활성화와 비활성화에 대한 정보 고객 마스터 키 에서 AWSKMS, 참조: 키 활성화 및 비활성화 (p. 47)......

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-11-04T00:52:20Z", "eventSource": "kms.amazonaws.com", "eventName": "EnableKey", "awsRegion": "us-east-1",

193

Page 202: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

"sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }, "responseElements": null, "requestID": "d528a6fb-63bc-11e4-bc2b-4198b6150d5c", "eventID": "be393928-3629-4370-9634-567f9274d52e", "readOnly": false, "resources": [{ "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } ]}

EnableKeyRotation다음 예는 AWS CloudTrail 님과의 통화 로그 입력 활성화 작업. 예를 들어 CloudTrail 키가 회전될 때 기록된 로그 항목, 참조 RotateKey (p. 204). 회전 관련 정보 AWS KMS 고객 마스터 키, 참조: 회전 고객 마스터키 (p. 170).

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2020-07-25T23:41:56Z", "eventSource": "kms.amazonaws.com", "eventName": "EnableKeyRotation", "awsRegion": "us-west-2", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }, "responseElements": null, "requestID": "81f5b794-452b-4d6a-932b-68c188165273", "eventID": "fefc43a7-8e06-419f-bcab-b3bf18d6a401", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

194

Page 203: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

Encrypt다음 예는 AWS CloudTrail 로그 입력 암호화 작업.

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-11-04T00:53:11Z", "eventSource": "kms.amazonaws.com", "eventName": "Encrypt", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "encryptionContext": { "ContextKey1": "Value1" }, "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, "responseElements": null, "requestID": "f3423043-63bc-11e4-bc2b-4198b6150d5c", "eventID": "91235988-eb87-476a-ac2c-0cdc244e6dca", "readOnly": true, "resources": [{ "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }], "eventType": "AwsServiceEvent", "recipientAccountId": "111122223333" } ]}

GenerateDataKey다음 예는 AWS CloudTrail 로그 입력 generatedatakey 작업.

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-11-04T00:52:40Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey",

195

Page 204: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

"awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "numberOfBytes": 32 }, "responseElements": null, "requestID": "e0eb83e3-63bc-11e4-bc2b-4198b6150d5c", "eventID": "a9dea4f9-8395-46c0-942c-f509c02c2b71", "readOnly": true, "resources": [{ "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } ]}

GenerateDataKey(포함에서)다음 예제는 AWS CloudTrailNitro Enclaves SDKkms-generate-data-key의 작업에 대한 로그 항목을보여줍니다. API는 절의 서명된 kms-generate-data-key 증명 문서AWS KMS를 포함하는 파라미터를사용하여 GenerateDataKey 작업을 호출합니다.https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitro-enclave-concepts.html#term-attestdoc

AWS Nitro 엔클레이브는 Amazon EC2enlaves라는 격리된 컴퓨팅 환경을 생성하여 매우 민감한 데이터를보호하고 처리할 수 있는 기능입니다. 및 AWS Nitro 엔클레이브와의 통합에 대한 자세한 내용은 AWS KMS의 Nitro Enclaves를 참조하십시오.Linux 인스턴스용 Amazon EC2 사용 설명서

호출이 인코딩에서 시작되는 경우 CloudTrail 로그에는 인코딩의 측정값을 나타내는 수신자 데이터가 포함됩니다.

{ "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-11-04T00:52:40Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "numberOfBytes": 32 }, "responseElements": null, "additionalEventData": { "recipient": { "attestationDocumentModuleId": "i-123456789abcde123-enc123456789abcde12", "attestationDocumentEnclaveImageDigest": "ee0d451a2ff9aaaa9bccd07700b9cab123a0ac2386ef7e88ad5ea6c72ebabea840957328e2ec890b408c9b06cb8ebe6a"

196

Page 205: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

} }, "requestID": "e0eb83e3-63bc-11e4-bc2b-4198b6150d5c", "eventID": "a9dea4f9-8395-46c0-942c-f509c02c2b71", "readOnly": true, "resources": [{ "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

GenerateDataKeyPair다음 예는 AWS CloudTrail 로그 입력 generatedata키패드 작업. 이 예에서는 대칭으로 암호화된 RSA 키 쌍을 생성하는 작업을 기록합니다. 고객 마스터 키 (CMK) ).

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2020-07-27T18:57:57Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKeyPair", "awsRegion": "us-west-2", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "keyPairSpec": "RSA_3072", "encryptionContext": { "Project": "Alpha" }, "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }, "responseElements": null, "requestID": "52fb127b-0fe5-42bb-8e5e-f560febde6b0", "eventID": "9b6bd6d2-529d-4890-a949-593b13800ad7", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

GenerateDataKeyPairWithoutPlaintext다음 예는 AWS CloudTrail 로그 입력 generatedataifairwithplaintext 작업. 이 예에서는 대칭으로 암호화된RSA 키 쌍을 생성하는 작업을 기록합니다. 고객 마스터 키 (CMK) ).

197

Page 206: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2020-07-27T18:57:57Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKeyPairWithoutPlaintext", "awsRegion": "us-west-2", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "keyPairSpec": "RSA_4096", "encryptionContext": { "Index": "5" }, "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }, "responseElements": null, "requestID": "52fb127b-0fe5-42bb-8e5e-f560febde6b0", "eventID": "9b6bd6d2-529d-4890-a949-593b13800ad7", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

GenerateDataKeyWithoutPlaintext다음 예는 AWS CloudTrail 로그 입력 generatedatakeywithoutplaintext 작업.

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-11-04T00:52:23Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKeyWithoutPlaintext", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "errorCode": "InvalidKeyUsageException", "requestParameters": {

198

Page 207: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

"keyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "numberOfBytes": 16 }, "responseElements": null, "requestID": "d6b8e411-63bc-11e4-bc2b-4198b6150d5c", "eventID": "f7734272-9ec5-4c80-9f36-528ebbe35e4a", "readOnly": true, "resources": [{ "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } ]}

GenerateRandom다음 예는 AWS CloudTrail 로그 입력 제너라발란돔 작업. 이 작업은 고객 마스터 키, resources 필드가 비어 있습니다.

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-11-04T00:52:37Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateRandom", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": null, "responseElements": null, "requestID": "df1e3de6-63bc-11e4-bc2b-4198b6150d5c", "eventID": "239cb9f7-ae05-4c94-9221-6ea30eef0442", "readOnly": true, "resources": [], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } ]}

GenerateRandom(포함에서)다음 예제는 AWS CloudTrailNitro Enclaves SDKkms-generate-random의 작업에 대한 로그 항목을 보여줍니다. API는 절의 서명된 kms-generate-random 증명 문서AWS KMS를 포함하는 파라미터를 사용하여 GenerateRandom 작업을 호출합니다.https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitro-enclave-concepts.html#term-attestdoc

199

Page 208: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

AWS Nitro 엔클레이브는 Amazon EC2enlaves라는 격리된 컴퓨팅 환경을 생성하여 매우 민감한 데이터를보호하고 처리할 수 있는 기능입니다. 및 AWS Nitro 엔클레이브와의 통합에 대한 자세한 내용은 AWS KMS의 Nitro Enclaves를 참조하십시오.Linux 인스턴스용 Amazon EC2 사용 설명서

호출이 인코딩에서 시작되는 경우 CloudTrail 로그에는 인코딩의 측정값을 나타내는 수신자 데이터가 포함됩니다.

{ "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-11-04T00:52:37Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateRandom", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": null, "responseElements": null, "additionalEventData": { "recipient": { "attestationDocumentModuleId": "i-123456789abcde123-enc123456789abcde12", "attestationDocumentEnclaveImageDigest": "ee0d451a2ff9aaaa9bccd07700b9cab123a0ac2386ef7e88ad5ea6c72ebabea840957328e2ec890b408c9b06cb8ebe6a" } }, "requestID": "df1e3de6-63bc-11e4-bc2b-4198b6150d5c", "eventID": "239cb9f7-ae05-4c94-9221-6ea30eef0442", "readOnly": true, "resources": [], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

GetKeyPolicy다음 예는 AWS CloudTrail 로그 입력 게키톨시 작업. 에 대한 주요 정책 보기 관련 정보 AWS KMS 고객 마스터 키 (CMK참조) 키 정책 보기 (p. 76).

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-11-04T00:50:30Z", "eventSource": "kms.amazonaws.com", "eventName": "GetKeyPolicy", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0",

200

Page 209: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

"userAgent": "AWS Internal", "requestParameters": { "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "policyName": "default" }, "responseElements": null, "requestID": "93746dd6-63bc-11e4-bc2b-4198b6150d5c", "eventID": "4aa7e4d5-d047-452a-a5a6-2cce282a7e82", "readOnly": true, "resources": [{ "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } ]}

GetParametersForImport다음 예는 AWS CloudTrail 로그 입력은 getparametersforimport(getparametersforimport) 작업. 이작업은 키 자료를 가져올 때 사용하는 공개 키를 반환하고 CMK. 동일함 CloudTrail 항목을 사용하여GetParametersForImport 작동하거나 AWS KMS 콘솔 공개 키 다운로드 및 가져오기 (p. 283).

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2020-07-25T23:58:23Z", "eventSource": "kms.amazonaws.com", "eventName": "GetParametersForImport", "awsRegion": "us-west-2", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "wrappingAlgorithm": "RSAES_OAEP_SHA_256", "wrappingKeySpec": "RSA_2048" }, "responseElements": null, "requestID": "b5786406-e3c7-43d6-8d3c-6d5ef96e2278", "eventID": "4023e622-0c3e-4324-bdef-7f58193bba87", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

201

Page 210: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

ImportKeyMaterial다음 예는 AWS CloudTrail 로그 입력은 재료 작업. 동일함 CloudTrail 항목을 사용하여ImportKeyMaterial 작동하거나 AWS KMS 콘솔 키 재료 가져오기 (p. 287) a 고객 마스터 키 (CMK) ).

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2020-07-26T00:08:00Z", "eventSource": "kms.amazonaws.com", "eventName": "ImportKeyMaterial", "awsRegion": "us-west-2", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "validTo": "Jan 1, 2021 8:00:00 PM", "expirationModel": "KEY_MATERIAL_EXPIRES" }, "responseElements": null, "requestID": "89e10ee7-a612-414d-95a2-a128346969fd", "eventID": "c7abd205-a5a2-4430-bbfa-fc10f3e2d79f", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

ListAliases다음은 AWS CloudTrail 작업에 대한 ListAliases 로그 항목을 보여주는 예제입니다. 이 작업은 특정 별칭이나고객 마스터 키를 사용하지 않으므로 resources 필드는 비어 있습니다. 에서 별칭 보기에 대한 자세한 내용은 AWS KMS 단원을 참조하십시오.별칭 보기 (p. 53)

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-11-04T00:51:45Z", "eventSource": "kms.amazonaws.com",

202

Page 211: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

"eventName": "ListAliases", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "limit": 5, "marker": "eyJiIjoiYWxpYXMvZTU0Y2MxOTMtYTMwNC00YzEwLTliZWItYTJjZjA3NjA2OTJhIiwiYSI6ImFsaWFzL2U1NGNjMTkzLWEzMDQtNGMxMC05YmViLWEyY2YwNzYwNjkyYSJ9" }, "responseElements": null, "requestID": "bfe6c190-63bc-11e4-bc2b-4198b6150d5c", "eventID": "a27dda7b-76f1-4ac3-8b40-42dfba77bcd6", "readOnly": true, "resources": [], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } ]}

ListGrants다음 예는 AWS CloudTrail 로그 입력 청취자 작업. 에 대한 보조금 관련 정보 AWS KMS, 참조: 권한 부여 사용 (p. 136).

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-11-04T00:52:49Z", "eventSource": "kms.amazonaws.com", "eventName": "ListGrants", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "marker": "eyJncmFudElkIjoiMWY4M2U2ZmM0YTY2NDgxYjQ2Yzc4MTdhM2Y4YmQwMDFkZDNiYmQ1MGVlYTMyY2RmOWFiNWY1Nzc1NDNjYmNmMyIsImtleUFybiI6ImFybjphd3M6dHJlbnQtc2FuZGJveDp1cy1lYXN0LTE6NTc4Nzg3Njk2NTMwOmtleS9lYTIyYTc1MS1lNzA3LTQwZDAtOTJhYy0xM2EyOGZhOWViMTEifQ\u003d\u003d", "limit": 10 }, "responseElements": null, "requestID": "e5c23960-63bc-11e4-bc2b-4198b6150d5c", "eventID": "d24380f5-1b20-4253-8e92-dd0492b3bd3d", "readOnly": true, "resources": [{ "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } ]

203

Page 212: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

}

ReEncrypt다음 예는 AWS CloudTrail 로그 입력 재암호화 작업. The resources 이 로그 항목의 필드는 두 개의 고객마스터 키 (CMKs), 소스 CMK 도착지 CMK, 해당 주문에서.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2020-07-27T23:09:13Z", "eventSource": "kms.amazonaws.com", "eventName": "ReEncrypt", "awsRegion": "us-west-2", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "destinationEncryptionAlgorithm": "SYMMETRIC_DEFAULT", "destinationKeyId": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "sourceEncryptionAlgorithm": "SYMMETRIC_DEFAULT", "sourceKeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, "responseElements": null, "requestID": "03769fd4-acf9-4b33-adf3-2ab8ca73aadf", "eventID": "542d9e04-0e8d-4e05-bf4b-4bdeb032e6ec", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

RotateKey다음 예는 AWS CloudTrail 회전하는 작업의 로그 항목 고객 마스터 키 (CMK) ). AWS KMS 이 작업을 호출할때가 되면 CMK 자동 키 회전이 활성화됩니다. 자동 키 회전(활성화), AWS KMS 회전 CMK 365일 후, 이후365일마다.

예를 들어 CloudTrail 기록을 기록하는 로그 항목 EnableKeyRotation 작동, 참조EnableKeyRotation (p. 194). 회전 관련 정보 AWS KMS 고객 마스터 키 회전 고객 마스터 키 (p. 170).

204

Page 213: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

{ "eventVersion": "1.05", "userIdentity": { "accountId": "111122223333", "invokedBy": "AWS Internal" }, "eventTime": "2021-01-14T01:41:59Z", "eventSource": "kms.amazonaws.com", "eventName": "RotateKey", "awsRegion": "us-west-2", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": null, "responseElements": null, "eventID": "a24b3967-ddad-417f-9b22-2332b918db06", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsServiceEvent", "recipientAccountId": "111122223333", "serviceEventDetails": { "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }}

ScheduleKeyDeletion다음 예는 AWS CloudTrail 로그 입력이 생성됨 스케줄키 삭제 작업. 예를 들어 CloudTrail 키가 삭제될 때기록된 로그 항목, 참조 DeleteKey (p. 190). 삭제에 대한 정보 고객 마스터 키, 참조: 고객 마스터 키 삭제 (p. 266).

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2020-07-23T18:58:30Z", "eventSource": "kms.amazonaws.com", "eventName": "ScheduleKeyDeletion", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "pendingWindowInDays": 7, "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }, "responseElements": { "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "deletionDate": "Jul 31, 2020 12:00:00 AM" }, "requestID": "ee408f36-ea01-422b-ac14-b0f147c68334",

205

Page 214: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

"eventID": "3c4226b0-1e81-48a8-a333-7fa5f3cbd118", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

TagResource다음 예는 AWS CloudTrail 님과의 통화 로그 입력 태그 리소스 태그 키를 사용하여 태그 추가 Department태그 값 IT.

예를 들어 UntagResource CloudTrail 키가 회전될 때 기록된 로그 항목, 참조 UntagResource (p. 207).태그 부착에 대한 정보 AWS KMS 고객 마스터 키, 참조: 키 태그 지정 (p. 44).

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2020-07-01T21:19:25Z", "eventSource": "kms.amazonaws.com", "eventName": "TagResource", "awsRegion": "us-west-2", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "tags": [ { "tagKey": "Department", "tagValue": "IT" } ] }, "responseElements": null, "requestID": "b942584a-f77d-4787-9feb-b9c5be6e746d", "eventID": "0a091b9b-0df5-4cf9-b667-6f2879532b8f", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

206

Page 215: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

UntagResource다음 예는 AWS CloudTrail 님과의 통화 로그 입력 태그 리소스 태그 키를 사용하여 태그 삭제 Dept.

예를 들어 TagResource CloudTrail 로그 항목, 참조 TagResource (p. 206). 태그 부착에 대한 정보 AWSKMS 고객 마스터 키, 참조: 키 태그 지정 (p. 44).

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2020-07-01T21:19:19Z", "eventSource": "kms.amazonaws.com", "eventName": "UntagResource", "awsRegion": "us-west-2", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "tagKeys": [ "Dept" ] }, "responseElements": null, "requestID": "cb1d507b-6015-47f4-812b-179713af8068", "eventID": "0b00f4b0-036e-411d-aa75-87eb4a35a4b3", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

Amazon EC2 예제 1다음 예제는 관리 콘솔에서 기본 볼륨 키를 사용해 암호화된 볼륨을 생성하는 사용자를 보여줍니다.

다음 예제는 AWS EC2 Management Console에서 기본 볼륨 키를 사용해 암호화된 볼륨을 생성하는 사용자 Alice를 보여주는 CloudTrail 로그 항목입니다. EC2 로그 파일 레코드는 volumeId 필드값 "vol-13439757". AWS KMS 레코드에는 encryptionContext 필드 값 "aws:ebs:id":"vol-13439757". 마찬가지로, principalId and accountId 두 레코드 간에 일치합니다. 이 레코드는암호화된 볼륨 생성 시 볼륨 콘텐츠를 암호화하는 데 사용되는 데이터 키가 생성된다는 사실을 보여줍니다.

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser",

207

Page 216: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

"principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2014-11-05T20:40:44Z" } }, "invokedBy": "signin.amazonaws.com" }, "eventTime": "2014-11-05T20:50:18Z", "eventSource": "ec2.amazonaws.com", "eventName": "CreateVolume", "awsRegion": "us-east-1", "sourceIPAddress": "72.72.72.72", "userAgent": "signin.amazonaws.com", "requestParameters": { "size": "10", "zone": "us-east-1a", "volumeType": "gp2", "encrypted": true }, "responseElements": { "volumeId": "vol-13439757", "size": "10", "zone": "us-east-1a", "status": "creating", "createTime": 1415220618876, "volumeType": "gp2", "iops": 30, "encrypted": true }, "requestID": "1565210e-73d0-4912-854c-b15ed349e526", "eventID": "a3447186-135f-4b00-8424-bc41f1a93b4f", "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }, { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2014-11-05T20:40:44Z" } }, "invokedBy": "AWS Internal" }, "eventTime": "2014-11-05T20:50:19Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKeyWithoutPlaintext", "awsRegion": "us-east-1", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "encryptionContext": { "aws:ebs:id": "vol-13439757"

208

Page 217: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

}, "numberOfBytes": 64, "keyId": "alias/aws/ebs" }, "responseElements": null, "requestID": "create-123456789012-758241111-1415220618", "eventID": "4bd2a696-d833-48cc-b72c-05e61b608399", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-east-1:123456789012:key/e29ddfd4-1bf6-4e1b-8ecb-08216bd70d07", "accountId": "123456789012" } ], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" } ]}

Amazon EC2 예제 2다음 예에서는 IAM 사용자 실행 중 Amazon EC2 인스턴스는 AWS KMS 고객 마스터 키 (CMK) ). 이 작업은여러 CloudTrail 로그 레코드를 생성합니다.

볼륨이 생성되면 고객을 대신하여 작동하는 Amazon EC2가 AWSKMS(GenerateDataKeyWithoutPlaintext)에서 암호화된 데이터 키를 가져옵니다. 그런 다음 데이터 키를 복호화할 수 있는 권한 부여(CreateGrant)를 생성합니다. 볼륨이 탑재되면 Amazon EC2는 AWSKMS를 호출하여 데이터 키를 복호화합니다(Decrypt).

Amazon EC2 인스턴스의 instanceId인 "i-81e2f56c"가 RunInstances 이벤트에 표시됩니다. 동일한 인스턴스 ID는 생성된 권한 부여("123456789012:aws:ec2-infrastructure:i-81e2f56c")의granteePrincipal 및 Decrypt 호출("arn:aws:sts::123456789012:assumed-role/aws:ec2-infrastructure/i-81e2f56c")에서 보안 주체인 위임된 역할에 자격을 부여합니다.

The 키 ARN (p. 12) of the CMK 데이터 볼륨을 보호하는 arn:aws:kms:us-east-1:123456789012:key/e29ddfd4-1bf6-4e1b-8ecb-08216bd70d07은(는) 모두 3에 나타납니다. AWS KMS 전화(CreateGrant, GenerateDataKeyWithoutPlaintext, 그리고 Decrypt) ).

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2014-11-05T21:34:36Z" } }, "invokedBy": "signin.amazonaws.com" }, "eventTime": "2014-11-05T21:35:27Z", "eventSource": "ec2.amazonaws.com", "eventName": "RunInstances", "awsRegion": "us-east-1",

209

Page 218: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

"sourceIPAddress": "72.72.72.72", "userAgent": "signin.amazonaws.com", "requestParameters": { "instancesSet": { "items": [ { "imageId": "ami-b66ed3de", "minCount": 1, "maxCount": 1 } ] }, "groupSet": { "items": [ { "groupId": "sg-98b6e0f2" } ] }, "instanceType": "m3.medium", "blockDeviceMapping": { "items": [ { "deviceName": "/dev/xvda", "ebs": { "volumeSize": 8, "deleteOnTermination": true, "volumeType": "gp2" } }, { "deviceName": "/dev/sdb", "ebs": { "volumeSize": 8, "deleteOnTermination": false, "volumeType": "gp2", "encrypted": true } } ] }, "monitoring": { "enabled": false }, "disableApiTermination": false, "instanceInitiatedShutdownBehavior": "stop", "clientToken": "XdKUT141516171819", "ebsOptimized": false }, "responseElements": { "reservationId": "r-5ebc9f74", "ownerId": "123456789012", "groupSet": { "items": [ { "groupId": "sg-98b6e0f2", "groupName": "launch-wizard-2" } ] }, "instancesSet": { "items": [ { "instanceId": "i-81e2f56c", "imageId": "ami-b66ed3de", "instanceState": {

210

Page 219: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

"code": 0, "name": "pending" }, "amiLaunchIndex": 0, "productCodes": { }, "instanceType": "m3.medium", "launchTime": 1415223328000, "placement": { "availabilityZone": "us-east-1a", "tenancy": "default" }, "monitoring": { "state": "disabled" }, "stateReason": { "code": "pending", "message": "pending" }, "architecture": "x86_64", "rootDeviceType": "ebs", "rootDeviceName": "/dev/xvda", "blockDeviceMapping": { }, "virtualizationType": "hvm", "hypervisor": "xen", "clientToken": "XdKUT1415223327917", "groupSet": { "items": [ { "groupId": "sg-98b6e0f2", "groupName": "launch-wizard-2" } ] }, "networkInterfaceSet": { }, "ebsOptimized": false } ] } }, "requestID": "41c4b4f7-8bce-4773-bf0e-5ae3bb5cbce2", "eventID": "cd75a605-2fee-4fda-b847-9c3d330ebaae", "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }, { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2014-11-05T21:34:36Z" } }, "invokedBy": "AWS Internal"

211

Page 220: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

}, "eventTime": "2014-11-05T21:35:35Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-east-1", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "constraints": { "encryptionContextSubset": { "aws:ebs:id": "vol-f67bafb2" } }, "granteePrincipal": "123456789012:aws:ec2-infrastructure:i-81e2f56c", "keyId": "arn:aws:kms:us-east-1:123456789012:key/e29ddfd4-1bf6-4e1b-8ecb-08216bd70d07" }, "responseElements": { "grantId": "6caf442b4ff8a27511fb6de3e12cc5342f5382112adf75c1a91dbd221ec356fe" }, "requestID": "41c4b4f7-8bce-4773-bf0e-5ae3bb5cbce2", "eventID": "c1ad79e3-0d3f-402a-b119-d5c31d7c6a6c", "readOnly": false, "resources": [ { "ARN": "arn:aws:kms:us-east-1:123456789012:key/e29ddfd4-1bf6-4e1b-8ecb-08216bd70d07", "accountId": "123456789012" } ], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }, { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2014-11-05T21:34:36Z" } }, "invokedBy": "AWS Internal" }, "eventTime": "2014-11-05T21:35:32Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKeyWithoutPlaintext", "awsRegion": "us-east-1", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "encryptionContext": { "aws:ebs:id": "vol-f67bafb2" }, "numberOfBytes": 64, "keyId": "alias/aws/ebs" }, "responseElements": null, "requestID": "create-123456789012-758247346-1415223332", "eventID": "ac3cab10-ce93-4953-9d62-0b6e5cba651d",

212

Page 221: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드로그 항목의 예AWS KMS

"readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-east-1:123456789012:key/e29ddfd4-1bf6-4e1b-8ecb-08216bd70d07", "accountId": "123456789012" } ], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }, { "eventVersion": "1.02", "userIdentity": { "type": "AssumedRole", "principalId": "123456789012:aws:ec2-infrastructure:i-81e2f56c", "arn": "arn:aws:sts::123456789012:assumed-role/aws:ec2-infrastructure/i-81e2f56c", "accountId": "123456789012", "accessKeyId": "", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2014-11-05T21:35:38Z" }, "sessionIssuer": { "type": "Role", "principalId": "123456789012:aws:ec2-infrastructure", "arn": "arn:aws:iam::123456789012:role/aws:ec2-infrastructure", "accountId": "123456789012", "userName": "aws:ec2-infrastructure" } } }, "eventTime": "2014-11-05T21:35:47Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-east-1", "sourceIPAddress": "172.172.172.172", "requestParameters": { "encryptionContext": { "aws:ebs:id": "vol-f67bafb2" } }, "responseElements": null, "requestID": "b4b27883-6533-11e4-b4d9-751f1761e9e5", "eventID": "edb65380-0a3e-4123-bbc8-3d1b7cff49b0", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-east-1:123456789012:key/e29ddfd4-1bf6-4e1b-8ecb-08216bd70d07", "accountId": "123456789012" } ], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" } ]}

213

Page 222: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드CloudWatch을(를) 사용하여 모니터링

Amazon CloudWatch을(를) 사용하여 모니터링귀하는 고객 마스터 키 (CMKs) 사용 Amazon CloudWatch에서 원시 데이터를 수집하고 처리하는 AWS KMS실시간 메트릭에 가까운 위치에 있습니다. 이러한 데이터는 2주 동안 기록되므로 기록 정보에 액세스하고 사용에 대한 이해를 높일 수 있습니다. CMKs 시간이 지남에 따라 변화가 발생합니다. Amazon CloudWatch에대한 자세한 내용은 Amazon CloudWatch 사용 설명서 단원을 참조하십시오.

주제• AWS KMS 지표 및 차원 (p. 214)• AWS KMS 지표를 모니터링할 CloudWatch 경보 만들기 (p. 215)• AWS KMS 이벤트 (p. 216)

AWS KMS 지표 및 차원귀하가 키 자료를 CMK (p. 277) 이를 바탕으로 AWS KMS 메트릭 및 치수 전송 CloudWatch. AWSManagement 콘솔 및 Amazon CloudWatch API를 사용하여 AWS KMS 지표를 볼 수 있습니다.

AWS KMS MetricsThe AWS/KMS namespace includes the following metrics.

SecondsUntilKeyMaterialExpiration

This metric tracks the number of seconds remaining until imported key material expires. This metricis valid only for CMKs whose origin is EXTERNAL and whose key material is or was set to expire. Themost useful statistic for this metric is Minimum, which tells you the smallest amount of time remainingfor all data points in the specified statistic period. The only valid unit for this metric is Seconds.

Use this metric to track the amount of time that remains until your imported key material expires. Whenthat amount of time falls below a threshold that you define, you might want to take action such asreimporting the key material with a new expiration date. You can create a CloudWatch alarm to notifyyou when that happens. For more information, see AWS KMS 지표를 모니터링할 CloudWatch 경보 만들기 (p. 215).

Dimensions for AWS KMS MetricsAWS KMS metrics use the AWS/KMS namespace and have only one valid dimension: KeyId. You can usethis dimension to view metric data for a specific CMK or set of CMKs.

AWS KMS 지표는 어떻게 봅니까?AWS Management 콘솔 및 Amazon CloudWatch API를 사용하여 AWS KMS 지표를 볼 수 있습니다.

CloudWatch 콘솔을 사용하여 지표를 확인하려면

1. https://console.aws.amazon.com/cloudwatch/에서 CloudWatch 콘솔을 엽니다.2. 필요한 경우 리전을 변경합니다. 탐색 모음에서 AWS 리소스가 상주하는 리전을 선택합니다.3. 탐색 창에서 지표를 선택합니다.4. 콘텐츠 창에서 [All metrics] 탭을 선택합니다. 그런 다음 AWS 네임스페이스 아래에서 KMS를 선택합니

다.5. [Per-Key Metrics]를 선택해 개별 지표와 차원을 확인합니다.

214

Page 223: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드경보 생성

Amazon CloudWatch API 사용을 통해 지표를 보려면

보기 AWS KMS 메트릭을 사용하여 CloudWatch API, 전송 listmetrics 요청 Namespace 설정 AWS/KMS. 다음 예제에서는 이 작업을 수행하는 방법을 보여 줍니다. AWS Command Line Interface (AWS CLI).

$ aws cloudwatch list-metrics --namespace AWS/KMS

AWS KMS 지표를 모니터링할 CloudWatch 경보 만들기지표 값이 변화하면 Amazon SNS 메시지를 보내고 경보가 상태를 변경하도록 하는 CloudWatch 경보를 만들 수 있습니다. 경보는 지정한 기간에 단일 지표를 감시하고 여러 기간에 지정된 임계값에 대한 지표 값을기준으로 작업을 하나 이상 수행합니다. 이 작업은 Amazon SNS 주제나 Auto Scaling 정책으로 전송되는 알림입니다. 경보는 지속적인 상태 변경에 대해서만 작업을 호출합니다. CloudWatch 경보는 특정 상태가 되었다고 해서 작업을 호출하지는 않습니다. 이러한 상태가 변경되어 지정한 기간 동안 유지되어야 합니다.

주제• 가져온 키 구성 요소의 만료 여부를 모니터링할 CloudWatch 경보 만들기 (p. 215)• 생성 CloudWatch 알람 사용을 모니터링하기 위한 CMKs 삭제 대기 중 (p. 216)

가져온 키 구성 요소의 만료 여부를 모니터링할 CloudWatch 경보만들기귀하가 키 자료를 CMK (p. 277)키 자료가 만료되는 시간을 선택적으로 지정할 수 있습니다. 주요 자료가만료되면 AWS KMS 주요 재료 및 CMK 사용할 수 없게 됩니다. 사용 방법 CMK 키를 다시 가져와야 합니다. 가져온 키 구성 요소가 만료하기까지 남은 시간이 정의한 임곗값(예: 10일) 미만으로 떨어질 때 알려주는CloudWatch 경보를 생성할 수 있습니다. 이러한 경보를 통해 알림을 받으면 새로운 만료 날짜로 키 구성 요소를 다시 가져오는 등의 조치를 취하고 싶을 수 있습니다.

가져온 키 구성 요소의 만료 여부를 모니터링할 경보를 만들려면(AWS Management 콘솔)

1. https://console.aws.amazon.com/cloudwatch/에서 CloudWatch 콘솔을 엽니다.2. 필요한 경우 리전을 변경합니다. 탐색 모음에서 AWS 리소스가 상주하는 리전을 선택합니다.3. 탐색 창에서 Alarms를 선택합니다. 그리고 경보 만들기를 선택합니다.4. [Browse Metrics]를 선택한 후 [KMS]를 선택합니다.5. 의 키 ID 옆에 있는 확인란을 선택합니다. CMK 을(를) 모니터링합니다.6. 아래쪽 창에서 메뉴를 이용해 [Statistic]을 [Minimum]으로, [Time period]를 [1 Minute]으로 변경합니다.

다음을 선택합니다.7. [Create Alarm] 창에서 다음과 같이 실행합니다.

a. 이름에서 KeyMaterialExpiresSoon 같은 사용자 이름을 입력합니다.b. Whenever:에 이어 is:에서 <= 선택 후 임곗값으로 적용할 초를 입력합니다. 예를 들어 가져온 키 구

성 요소가 만료될 때까지 남은 시간이 10일 이하일 때 알림을 받으려면 864000 입력을 하면 됩니다.

c. for consecutive period(s)의 경우 필요에 따라 1 입력을 하면 됩니다.d. [Send notification to:]에서 다음 중 하나를 실시합니다.

• 새로운 Amazon SNS 주제를 사용하려면 새 목록을 선택한 후 새 주제 이름을 입력합니다. [Emaillist:]에 이메일 주소를 하나 이상 입력합니다. 쉼표로 구분하여 두 개 이상의 이메일 주소를 입력할 수 있습니다.

215

Page 224: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 이벤트

• 기존 Amazon SNS 주제를 사용하려면 사용할 주제의 이름을 선택합니다.e. [Create Alarm]을 선택합니다.

8. 한 이메일 주소로 알림을 보내기로 선택한 경우 [email protected]에서 "AWS Notification- Subscription Confirmation"이라는 제목으로 수신한 이메일 메시지를 엽니다. 이메일 메시지의[Confirm subscription] 링크를 선택해 이메일 주소를 확인합니다.

Important

이메일 주소를 확인한 후부터 이메일 알림을 받게 됩니다.

생성 CloudWatch 알람 사용을 모니터링하기 위한 CMKs 삭제 대기 중귀하가 스케줄 키 삭제 (p. 266) for a CMK, AWS KMS 대기 기간을 확대하기 전에 CMK. 대기 기간을 사용하여 CMK 현재 또는 미래에. 또한 CloudWatch 경보 메시지를 경고하는 경보 CMK 대기 기간 동안. 이러한알람으로부터 알림을 받는 경우, CMK.

자세한 정보는 생성 Amazon CloudWatch 알람의 사용을 고객 마스터 키 삭제 대기 중 (p. 271) 단원을 참조하십시오.

AWS KMS 이벤트AWS KMS 통합 Amazon CloudWatch Events 귀하에게 영향을 미치는 특정 이벤트에 대해 CMKs. 각 이벤트는 JSON(javascript Object Notation) 이벤트 이름, 이벤트가 발생한 날짜 및 시간, CMK 영향을 받음.CloudWatch 이벤트 이용을 통해 이러한 이벤트를 수집하고 Amazon Kinesis Data Streams의 AWS Lambda함수, Amazon SNS 주제, Amazon SQS 대기열, 스트림 등 하나 이상의 대상 또는 기본 제공 대상으로 라우팅하는 규칙을 설정할 수 있습니다.

AWS CloudTrail가 읽기/쓰기 API 요청을 기록할 때 내보내는 것을 포함해 다른 종류의 이벤트와 함께CloudWatch 이벤트를 사용하는 방법에 대한 추가 정보는 Amazon CloudWatch Events 사용 설명서를 참조하십시오.

216

Page 225: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 이벤트

다음 주제에서는 AWS KMS에서 만드는 CloudWatch 이벤트에 대해 설명합니다.

주제• KMS CMK 회전 (p. 217)• KMS가 가져온 키 구성 요소 만료 (p. 217)• KMS CMK 삭제 (p. 217)

KMS CMK 회전사용 시 자동 키 회전 (p. 170) for a 고객 관리 CMK (p. 4), AWS KMS 새로운 핵심 자료를 CMK 매년. 핵심 재료 AWS 관리 CMKs (p. 4) 3년마다 자동으로 회전됩니다.

언제 AWS KMS 키 재료 회전, KMS 전송 CMK 회전 이벤트 CloudWatch 이벤트. 다음은 이 이벤트의 예입니다.

{ "version": "0", "id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718", "detail-type": "KMS CMK Rotation", "source": "aws.kms", "account": "111122223333", "time": "2016-08-25T21:05:33Z", "region": "us-west-2", "resources": [ "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" ], "detail": { "key-id": "1234abcd-12ab-34cd-56ef-1234567890ab" }}

KMS가 가져온 키 구성 요소 만료귀하가 키 자료를 CMK (p. 277)키 자료가 만료되는 시간을 선택적으로 지정할 수 있습니다. 키 구성 요소가 만료되면, AWS KMS가 키 구성 요소를 삭제하고 CloudWatch 이벤트로 해당 이벤트를 보냅니다. 다음은이 이벤트의 예입니다.

{ "version": "0", "id": "9da9af57-9253-4406-87cb-7cc400e43465", "detail-type": "KMS Imported Key Material Expiration", "source": "aws.kms", "account": "111122223333", "time": "2016-08-22T20:12:19Z", "region": "us-west-2", "resources": [ "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" ], "detail": { "key-id": "1234abcd-12ab-34cd-56ef-1234567890ab" }}

KMS CMK 삭제귀하가 스케줄 키 삭제 (p. 266) for a CMK, AWS KMS 대기 기간을 확대하기 전에 CMK. 대기 기간 종료 후AWS KMS 삭제 CMK 해당 이벤트를 CloudWatch 이벤트. 다음은 이 이벤트의 예입니다.

217

Page 226: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 이벤트

{ "version": "0", "id": "e9ce3425-7d22-412a-a699-e7a5fc3fbc9a", "detail-type": "KMS CMK Deletion", "source": "aws.kms", "account": "111122223333", "time": "2016-08-19T03:23:45Z", "region": "us-west-2", "resources": [ "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" ], "detail": { "key-id": "1234abcd-12ab-34cd-56ef-1234567890ab" }}

218

Page 227: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드클라이언트 만들기

AWS KMS API 프로그래밍AWS KMS API를 사용하여 다음과 같은 작업 등을 수행할 수 있습니다.

• 키를 생성, 설명, 나열하고 활성화/비활성화합니다.• 별칭을 생성, 삭제, 나열하고 업데이트합니다.• 콘텐츠를 암호화, 해독, 다시 암호화합니다.• 키 정책을 설정, 나열하고 검색합니다.• 권한 부여를 생성, 사용 중지, 취소 및 나열합니다.• 키 교체 상태를 검색합니다.• 키 설명을 업데이트합니다.• 일반 텍스트를 포함하거나 포함하지 않고 데이터를 생성합니다.• 임의 데이터를 생성합니다.

다음 주제의 샘플 코드는 AWS SDKs를 사용하여 AWS KMS API를 호출하는 방법을 보여줍니다.

AWS KMS 콘솔을 사용하여 이러한 작업 중 일부를 수행하는 방법에 대한 자세한 내용은 시작하기 (p. 21) 단원을 참조하십시오.

주제• 클라이언트 만들기 (p. 219)• 키 작업 (p. 220)• 별칭으로 작업 (p. 231)• 데이터 키 암호화 및 해독 (p. 240)• 키 정책 작업 (p. 248)• 권한 부여 작업 (p. 257)

클라이언트 만들기AWS SDK for Java, .NET용 AWS SDK, Python용 AWS SDK(Boto3), Ruby용 AWS SDK, PHP용 AWS SDK또는 AWS SDK for JavaScript in Node.js을 사용해 AWS Key Management Service(AWS KMS) API를 사용하는 코드를 작성하려면 AWS KMS 클라이언트를 생성하는 것부터 시작합니다.

생성된 클라이언트 객체는 다음에 나오는 주제의 예제 코드에서 사용됩니다.

Java

Java에서 AWS KMS 클라이언트를 만들려면 클라이언트 빌더를 사용합니다.

AWSKMS kmsClient = AWSKMSClientBuilder.standard().build();

Java 클라이언트 빌더 사용에 대한 자세한 내용은 다음 리소스를 참조하십시오.

• AWS 개발자 블로그의 Fluent Client Builders• 서비스 클라이언트 만들기 in the AWS SDK for Java Developer Guide• 노스스크라이더 in the AWS SDK for Java API Reference

219

Page 228: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 작업

C#

AmazonKeyManagementServiceClient kmsClient = new AmazonKeyManagementServiceClient();

Python

kms_client = boto3.client('kms')

Ruby

require 'aws-sdk-kms' # in v2: require 'aws-sdk'

kmsClient = Aws::KMS::Client.new

PHP

만들려면 AWS KMS PHP(클라이언트)를 사용하여 AWS KMS 클라이언트 개체 및 버전 지정2014-11-01. 자세한 내용은 kmsclient 클래스 in the PHP용 AWS SDK API Reference.

// Create a KMSClient$KmsClient = new Aws\Kms\KmsClient([ 'profile' => 'default', 'version' => '2014-11-01', 'region' => 'us-east-1']);

Node.js

const kmsClient = new AWS.KMS();

키 작업이 주제의 예제에서는 AWS KMS API를 만들고, 보고, 활성화하고, 비활성화할 수 있습니다. AWS KMS 고객마스터 키 (p. 3) (CMKs) 및 생성 데이터 키 (p. 5).

주제• 고객 마스터 키 생성 (p. 220)• 데이터 키 생성 (p. 222)• 고객 마스터 키 보기 (p. 224)• 주요 ID 및 주요 ARN 가져오기 CMKs (p. 226)• 고객 마스터 키 활성화 (p. 228)• 고객 마스터 키 비활성화 (p. 229)

고객 마스터 키 생성을(를) 만들려면 고객 마스터 키 (p. 3) (CMK), 사용 키 생성 작업. 이 단원의 예제에서는 대칭형 CMK. 이 예제에서 사용되는 Description 파라미터는 선택 사항입니다.

클라이언트 객체가 필요한 언어의 경우 이러한 예제에서는 클라이언트 만들기 (p. 219)에서 생성한 AWSKMS 클라이언트 객체를 사용합니다.

220

Page 229: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드고객 마스터 키 생성

작성에 대한 도움말 CMKs 에서 AWS KMS 콘솔, 참조 키 생성 (p. 21).

Java

자세한 내용은 생성키 방법 에서 AWS SDK for Java API Reference.

// Create a CMK//String desc = "Key for protecting critical data"; CreateKeyRequest req = new CreateKeyRequest().withDescription(desc);CreateKeyResult result = kmsClient.createKey(req);

C#

자세한 내용은 생성키 방법 에서 .NET용 AWS SDK.

// Create a CMK//String desc = "Key for protecting critical data";

CreateKeyRequest req = new CreateKeyRequest(){ Description = desc};CreateKeyResponse response = kmsClient.CreateKey(req);

Python

자세한 내용은 Python용 AWS SDK(Boto3)의 create_key 메서드를 참조하십시오.

# Create a CMK

desc = 'Key for protecting critical data'

response = kms_client.create_key( Description=desc)

Ruby

자세한 내용은 키_생성 인스턴스 메서드 Ruby용 AWS SDK.

# Create a CMK

desc = 'Key for protecting critical data'

response = kmsClient.create_key({ description: desc})

PHP

자세한 내용은 생성키 방법 에서 PHP용 AWS SDK.

// Create a CMK//$desc = "Key for protecting critical data";

$result = $KmsClient->createKey([

221

Page 230: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드데이터 키 생성

'Description' => $desc]);

Node.js

자세한 내용은 키 만들기 속성 에서 AWS SDK for JavaScript in Node.js.

// Create a CMK//const Description = 'Key for protecting critical data';

kmsClient.createKey({ Description }, (err, data) => { ...});

PowerShell

을(를) 만들려면 CMK 파워셸의 경우, 새 Kms키 cm들렛.

# Create a CMK

$desc = 'Key for protecting critical data'New-KmsKey -Description $desc

AWS KMS PowerShell cmdlet을 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치합니다.자세한 내용은 Windows PowerShell용 AWS 도구 사용 설명서를 참조하세요.

데이터 키 생성대칭 데이터 키를 생성하려면 GenerateDataKey 작업을 사용합니다. 이 작업은 CMK 일반 텍스트 데이터 키와 해당 데이터 키의 복사본을 CMK 을(를) 지정했습니다. 각 명령에서 KeySpec 또는 NumberOfBytes 중하나(둘 다는 아님)를 지정해야 합니다.

클라이언트 객체가 필요한 언어의 경우 이러한 예제에서는 클라이언트 만들기 (p. 219)에서 생성한 AWSKMS 클라이언트 객체를 사용합니다.

Java

자세한 내용은 데이터 키 생성 방법 에서 AWS SDK for Java API Reference.

// Generate a data key//// ## ## # ARN# ### # #### ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

GenerateDataKeyRequest dataKeyRequest = new GenerateDataKeyRequest();dataKeyRequest.setKeyId(keyId);dataKeyRequest.setKeySpec("AES_256");

GenerateDataKeyResult dataKeyResult = kmsClient.generateDataKey(dataKeyRequest);

ByteBuffer plaintextKey = dataKeyResult.getPlaintext();

ByteBuffer encryptedKey = dataKeyResult.getCiphertextBlob();

C#

자세한 내용은 데이터 키 메서드 생성 에서 .NET용 AWS SDK.

222

Page 231: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드데이터 키 생성

// Generate a data key//// ## ## # ARN# ### # #### ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";GenerateDataKeyRequest dataKeyRequest = new GenerateDataKeyRequest(){ KeyId = keyId, KeySpec = DataKeySpec.AES_256};

GenerateDataKeyResponse dataKeyResponse = kmsClient.GenerateDataKey(dataKeyRequest);

MemoryStream plaintextKey = dataKeyResponse.Plaintext;

MemoryStream encryptedKey = dataKeyResponse.CiphertextBlob;

Python

자세한 내용은 생성_데이터_키 방법 에서 Python용 AWS SDK(Boto3).

# Generate a data key

# ## ## # ARN# ### # #### ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kms_client.generate_data_key( KeyId=key_id, KeySpec='AES_256')

plaintext_key = response['Plaintext']

encrypted_key = response['CiphertextBlob']

Ruby

자세한 내용은 데이터 키 생성 인스턴스 메서드 Ruby용 AWS SDK.

# Generate a data key

# ## ## # ARN# ### # #### ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kmsClient.generate_data_key({ key_id: key_id, key_spec: 'AES_256'})

plaintext_key = response.plaintext

encrypted_key = response.ciphertext_blob

PHP

자세한 내용은 데이터 키 메서드 생성 에서 PHP용 AWS SDK.

// Generate a data key//// ## ## # ARN# ### # #### ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';$keySpec = 'AES_256';

223

Page 232: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드고객 마스터 키 보기

$result = $KmsClient->generateDataKey([ 'KeyId' => $keyId, 'KeySpec' => $keySpec,]);

$plaintextKey = $result['Plaintext'];

$encryptedKey = $result['CiphertextBlob'];

Node.js

자세한 내용은 데이터 키 속성 생성 에서 AWS SDK for JavaScript in Node.js.

// Generate a data key//// ## ## # ARN# ### # #### ####.const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';const KeySpec = 'AES_256';kmsClient.generateDataKey({ KeyId, KeySpec }, (err, data) => { if (err) console.log(err, err.stack); else { const { CiphertextBlob, Plaintext } = data; ... }});

PowerShell

대칭 데이터 키를 생성하려면 New-KMSDataKey cmdlet를 사용합니다.

출력에서 (Plaintext 속성의) 일반 텍스트 키와 (CiphertextBlob 속성의) 암호화된 키는MemoryStream 객체입니다. 문자열로 변환하려면 MemoryStream 클래스, cmdlet 또는 변환하는 기능MemoryStream 객체를 문자열(예: 메모리에서 변환스트림 및 변환 시작-기본64 기능 변환 모듈.

# Generate a data key

# ## ## # ARN# ### # #### ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'$keySpec = 'AES_256'

$response = New-KmsDataKey -KeyId $keyId -KeySpec $keySpec$plaintextKey = $response.Plaintext$encryptedKey = $response.CiphertextBlob

AWS KMS PowerShell cmdlet을 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치합니다.자세한 내용은 Windows PowerShell용 AWS 도구 사용 설명서를 참조하세요.

고객 마스터 키 보기에 대한 자세한 정보를 보려면 고객 마스터 키 (CMK), 포함 CMK ARN 및 키 상태 (p. 175), 사용 키 설명 작업.

DescribeKey는 별칭을 가져오지 않습니다. 별칭을 가져오려면 ListAliases 작업을 사용합니다. 예제는 별칭으로 작업 (p. 231)을 참조하십시오.

클라이언트 객체가 필요한 언어의 경우 이러한 예제에서는 클라이언트 만들기 (p. 219)에서 생성한 AWSKMS 클라이언트 객체를 사용합니다.

224

Page 233: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드고객 마스터 키 보기

보기에 대한 도움말 CMKs 에서 AWS KMS 콘솔, 참조 키 보기 (p. 27).

Java

자세한 내용은 주요 방법 설명 에서 AWS SDK for Java API Reference.

// Describe a CMK//// ## ## # ARN# ### # #### ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

DescribeKeyRequest req = new DescribeKeyRequest().withKeyId(keyId);DescribeKeyResult result = kmsClient.describeKey(req);

C#

자세한 내용은 주요 방법 설명 에서 .NET용 AWS SDK.

// Describe a CMK//// ## ## # ARN# ### # #### ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

DescribeKeyRequest describeKeyRequest = new DescribeKeyRequest(){ KeyId = keyId};

DescribeKeyResponse describeKeyResponse = kmsClient.DescribeKey(describeKeyRequest);

Python

자세한 내용은 Python용 AWS SDK(Boto3)의 describe_key 메서드를 참조하십시오.

# Describe a CMK

# ## ## # ARN# ### # #### ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kms_client.describe_key( KeyId=key_id)

Ruby

자세한 내용은 설명_키 인스턴스 메서드 Ruby용 AWS SDK.

# Describe a CMK

# ## ## # ARN# ### # #### ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kmsClient.describe_key({ key_id: key_id})

PHP

자세한 내용은 주요 방법 설명 에서 PHP용 AWS SDK.

225

Page 234: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 ID 및 ARN 가져오기

// Describe a CMK//// ## ## # ARN# ### # #### ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

$result = $KmsClient->describeKey([ 'KeyId' => $keyId, ]);

Node.js

자세한 내용은 주요 속성 설명 에서 AWS SDK for JavaScript in Node.js.

// Describe a CMK//// ## ## # ARN# ### # #### ####.const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';kmsClient.describeKey({ KeyId }, (err, data) => { ...});

PowerShell

에 대한 자세한 정보를 보려면 CMK, 사용 Get-Kms키 cm들렛.

# Describe a CMK

# ## ## # ARN# ### # #### ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'Get-KmsKey -KeyId $keyId

AWS KMS PowerShell cmdlet을 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치합니다.자세한 내용은 Windows PowerShell용 AWS 도구 사용 설명서를 참조하세요.

주요 ID 및 주요 ARN 가져오기 CMKs을(를) 받으려면 키 ID (p. 12) 및 주요 ARN (p. 12) 의 고객 마스터 키, 사용 목록키 작업. 이 예제에서는Limit 매개 변수 - 최대 수를 설정합니다. CMKs 이(가) 각 통화에서 반환되었습니다. 다음을 식별하는 데 도움이 필요한 경우 CMK 에서 AWS KMS 작업, 참조 키 식별자(KeyId) (p. 12).

클라이언트 객체가 필요한 언어의 경우 이러한 예제에서는 클라이언트 만들기 (p. 219)에서 생성한 AWSKMS 클라이언트 객체를 사용합니다.

AWS KMS 콘솔에서 키 ID 및 키 ARN을 찾는 방법에 대한 도움말은 키 ID 및 ARN 찾기 (p. 37) 단원을 참조하십시오.

Java

자세한 내용은 list키 메서드 에서 AWS SDK for Java API Reference.

// List CMKs in this account//Integer limit = 10;

ListKeysRequest req = new ListKeysRequest().withLimit(limit);ListKeysResult result = kmsClient.listKeys(req);

226

Page 235: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 ID 및 ARN 가져오기

C#

자세한 내용은 목록키 방법 에서 .NET용 AWS SDK.

// List CMKs in this account//int limit = 10;

ListKeysRequest listKeysRequest = new ListKeysRequest(){ Limit = limit};ListKeysResponse listKeysResponse = kmsClient.ListKeys(listKeysRequest);

Python

자세한 내용은 Python용 AWS SDK(Boto3)의 list_keys 메서드를 참조하십시오.

# List CMKs in this account

response = kms_client.list_keys( Limit=10)

Ruby

자세한 내용은 목록_키 인스턴스 메서드 Ruby용 AWS SDK.

# List CMKS in this account

response = kmsClient.list_keys({ limit: 10})

PHP

자세한 내용은 목록키 방법 에서 PHP용 AWS SDK.

// List CMKs in this account//$limit = 10;

$result = $KmsClient->listKeys([ 'Limit' => $limit,]);

Node.js

자세한 내용은 목록 키 속성 에서 AWS SDK for JavaScript in Node.js.

// List CMKs in this account//const Limit = 10;kmsClient.listKeys({ Limit }, (err, data) => { ...});

PowerShell

주요 ID와 주요 ARN을 얻으려면 CMKs 계정 및 지역에서 Get-Kms키 목록 cm들렛.

227

Page 236: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드고객 마스터 키 활성화

출력 객체의 수를 제한하기 위해 이 예제에서는 목록 cmdlet에서 사용되지 않는 Limit 파라미터 대신 Select-Object cmdlet을 사용합니다. PowerShell용 AWS 도구의 출력 페이지 매김에 대한 도움말은PowerShell용 AWS 도구를 사용하여 출력 페이지 매김을 참조하십시오.

# List CMKs in this account

$limit = 10Get-KmsKeyList | Select-Object -First $limit

AWS KMS PowerShell cmdlet을 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치합니다.자세한 내용은 Windows PowerShell용 AWS 도구 사용 설명서를 참조하세요.

고객 마스터 키 활성화비활성화된 고객 마스터 키 (CMK), 사용 키 활성화 작업.

클라이언트 객체가 필요한 언어의 경우 이러한 예제에서는 클라이언트 만들기 (p. 219)에서 생성한 AWSKMS 클라이언트 객체를 사용합니다.

활성화 및 비활성화에 대한 도움말 CMKs 에서 AWS KMS 콘솔, 참조 키 활성화 및 비활성화 (p. 47).

Java

Java 구현에 대한 자세한 내용은 활성화키 방법 에서 AWS SDK for Java API Reference.

// Enable a CMK//// ## ## # ARN# ### # ID ## # ARN## ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

EnableKeyRequest req = new EnableKeyRequest().withKeyId(keyId);kmsClient.enableKey(req);

C#

자세한 내용은 키 사용 방법 에서 .NET용 AWS SDK.

// Enable a CMK//// ## ## # ARN# ### # ID ## # ARN## ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

EnableKeyRequest enableKeyRequest = new EnableKeyRequest(){ KeyId = keyId};kmsClient.EnableKey(enableKeyRequest);

Python

자세한 내용은 Python용 AWS SDK(Boto3)의 enable_key 메서드를 참조하십시오.

# Enable a CMK

# ## ## # ARN# ### # ID ## # ARN## ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

228

Page 237: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드고객 마스터 키 비활성화

response = kms_client.enable_key( KeyId=key_id)

Ruby

자세한 내용은 활성화_키 인스턴스 메서드 Ruby용 AWS SDK.

# Enable a CMK

# ## ## # ARN# ### # ID ## # ARN## ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kmsClient.enable_key({ key_id: key_id})

PHP

자세한 내용은 키 사용 방법 에서 PHP용 AWS SDK.

// Enable a CMK//// ## ## # ARN# ### # ID ## # ARN## ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

$result = $KmsClient->enableKey([ 'KeyId' => $keyId, ]);

Node.js

자세한 내용은 키 속성 활성화 에서 AWS SDK for JavaScript in Node.js.

// Enable a CMK//// ## ## # ARN# ### # ID ## # ARN## ####.const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';kmsClient.enableKey({ KeyId }, (err, data) => { ...});

PowerShell

을(를) 활성화하려면 CMK, 사용 활성화-Kms키 cm들렛.

# Enable a CMK

# ## ## # ARN# ### # ID ## # ARN## ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'Enable-KmsKey -KeyId $keyId

AWS KMS PowerShell cmdlet을 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치합니다.자세한 내용은 Windows PowerShell용 AWS 도구 사용 설명서를 참조하세요.

고객 마스터 키 비활성화을(를) 비활성화하려면 CMK, 사용 키 비활성화 작업. 비활성화 CMK 사용 금지 암호화 작업 (p. 11).

229

Page 238: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드고객 마스터 키 비활성화

클라이언트 객체가 필요한 언어의 경우 이러한 예제에서는 클라이언트 만들기 (p. 219)에서 생성한 AWSKMS 클라이언트 객체를 사용합니다.

활성화 및 비활성화에 대한 도움말 CMKs 에서 AWS KMS 콘솔, 참조 키 활성화 및 비활성화 (p. 47).

Java

자세한 내용은 비활성화키 방법 에서 AWS SDK for Java API Reference.

// Disable a CMK//// ## ## # ARN# ### # ID ## # ARN## ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

DisableKeyRequest req = new DisableKeyRequest().withKeyId(keyId);kmsClient.disableKey(req);

C#

자세한 내용은 비활성화키 방법 에서 .NET용 AWS SDK.

// Disable a CMK//// ## ## # ARN# ### # ID ## # ARN## ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

DisableKeyRequest disableKeyRequest = new DisableKeyRequest(){ KeyId = keyId};kmsClient.DisableKey(disableKeyRequest);

Python

자세한 내용은 Python용 AWS SDK(Boto3)의 disable_key 메서드를 참조하십시오.

# Disable a CMK

# ## ## # ARN# ### # ID ## # ARN## ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kms_client.disable_key( KeyId=key_id)

Ruby

자세한 내용은 비활성화_키 인스턴스 메서드 Ruby용 AWS SDK.

# Disable a CMK

# ## ## # ARN# ### # ID ## # ARN## ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kmsClient.disable_key({ key_id: key_id})

230

Page 239: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드별칭으로 작업

PHP

자세한 내용은 비활성화키 방법 에서 PHP용 AWS SDK.

// Disable a CMK//// ## ## # ARN# ### # ID ## # ARN## ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

$result = $KmsClient->disableKey([ 'KeyId' => $keyId, ]);

Node.js

자세한 내용은 키 속성 비활성화 에서 AWS SDK for JavaScript in Node.js.

// Disable a CMK//// ## ## # ARN# ### # ID ## # ARN## ####.const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';kmsClient.disableKey({ KeyId }, (err, data) => { ...});

PowerShell

을(를) 비활성화하려면 CMK, 사용 비활성화-Kms키 cm들렛.

# Disable a CMK

# ## ## # ARN# ### # ID ## # ARN## ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'Disable-KmsKey -KeyId $keyId

AWS KMS PowerShell cmdlet을 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치합니다.자세한 내용은 Windows PowerShell용 AWS 도구 사용 설명서를 참조하세요.

별칭으로 작업이 주제의 예제들은 AWS KMS API를 사용하여 별칭을 생성, 확인, 업데이트 및 삭제합니다. 별칭에 대한 자세한 내용은 를 참조하십시오. the section called “별칭 사용” (p. 50).

주제• 별칭 생성 (p. 231)• 별칭 나열 (p. 233)• 별칭 업데이트 (p. 237)• 별칭 삭제 (p. 239)

별칭 생성에서 고객 마스터 키(CMK)를 만들 때 AWS Management 콘솔, 별칭을 만들어야 합니다. 그러나, 키 생성CMK를 만드는 작업은 별칭을 만들지 않습니다.

231

Page 240: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드별칭 생성

별칭을 생성하려면 CreateAlias 작업을 사용합니다. 별칭은 계정 및 리전 내에서 고유해야 합니다. 다음으로시작하는 별칭은 작성할 수 없습니다. aws/. 더 aws/ 접두어는 Amazon Web Services 에 대해 AWS 관리CMK (p. 3).

클라이언트 객체가 필요한 언어의 경우 이러한 예제에서는 클라이언트 만들기 (p. 219)에서 생성한 AWSKMS 클라이언트 객체를 사용합니다.

Java

자세한 내용은 별칭 생성 방법 에서 AWS SDK for Java API Reference.

// Create an alias for a CMK//String aliasName = "alias/projectKey1";// ## ## # ARN# ### # ID ## # ARN## ####.String targetKeyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

CreateAliasRequest req = new CreateAliasRequest().withAliasName(aliasName).withTargetKeyId(targetKeyId);kmsClient.createAlias(req);

C#

자세한 내용은 별칭 생성 방법 에서 .NET용 AWS SDK.

// Create an alias for a CMK//String aliasName = "alias/projectKey1";// ## ## # ARN# ### # ID ## # ARN## ####.String targetKeyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

CreateAliasRequest createAliasRequest = new CreateAliasRequest(){ AliasName = aliasName, TargetKeyId = targetKeyId};kmsClient.CreateAlias(createAliasRequest);

Python

자세한 내용은 Python용 AWS SDK(Boto3)의 create_alias 메서드를 참조하십시오.

# Create an alias for a CMK

alias_name = 'alias/projectKey1'# ## ## # ARN# ### # ID ## # ARN## ####.target_key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kms_client.create_alias( AliasName=alias_name, TargetKeyId=key_id)

Ruby

자세한 내용은 별칭_생성 인스턴스 메서드 Ruby용 AWS SDK.

# Create an alias for a CMK

232

Page 241: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드별칭 나열

alias_name = 'alias/projectKey1'# ## ## # ARN# ### # ID ## # ARN## ####.target_key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kmsClient.create_alias({ alias_name: alias_name, target_key_id: target_key_id})

PHP

자세한 내용은 별칭 생성 방법 에서 PHP용 AWS SDK.

// Create an alias for a CMK//$aliasName = "alias/projectKey1";// ## ## # ARN# ### # ID ## # ARN## ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

$result = $KmsClient->createAlias([ 'AliasName' => $aliasName, 'TargetKeyId' => $keyId, ]);

Node.js

자세한 내용은 별칭 속성 생성 에서 AWS SDK for JavaScript in Node.js.

// Create an alias for a CMK//const AliasName = 'alias/projectKey1';

// ## ## # ARN# ### # ID ## # ARN## ####.const TargetKeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';kmsClient.createAlias({ AliasName, TargetKeyId }, (err, data) => { ...});

PowerShell

별칭을 만들려면 New-KMSAlias cmdlet를 사용합니다. 별칭 이름은 대/소문자를 구분합니다.

# Create an alias for a CMK

$aliasName = 'alias/projectKey1'# ## ## # ARN# ### # ID ## # ARN## ####.$targetKeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

New-KMSAlias -TargetKeyId $targetKeyId -AliasName $aliasName

AWS KMS PowerShell cmdlet을 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치합니다.자세한 내용은 Windows PowerShell용 AWS 도구 사용 설명서를 참조하세요.

별칭 나열계정 및 리전의 별칭을 나열하려면 ListAliases 작업을 사용합니다.

233

Page 242: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드별칭 나열

기본적으로 ListAliases 명령은 계정 및 리전의 별칭을 모두 반환합니다. 여기에는 사용자가 만들고 에 연결된 별칭이 포함됩니다. 고객 관리 CMKs (p. 3)AWS가 생성하고 사용자 이름과 연결된 별칭을 AWS 관리CMKs (p. 3). 응답에는 TargetKeyId 필드가 없는 별칭도 포함될 수 있습니다. AWS가 생성했지만 아직 연결되지 않은 미리 정의된 별칭입니다. CMK.

클라이언트 객체가 필요한 언어의 경우 이러한 예제에서는 클라이언트 만들기 (p. 219)에서 생성한 AWSKMS 클라이언트 객체를 사용합니다.

Java

Java 구현에 대한 자세한 내용은 목록별칭 방법 에서 AWS SDK for Java API Reference.

// List the aliases in this AWS account//Integer limit = 10;

ListAliasesRequest req = new ListAliasesRequest().withLimit(limit);ListAliasesResult result = kmsClient.listAliases(req);

C#

자세한 내용은 별칭 나열 방법 에서 .NET용 AWS SDK.

// List the aliases in this AWS account//int limit = 10;

ListAliasesRequest listAliasesRequest = new ListAliasesRequest(){ Limit = limit};ListAliasesResponse listAliasesResponse = kmsClient.ListAliases(listAliasesRequest);

Python

자세한 내용은 Python용 AWS SDK(Boto3)의 list_aliases 메서드를 참조하십시오.

# List the aliases in this AWS account

response = kms_client.list_aliases( Limit=10)

Ruby

자세한 내용은 목록_별칭 인스턴스 메서드 Ruby용 AWS SDK.

# List the aliases in this AWS account

response = kmsClient.list_aliases({ limit: 10})

PHP

자세한 내용은 별칭 나열 방법 에서 PHP용 AWS SDK.

// List the aliases in this AWS account//$limit = 10;

234

Page 243: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드별칭 나열

$result = $KmsClient->listAliases([ 'Limit' => $limit,]);

Node.js

자세한 내용은 별칭 나열 속성 에서 AWS SDK for JavaScript in Node.js.

// List the aliases in this AWS account//const Limit = 10;kmsClient.listAliases({ Limit }, (err, data) => { ...});

PowerShell

계정 및 지역의 별칭을 나열하려면 Get-KMSAliasList cmdlet를 사용합니다.

출력 객체의 수를 제한하기 위해 이 예제에서는 목록 cmdlet에서 사용되지 않는 Limit 파라미터 대신 Select-Object cmdlet을 사용합니다. PowerShell용 AWS 도구의 출력 페이지 매김에 대한 도움말은PowerShell용 AWS 도구를 사용하여 출력 페이지 매김을 참조하십시오.

# List the aliases in this AWS account$limit = 10

$result = Get-KMSAliasList | Select-Object -First $limit

AWS KMS PowerShell cmdlet을 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치합니다.자세한 내용은 Windows PowerShell용 AWS 도구 사용 설명서를 참조하세요.

특정 에 연결된 별칭만 나열하려면 CMK, 사용 KeyId 파라미터. 그 가치는 키 ID (p. 12) 또는 키 ARN (p. 12)모든 CMK 지역. 별칭 이름이나 별칭 ARN을 지정할 수 없습니다.

Java

Java 구현에 대한 자세한 내용은 목록별칭 방법 에서 AWS SDK for Java API Reference.

// List the aliases for one CMK//// ## ## # ARN# ### # ID ## # ARN## ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

ListAliasesRequest req = new ListAliasesRequest().withKeyId(keyId);ListAliasesResult result = kmsClient.listAliases(req);

C#

자세한 내용은 별칭 나열 방법 에서 .NET용 AWS SDK.

// List the aliases for one CMK//// ## ## # ARN# ### # ID ## # ARN## ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

ListAliasesRequest listAliasesRequest = new ListAliasesRequest()

235

Page 244: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드별칭 나열

{ KeyId = keyId};ListAliasesResponse listAliasesResponse = kmsClient.ListAliases(listAliasesRequest);

Python

자세한 내용은 Python용 AWS SDK(Boto3)의 list_aliases 메서드를 참조하십시오.

# List the aliases for one CMK

# ## ## # ARN# ### # ID ## # ARN## ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kms_client.list_aliases( KeyId=key_id)

Ruby

자세한 내용은 목록_별칭 인스턴스 메서드 Ruby용 AWS SDK.

# List the aliases for one CMK

# ## ## # ARN# ### # ID ## # ARN## ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kmsClient.list_aliases({ key_id: key_id})

PHP

자세한 내용은 별칭 나열 방법 에서 PHP용 AWS SDK.

// List the aliases for one CMK//// ## ## # ARN# ### # ID ## # ARN## ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

$result = $KmsClient->listAliases([ 'KeyId' => $keyId,]);

Node.js

자세한 내용은 별칭 나열 속성 에서 AWS SDK for JavaScript in Node.js.

// List the aliases for one CMK//// ## ## # ARN# ### # ID ## # ARN## ####.const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';kmsClient.listAliases({ KeyId }, (err, data) => { ...});

PowerShell

에 대한 별칭을 나열하려면 CMK, 사용 KeyId 매개변수 KMS알리아목록 가져오기 cm들렛.

236

Page 245: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드별칭 업데이트

# List the aliases for one CMK

# ## ## # ARN# ### # ID ## # ARN## ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

$response = Get-KmsAliasList -KeyId $keyId

AWS KMS PowerShell cmdlet을 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치합니다.자세한 내용은 Windows PowerShell용 AWS 도구 사용 설명서를 참조하세요.

별칭 업데이트기존 별칭을 다른 별칭과 연결하려면 CMK, 사용 별칭업데이트 작업.

클라이언트 객체가 필요한 언어의 경우 이러한 예제에서는 클라이언트 만들기 (p. 219)에서 생성한 AWSKMS 클라이언트 객체를 사용합니다.

Java

Java 구현에 대한 자세한 내용은 업데이트별칭 방법 에서 AWS SDK for Java API Reference.

// Updating an alias//String aliasName = "alias/projectKey1";// ## ## # ARN# ### # ID ## # ARN## ####.String targetKeyId = "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321";

UpdateAliasRequest req = new UpdateAliasRequest() .withAliasName(aliasName) .withTargetKeyId(targetKeyId); kmsClient.updateAlias(req);

C#

자세한 내용은 별칭 업데이트 방법 에서 .NET용 AWS SDK.

// Updating an alias//String aliasName = "alias/projectKey1";// ## ## # ARN# ### # ID ## # ARN## ####.String targetKeyId = "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321";

UpdateAliasRequest updateAliasRequest = new UpdateAliasRequest(){ AliasName = aliasName, TargetKeyId = targetKeyId};

kmsClient.UpdateAlias(updateAliasRequest);

Python

자세한 내용은 Python용 AWS SDK(Boto3)의 update_alias 메서드를 참조하십시오.

# Updating an alias

237

Page 246: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드별칭 업데이트

alias_name = 'alias/projectKey1'# ## ## # ARN# ### # ID ## # ARN## ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321'

response = kms_client.update_alias( AliasName=alias_name, TargetKeyID=key_id)

Ruby

자세한 내용은 별칭 업데이트 인스턴스 메서드 Ruby용 AWS SDK.

# Updating an alias

alias_name = 'alias/projectKey1'# ## ## # ARN# ### # ID ## # ARN## ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321'

response = kmsClient.update_alias({ alias_name: alias_name, target_key_id: key_id})

PHP

자세한 내용은 별칭 업데이트 방법 에서 PHP용 AWS SDK.

// Updating an alias//$aliasName = "alias/projectKey1";

// ## ## # ARN# ### # ID ## # ARN## ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321';

$result = $KmsClient->updateAlias([ 'AliasName' => $aliasName, 'TargetKeyId' => $keyId, ]);

Node.js

자세한 내용은 별칭 속성 업데이트 에서 AWS SDK for JavaScript in Node.js.

// Updating an alias//const AliasName = 'alias/projectKey1'; // ## ## # ARN# ### # ID ## # ARN## ####.const TargetKeyId = 'arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321';kmsClient.updateAlias({ AliasName, TargetKeyId }, (err, data) => { ...});

PowerShell

을(를) 변경하려면 CMK 별칭과 연결된 경우 업데이트-KMSALias cm들렛. 별칭 이름은 대/소문자를 구분합니다.

Update-KMSAlias cmdlet는 출력을 반환하지 않습니다. 명령이 작동했는지 확인하려면 Get-KMSAliasList cmdlet를 사용합니다.

238

Page 247: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드별칭 삭제

# Updating an alias

$aliasName = 'alias/projectKey1'# ## ## # ARN# ### # ID ## # ARN## ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321'

Update-KMSAlias -AliasName $aliasName -TargetKeyID $keyId

AWS KMS PowerShell cmdlet을 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치합니다.자세한 내용은 Windows PowerShell용 AWS 도구 사용 설명서를 참조하세요.

별칭 삭제별칭을 삭제하려면 DeleteAlias 작업을 사용합니다. 별칭을 삭제해도 연결된 CMK.

클라이언트 객체가 필요한 언어의 경우 이러한 예제에서는 클라이언트 만들기 (p. 219)에서 생성한 AWSKMS 클라이언트 객체를 사용합니다.

Java

자세한 내용은 별칭 삭제 방법 에서 AWS SDK for Java API Reference.

// Delete an alias for a CMK//String aliasName = "alias/projectKey1";

DeleteAliasRequest req = new DeleteAliasRequest().withAliasName(aliasName);kmsClient.deleteAlias(req);

C#

자세한 내용은 별칭 메서드 삭제 에서 .NET용 AWS SDK.

// Delete an alias for a CMK//String aliasName = "alias/projectKey1";

DeleteAliasRequest deleteAliasRequest = new DeleteAliasRequest(){ AliasName = aliasName};kmsClient.DeleteAlias(deleteAliasRequest);

Python

자세한 내용은 Python용 AWS SDK(Boto3)의 delete_alias 메서드를 참조하십시오.

# Delete an alias for a CMK

alias_name = 'alias/projectKey1'

response = kms_client.delete_alias( AliasName=alias_name)

Ruby

자세한 내용은 별칭_삭제 인스턴스 메서드 Ruby용 AWS SDK.

239

Page 248: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드데이터 키 암호화 및 해독

# Delete an alias for a CMK

alias_name = 'alias/projectKey1'

response = kmsClient.delete_alias({ alias_name: alias_name})

PHP

자세한 내용은 별칭 메서드 삭제 에서 PHP용 AWS SDK.

// Delete an alias for a CMK//$aliasName = "alias/projectKey1";

$result = $KmsClient->deleteAlias([ 'AliasName' => $aliasName, ]);

Node.js

자세한 내용은 별칭 속성 삭제)의 AWS SDK for JavaScript in Node.js.

// Delete an alias for a CMK//const AliasName = 'alias/projectKey1';kmsClient.deleteAlias({ AliasName }, (err, data) => { ...});

PowerShell

별칭을 삭제하려면 Remove-KMSAlias cmdlet를 사용합니다. 별칭 이름은 대/소문자를 구분합니다.

이 cmdlet는 별칭을 영구적으로 삭제하므로 PowerShell은 명령을 확인하라는 메시지를 표시합니다.ConfirmImpact가 High이므로 ConfirmPreference를 사용하여 이 프롬프트를 숨길 수 없습니다. 확인 프롬프트를 억제해야 하는 경우, Confirm 값이 인 공통 파라미터 $false, 예: -Confirm:$false.

Remove-KMSAlias cmdlet는 출력을 반환하지 않습니다. 명령이 효과적이었는지 확인하려면 Get-KMSAliasList cmdlet를 사용합니다.

# Delete an alias for a CMK

$aliasName = 'alias/projectKey1'Remove-KMSAlias -AliasName $aliasName

AWS KMS PowerShell cmdlet을 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치합니다.자세한 내용은 Windows PowerShell용 AWS 도구 사용 설명서를 참조하세요.

데이터 키 암호화 및 해독이 주제의 예제에서는 AWS KMS API에서 암호화, 암호화 해제, 재암호화 작업을 사용합니다.

이 작업은 데이터 키 (p. 5)를 암호화하고 해독하도록 설계되었습니다. 그들은 AWS KMS 고객 마스터키 (p. 3) (CMK)에 저장되며 4KB(4096바이트) 이상의 데이터를 수용할 수 없습니다. 암호나 RSA 키 등 소량의 데이터를 암호화하는 데 사용할 수 있지만 애플리케이션 데이터를 암호화하도록 설계되지 않았습니다.

240

Page 249: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드데이터 키 암호화

애플리케이션 데이터를 암호화하려면 AWS 서비스의 서버 측 암호화 기능이나 AWS 암호화 SDK 또는Amazon S3 암호화 클라이언트 등의 클라이언트 측 암호화 라이브러리를 사용하십시오.

주제• 데이터 키 암호화 (p. 241)• 데이터 키 해독 (p. 243)• 다른 데이터 키로 데이터 키 재암호화 고객 마스터 키 (p. 246)

데이터 키 암호화암호화 작업은 데이터 키를 암호화하도록 설계되었지만 자주 사용되지 않습니다. GenerateDataKey 및GenerateDataKeyWithoutPlaintext 작업은 암호화된 데이터 키를 반환합니다. 암호화된 데이터를 다른 지역으로 이동하고 CMK 새 지역.

클라이언트 객체가 필요한 언어의 경우 이러한 예제에서는 클라이언트 만들기 (p. 219)에서 생성한 AWSKMS 클라이언트 객체를 사용합니다.

Java

자세한 내용은 AWS SDK for Java API Reference의 encrypt 메서드를 참조하십시오.

// Encrypt a data key//// ## ## # ARN# ### # #### ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";ByteBuffer plaintext = ByteBuffer.wrap(new byte[]{1,2,3,4,5,6,7,8,9,0});

EncryptRequest req = new EncryptRequest().withKeyId(keyId).withPlaintext(plaintext);ByteBuffer ciphertext = kmsClient.encrypt(req).getCiphertextBlob();

C#

자세한 내용은 암호화 방법 에서 .NET용 AWS SDK.

// Encrypt a data key//// ## ## # ARN# ### # #### ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";MemoryStream plaintext = new MemoryStream();plaintext.Write(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }, 0, 10);

EncryptRequest encryptRequest = new EncryptRequest(){ KeyId = keyId, Plaintext = plaintext};MemoryStream ciphertext = kmsClient.Encrypt(encryptRequest).CiphertextBlob;

Python

자세한 내용은 Python용 AWS SDK(Boto3)의 encrypt 메서드를 참조하십시오.

# Encrypt a data key

# ## ## # ARN# ### # #### ####.

241

Page 250: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드데이터 키 암호화

key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'plaintext = b'\x01\x02\x03\x04\x05\x06\x07\x08\x09\x00'

response = kms_client.encrypt( KeyId=key_id, Plaintext=plaintext)

ciphertext = response['CiphertextBlob']

Ruby

자세한 내용은 암호화 인스턴스 메서드 Ruby용 AWS SDK.

# Encrypt a data key

# ## ## # ARN# ### # #### ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'plaintext = "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x00"

response = kmsClient.encrypt({ key_id: key_id, plaintext: plaintext})

ciphertext = response.ciphertext_blob

PHP

자세한 내용은 암호화 방법 에서 PHP용 AWS SDK.

// Encrypt a data key//// ## ## # ARN# ### # #### ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';$message = pack('c*',1,2,3,4,5,6,7,8,9,0);

$result = $KmsClient->encrypt([ 'KeyId' => $keyId, 'Plaintext' => $message, ]);

$ciphertext = $result['CiphertextBlob'];

Node.js

세부 정보는 AWS SDK for JavaScript in Node.js의 encrypt 속성을 참조하십시오.

// Encrypt a data key//// ## ## # ARN# ### # #### ####.const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';const Plaintext = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]);kmsClient.encrypt({ KeyId, Plaintext }, (err, data) => { if (err) console.log(err, err.stack); // an error occurred else { const { CiphertextBlob } = data; ... }});

242

Page 251: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드데이터 키 해독

PowerShell

에서 데이터 키를 암호화하려면 AWS KMS CMK, 사용 호출-KMS암호화 cm들렛. 그러면 암호화 텍스트가 MemoryStream(System.IO.MemoryStream) 객체로 반환됩니다. MemoryStream 객체를 Invoke-KMSDecrypt cmdlet에 대한 입력으로 사용할 수 있습니다.

또한 AWS KMS는 데이터 키를 MemoryStream 객체로 반환합니다. 이 예제에서는 일반 텍스트 데이터키를 시뮬레이션하기 위해 바이트 배열을 만들어 MemoryStream 객체에 씁니다.

Invoke-KMSEncrypt의 Plaintext 파라미터는 바이트 배열(byte[])을 사용하며 MemoryStream객체가 필요하지 않습니다. AWSPowerShell 버전 4.0부터 바이트 배열 및 MemoryStream 객체를 사용하는 모든 AWSPowerShell 모듈의 파라미터는 바이트 배열, MemoryStream 객체, 문자열, 문자열 배열, FileInfo(System.IO.FileInfo) 객체를 허용합니다. 이러한 유형 중 하나를 Invoke-KMSEncrypt에전달할 수 있습니다.

# Encrypt a data key

# ## ## # ARN# ### # #### ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

# Simulate a data key # Create a byte array[byte[]] $bytes = 1, 2, 3, 4, 5, 6, 7, 8, 9, 0

# Create a MemoryStream $plaintext = [System.IO.MemoryStream]::new()

# Add the byte array to the MemoryStream$plaintext.Write($bytes, 0, $bytes.length)

# Encrypt the simulated data key$response = Invoke-KMSEncrypt -KeyId $keyId -Plaintext $plaintext

# Get the ciphertext from the response$ciphertext = $response.CiphertextBlob

AWS KMS PowerShell cmdlet을 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치합니다.자세한 내용은 Windows PowerShell용 AWS 도구 사용 설명서를 참조하세요.

데이터 키 해독데이터 키를 해독하려면 Decrypt 작업을 사용합니다.

지정하는 ciphertextBlob은 GenerateDataKey, GenerateDataKeyWithoutPlaintext 또는 Encrypt 응답의CiphertextBlob 필드의 값이거나, GenerateDataKeyPair 또는 GenerateDataKeyPairWithoutPlaintext 응답의 PrivateKeyCiphertextBlob 필드의 값이어야 합니다. 또한 Decrypt 운영하여 외부로 암호화된데이터를 해독합니다. AWS KMS 비대칭 키의 공개 키에 의해 CMK.

더 KeyId 대칭으로 복호화할 때는 매개변수가 필요하지 않습니다. CMKs. AWS KMS 더 나은 서비스를CMK 암호 텍스트 의 메타데이터에서 데이터를 암호화하는 데 사용되었습니다. 그러나 항상 CMK 을(를) 사용 중입니다. 이 방법을 사용하면 의도한 CMK를 사용할 수 있으며, 신뢰할 수 없는 CMK를 사용하여 암호 텍스트를 실수로 해독하는 것을 방지할 수 있습니다.

클라이언트 객체가 필요한 언어의 경우 이러한 예제에서는 클라이언트 만들기 (p. 219)에서 생성한 AWSKMS 클라이언트 객체를 사용합니다.

Java

자세한 내용은 AWS SDK for Java API Reference의 decrypt 메서드를 참조하십시오.

243

Page 252: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드데이터 키 해독

// Decrypt a data key//// ## ## # ARN# ### # #### ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

ByteBuffer ciphertextBlob = Place your ciphertext here;

DecryptRequest req = new DecryptRequest().withCiphertextBlob(ciphertextBlob).withKeyId(keyId);ByteBuffer plainText = kmsClient.decrypt(req).getPlaintext();

C#

자세한 내용은 암호 해독 방법 에서 .NET용 AWS SDK.

// Decrypt a data key//// ## ## # ARN# ### # #### ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

MemoryStream ciphertextBlob = new MemoryStream();// Write ciphertext to memory stream

DecryptRequest decryptRequest = new DecryptRequest(){ CiphertextBlob = ciphertextBlob, KeyId = keyId};MemoryStream plainText = kmsClient.Decrypt(decryptRequest).Plaintext;

Python

자세한 내용은 Python용 AWS SDK(Boto3)의 decrypt 메서드를 참조하십시오.

# Decrypt a data key

# ## ## # ARN# ### # #### ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'ciphertext = 'Place your ciphertext here'

response = kms_client.decrypt( CiphertextBlob=ciphertext, KeyId=key_id)

plaintext = response['Plaintext']

Ruby

자세한 내용은 암호 해독 인스턴스 메서드 Ruby용 AWS SDK.

# Decrypt a data key

# ## ## # ARN# ### # #### ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

ciphertext = 'Place your ciphertext here'ciphertext_packed = [ciphertext].pack("H*")

response = kmsClient.decrypt({

244

Page 253: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드데이터 키 해독

ciphertext_blob: ciphertext_packed, key_id: key_id})

plaintext = response.plaintext

PHP

자세한 내용은 암호 해독 방법 에서 PHP용 AWS SDK.

// Decrypt a data key//// ## ## # ARN# ### # #### ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';$ciphertext = 'Place your cipher text blob here';

$result = $KmsClient->decrypt([ 'CiphertextBlob' => $ciphertext, 'KeyId' => $keyId,]);

$plaintext = $result['Plaintext'];

Node.js

자세한 내용은 속성 암호 해독 에서 AWS SDK for JavaScript in Node.js.

// Decrypt a data key//// ## ## # ARN# ### # #### ####.const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';const CiphertextBlob = 'Place your cipher text blob here';kmsClient.decrypt({ CiphertextBlob, KeyId }, (err, data) => { if (err) console.log(err, err.stack); // an error occurred else { const { Plaintext } = data; ... }});

PowerShell

데이터 키의 암호화를 해제하려면 Invoke-KMSEncrypt cmdlet를 사용합니다.

이 cmdlet는 일반 텍스트를 MemoryStream(System.IO.MemoryStream) 객체로 반환합니다. 이를 바이트 배열로 변환하려면 MemoryStream 객체를 바이트 배열로 변환하는 cmdlet 또는 함수(예: Convert 모듈의 함수)를 사용합니다.

이 예제에서는 AWS KMS 암호화 cmdlet가 반환한 암호화 텍스트를 사용하기 때문에CiphertextBlob 파라미터 값에 MemoryStream 객체를 사용합니다. 그러나 Invoke-KMSDecrypt의 CiphertextBlob 파라미터는 바이트 배열(byte[])을 사용하며 MemoryStream 객체가 필요하지 않습니다. AWSPowerShell 버전 4.0부터 바이트 배열 및 MemoryStream 객체를 사용하는 모든 AWSPowerShell 모듈의 파라미터는 바이트 배열, MemoryStream 객체, 문자열, 문자열 배열,FileInfo(System.IO.FileInfo) 객체를 허용합니다. 이러한 유형 중 하나를 Invoke-KMSDecrypt에 전달할 수 있습니다.

# Decrypt a data key# ## ## # ARN# ### # #### ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' [System.IO.MemoryStream]$ciphertext = Read-Host 'Place your cipher text blob here'

245

Page 254: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드다른 데이터 키로 데이터 키 재암호화 고객 마스터 키

$response = Invoke-KMSDecrypt -CiphertextBlob $ciphertext -KeyId $keyId$plaintext = $response.Plaintext

AWS KMS PowerShell cmdlet을 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치합니다.자세한 내용은 Windows PowerShell용 AWS 도구 사용 설명서를 참조하세요.

다른 데이터 키로 데이터 키 재암호화 고객 마스터 키암호화된 데이터 키를 해독한 다음 즉시 다른 고객 마스터 키 (CMK), 사용 재암호화 작업. 이러한 작업은 모두 AWS KMS 내부의 서버 측에서 수행되므로 AWS KMS 외부에 일반 텍스트를 노출해서는 안 됩니다.

지정하는 ciphertextBlob은 GenerateDataKey, GenerateDataKeyWithoutPlaintext 또는 Encrypt 응답의CiphertextBlob 필드의 값이거나, GenerateDataKeyPair 또는 GenerateDataKeyPairWithoutPlaintext 응답의 PrivateKeyCiphertextBlob 필드의 값이어야 합니다. 또한 ReEncrypt 운영하여 외부로 암호화된데이터를 재암호화합니다. AWS KMS 비대칭 키의 공개 키에 의해 CMK.

더 SourceKeyId 대칭으로 다시 암호화할 때는 매개변수가 필요하지 않습니다. CMKs. AWS KMS 더 나은서비스를 CMK 암호 텍스트 의 메타데이터에서 데이터를 암호화하는 데 사용되었습니다. 그러나 항상 CMK을(를) 사용 중입니다. 이 방법을 사용하면 의도한 CMK를 사용할 수 있으며, 신뢰할 수 없는 CMK를 사용하여 암호 텍스트를 실수로 해독하는 것을 방지할 수 있습니다.

클라이언트 객체가 필요한 언어의 경우 이러한 예제에서는 클라이언트 만들기 (p. 219)에서 생성한 AWSKMS 클라이언트 객체를 사용합니다.

Java

자세한 내용은 방법 재암호화 에서 AWS SDK for Java API Reference.

// Re-encrypt a data key

ByteBuffer sourceCiphertextBlob = Place your ciphertext here;

// ## ## # ARN# ### # #### ####.String sourceKeyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";String destinationKeyId = "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321";

ReEncryptRequest req = new ReEncryptRequest();req.setCiphertextBlob(sourceCiphertextBlob);req.setSourceKeyId(sourceKeyId);req.setDestinationKeyId(destinationKeyId);ByteBuffer destinationCipherTextBlob = kmsClient.reEncrypt(req).getCiphertextBlob();

C#

자세한 내용은 방법 재암호화 에서 .NET용 AWS SDK.

// Re-encrypt a data key

MemoryStream sourceCiphertextBlob = new MemoryStream();// Write ciphertext to memory stream

// ## ## # ARN# ### # #### ####.String sourceKeyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";String destinationKeyId = "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321";

246

Page 255: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드다른 데이터 키로 데이터 키 재암호화 고객 마스터 키

ReEncryptRequest reEncryptRequest = new ReEncryptRequest(){ CiphertextBlob = sourceCiphertextBlob, SourceKeyId = sourceKeyId, DestinationKeyId = destinationKeyId};MemoryStream destinationCipherTextBlob = kmsClient.ReEncrypt(reEncryptRequest).CiphertextBlob;

Python

자세한 내용은 Python용 AWS SDK(Boto3)의 re_encrypt 메서드를 참조하십시오.

# Re-encrypt a data keyciphertext = 'Place your ciphertext here'

# ## ## # ARN# ### # #### ####.source_key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'destination_key_id = 'arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321'

response = kms_client.re_encrypt( CiphertextBlob=ciphertext, SourceKeyId=source_key_id, DestinationKeyId=destination_key_id)

destination_ciphertext_blob = response['CiphertextBlob']

Ruby

자세한 내용은 재_암호화 인스턴스 메서드 Ruby용 AWS SDK.

# Re-encrypt a data key

ciphertext = 'Place your ciphertext here'ciphertext_packed = [ciphertext].pack("H*")

# ## ## # ARN# ### # #### ####.source_key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'destination_key_id = 'arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321'

response = kmsClient.re_encrypt({ ciphertext_blob: ciphertext_packed, source_key_id: source_key_id, destination_key_id: destination_key_id})

destination_ciphertext_blob = response.ciphertext_blob.unpack('H*')

PHP

자세한 내용은 방법 재암호화 에서 PHP용 AWS SDK.

// Re-encrypt a data key

$ciphertextBlob = 'Place your ciphertext here';

// ## ## # ARN# ### # #### ####.

247

Page 256: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 정책 작업

$sourceKeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';$destinationKeyId = 'arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321';

$result = $KmsClient->reEncrypt([ 'CiphertextBlob' => $ciphertextBlob, 'SourceKeyId' => $sourceKeyId, 'DestinationKeyId' => $destinationKeyId, ]);

Node.js

자세한 내용은 속성 다시 암호화 에서 AWS SDK for JavaScript in Node.js.

// Re-encrypt a data keyconst CiphertextBlob = 'Place your cipher text blob here';// ## ## # ARN# ### # #### ####.const SourceKeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';const DestinationKeyId = 'arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321';

kmsClient.reEncrypt({ CiphertextBlob, SourceKeyId, DestinationKeyId }, (err, data) => { ...});

PowerShell

동일하거나 다른 암호 텍스트로 암호화하려면 CMK, 사용 KMS 다시 암호화 불러오기 cm들렛.

이 예제에서는 AWS KMS 암호화 cmdlet가 반환한 암호화 텍스트를 사용하기 때문에CiphertextBlob 파라미터 값에 MemoryStream 객체를 사용합니다. 그러나 Invoke-KMSReEncrypt의 CiphertextBlob 파라미터는 바이트 배열(byte[])을 사용하며 MemoryStream객체가 필요하지 않습니다. AWSPowerShell 버전 4.0부터 바이트 배열 및 MemoryStream 객체를 사용하는 모든 AWSPowerShell 모듈의 파라미터는 바이트 배열, MemoryStream 객체, 문자열,문자열 배열, FileInfo(System.IO.FileInfo) 객체를 허용합니다. 이러한 유형 중 하나를 Invoke-KMSReEncrypt에 전달할 수 있습니다.

# Re-encrypt a data key

[System.IO.MemoryStream]$ciphertextBlob = Read-Host 'Place your cipher text blob here'

# ## ## # ARN# ### # #### ####.$sourceKeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'$destinationKeyId = 'arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321'

$response = Invoke-KMSReEncrypt -Ciphertext $ciphertextBlob -SourceKeyId $sourceKeyId -DestinationKeyId $destinationKeyId$reEncryptedCiphertext = $response.CiphertextBlob

AWS KMS PowerShell cmdlet을 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치합니다.자세한 내용은 Windows PowerShell용 AWS 도구 사용 설명서를 참조하세요.

키 정책 작업이 주제의 예제에서는 AWS KMS API를 사용하여 AWS KMS 고객 마스터 키 (CMKs).

248

Page 257: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 정책 이름 나열

주요 정책을 사용하는 방법에 대한 자세한 내용은 IAM 의 액세스 관리 권한을 부여합니다. CMKs, 참조 AWSKMS에 대한 인증 및 액세스 제어 (p. 62). JSON 정책 문서 작성 및 서식 지정에 대한 도움말은 IAM 사용 설명서의 IAM JSON 정책 참조를 참조하세요.

주제• 키 정책 이름 나열 (p. 249)• 키 정책 가져오기 (p. 250)• 키 정책 설정 (p. 252)

키 정책 이름 나열의 주요 정책 이름을 가져오려면 고객 마스터 키, 사용 목록 키 정책 작업. 현재 반환되는 유일한 키 정책 이름은 기본입니다.

클라이언트 객체가 필요한 언어의 경우 이러한 예제에서는 클라이언트 만들기 (p. 219)에서 생성한 AWSKMS 클라이언트 객체를 사용합니다.

Java

Java 구현에 대한 자세한 내용은 listKey정책 방법 에서 AWS SDK for Java API Reference.

// List key policies//// ## ## # ARN# ### # ID ## # ARN## ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

ListKeyPoliciesRequest req = new ListKeyPoliciesRequest().withKeyId(keyId);ListKeyPoliciesResult result = kmsClient.listKeyPolicies(req);

C#

자세한 내용은 목록 키 정책 방법 에서 .NET용 AWS SDK.

// List key policies//// ## ## # ARN# ### # ID ## # ARN## ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

ListKeyPoliciesRequest listKeyPoliciesRequest = new ListKeyPoliciesRequest(){ KeyId = keyId};ListKeyPoliciesResponse listKeyPoliciesResponse = kmsClient.ListKeyPolicies(listKeyPoliciesRequest);

Python

자세한 내용은 Python용 AWS SDK(Boto3)의 list_key_policies 메서드를 참조하십시오.

# List key policies

# ## ## # ARN# ### # ID ## # ARN## ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kms_client.list_key_policies( KeyId=key_id

249

Page 258: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 정책 가져오기

)

Ruby

자세한 내용은 목록_키_정책 인스턴스 메서드 Ruby용 AWS SDK.

# List key policies

# ## ## # ARN# ### # ID ## # ARN## ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kmsClient.list_key_policies({ key_id: key_id})

PHP

자세한 내용은 목록 키 정책 방법 에서 PHP용 AWS SDK.

// List key policies//// ## ## # ARN# ### # ID ## # ARN## ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

$result = $KmsClient->listKeyPolicies([ 'KeyId' => $keyId]);

Node.js

자세한 내용은 목록 키 정책 속성 에서 AWS SDK for JavaScript in Node.js.

// List key policies//// ## ## # ARN# ### # ID ## # ARN## ####.const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

kmsClient.listKeyPolicies({ KeyId }, (err, data) => { ...});

PowerShell

기본 키 정책의 이름을 나열하려면 Get-KMSKeyPolicyList cmdlet를 사용합니다.

# List key policies

# ## ## # ARN# ### # ID ## # ARN## ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'$response = Get-KMSKeyPolicyList -KeyId $keyId

AWS KMS PowerShell cmdlet을 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치합니다.자세한 내용은 Windows PowerShell용 AWS 도구 사용 설명서를 참조하세요.

키 정책 가져오기주요 정책을 고객 마스터 키, 사용 키 가져오기 정책 작업.

250

Page 259: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 정책 가져오기

GetKeyPolicy는 정책 이름을 요구합니다. 유일하게 유효한 정책 이름은 기본입니다.

클라이언트 객체가 필요한 언어의 경우 이러한 예제에서는 클라이언트 만들기 (p. 219)에서 생성한 AWSKMS 클라이언트 객체를 사용합니다.

Java

자세한 내용은 키 정책 가져오기 방법 에서 AWS SDK for Java API Reference.

// Get the policy for a CMK//// ## ## # ARN# ### # ID ## # ARN## ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";String policyName = "default";

GetKeyPolicyRequest req = new GetKeyPolicyRequest().withKeyId(keyId).withPolicyName(policyName);GetKeyPolicyResult result = kmsClient.getKeyPolicy(req);

C#

자세한 내용은 GetKey정책 방법 에서 .NET용 AWS SDK.

// Get the policy for a CMK//// ## ## # ARN# ### # ID ## # ARN## ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";String policyName = "default";

GetKeyPolicyRequest getKeyPolicyRequest = new GetKeyPolicyRequest(){ KeyId = keyId, PolicyName = policyName};GetKeyPolicyResponse getKeyPolicyResponse = kmsClient.GetKeyPolicy(getKeyPolicyRequest);

Python

자세한 내용은 Python용 AWS SDK(Boto3)의 get_key_policy 메서드를 참조하십시오.

# Get the policy for a CMK

# ## ## # ARN# ### # ID ## # ARN## ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'policy_name = 'default'

response = kms_client.get_key_policy( KeyId=key_id, PolicyName=policy_name)

Ruby

자세한 내용은 키 가져오기 정책 인스턴스 메서드 Ruby용 AWS SDK.

# Get the policy for a CMK

# ## ## # ARN# ### # ID ## # ARN## ####.

251

Page 260: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 정책 설정

key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'policy_name = 'default'

response = kmsClient.get_key_policy({ key_id: key_id, policy_name: policy_name})

PHP

자세한 내용은 GetKey정책 방법 에서 PHP용 AWS SDK.

// Get the policy for a CMK//// ## ## # ARN# ### # ID ## # ARN## ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';$policyName = "default";

$result = $KmsClient->getKeyPolicy([ 'KeyId' => $keyId, 'PolicyName' => $policyName]);

Node.js

자세한 내용은 키 정책 속성 가져오기 에서 AWS SDK for JavaScript in Node.js.

// Get the policy for a CMK//// ## ## # ARN# ### # ID ## # ARN## ####.const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';const PolicyName = 'default';kmsClient.getKeyPolicy({ KeyId, PolicyName }, (err, data) => { ...});

PowerShell

주요 정책을 CMK, 사용 Get-KMS키정책 cm들렛. 이 cmdlet는 키 정책을 Write-KMSKeyPolicy(PutKeyPolicy) 명령에서 사용할 수 있는 문자열(System.String)로 반환합니다. JSON문자열의 정책을 PSCustomObject 객체로 변환하려면 ConvertFrom-JSON cmdlet를 사용합니다.

# Get the policy for a CMK

# ## ## # ARN# ### # ID ## # ARN## ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'$policyName = 'default'

$response = Get-KMSKeyPolicy -KeyId $keyId -PolicyName $policyName

AWS KMS PowerShell cmdlet을 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치합니다.자세한 내용은 Windows PowerShell용 AWS 도구 사용 설명서를 참조하세요.

키 정책 설정의 키 정책을 만들거나 바꾸려면 CMK, 사용 풋키 정책 작업.

PutKeyPolicy는 정책 이름을 요구합니다. 유일하게 유효한 정책 이름은 기본입니다.

252

Page 261: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 정책 설정

클라이언트 객체가 필요한 언어의 경우 이러한 예제에서는 클라이언트 만들기 (p. 219)에서 생성한 AWSKMS 클라이언트 객체를 사용합니다.

Java

자세한 내용은 키 정책 방법 입력 에서 AWS SDK for Java API Reference.

// Set a key policy for a CMK//// ## ## # ARN# ### # ID ## # ARN## ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";String policyName = "default";String policy = "{" + " \"Version\": \"2012-10-17\"," + " \"Statement\": [{" + " \"Sid\": \"Allow access for ExampleUser\"," + " \"Effect\": \"Allow\"," + // ## ## ### ARN# ### ARN## ####. " \"Principal\": {\"AWS\": \"arn:aws:iam::111122223333:user/ExampleUser\"}," + " \"Action\": [" + " \"kms:Encrypt\"," + " \"kms:GenerateDataKey*\"," + " \"kms:Decrypt\"," + " \"kms:DescribeKey\"," + " \"kms:ReEncrypt*\"" + " ]," + " \"Resource\": \"*\"" + " }]" + "}"; PutKeyPolicyRequest req = new PutKeyPolicyRequest().withKeyId(keyId).withPolicy(policy).withPolicyName(policyName);kmsClient.putKeyPolicy(req);

C#

자세한 내용은 PutKeyPolicy 방법 에서 .NET용 AWS SDK.

// Set a key policy for a CMK//// ## ## # ARN# ### # ID ## # ARN## ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";String policyName = "default";String policy = "{" + " \"Version\": \"2012-10-17\"," + " \"Statement\": [{" + " \"Sid\": \"Allow access for ExampleUser\"," + " \"Effect\": \"Allow\"," + // ## ## ### ARN# ### ARN## ####. " \"Principal\": {\"AWS\": \"arn:aws:iam::111122223333:user/ExampleUser\"}," + " \"Action\": [" + " \"kms:Encrypt\"," + " \"kms:GenerateDataKey*\"," + " \"kms:Decrypt\"," + " \"kms:DescribeKey\"," + " \"kms:ReEncrypt*\"" + " ]," + " \"Resource\": \"*\"" + " }]" + "}";

253

Page 262: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 정책 설정

PutKeyPolicyRequest putKeyPolicyRequest = new PutKeyPolicyRequest(){ KeyId = keyId, Policy = policy, PolicyName = policyName};kmsClient.PutKeyPolicy(putKeyPolicyRequest);

Python

자세한 내용은 Python용 AWS SDK(Boto3)의 put_key_policy 메서드를 참조하십시오.

# Set a key policy for a CMK

# ## ## # ARN# ### # ID ## # ARN## ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'policy_name = 'default'policy = """{ "Version": "2012-10-17", "Statement": [{ "Sid": "Allow access for ExampleUser", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/ExampleUser"}, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*", "kms:Decrypt", "kms:DescribeKey", "kms:ReEncrypt*" ], "Resource": "*" }]}"""

response = kms_client.put_key_policy( KeyId=key_id, Policy=policy, PolicyName=policy_name)

Ruby

자세한 내용은 입력 키 정책 인스턴스 메서드 Ruby용 AWS SDK.

# Set a key policy for a CMK

# ## ## # ARN# ### # ID ## # ARN## ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'policy_name = 'default'policy = "{" + " \"Version\": \"2012-10-17\"," + " \"Statement\": [{" + " \"Sid\": \"Allow access for ExampleUser\"," + " \"Effect\": \"Allow\"," + # ## ## ### ARN# ### ARN## ####. " \"Principal\": {\"AWS\": \"arn:aws:iam::111122223333:user/ExampleUser\"}," + " \"Action\": [" + " \"kms:Encrypt\"," + " \"kms:GenerateDataKey*\"," + " \"kms:Decrypt\"," + " \"kms:DescribeKey\"," +

254

Page 263: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 정책 설정

" \"kms:ReEncrypt*\"" + " ]," + " \"Resource\": \"*\"" + " }]" + "}"

response = kmsClient.put_key_policy({ key_id: key_id, policy: policy, policy_name: policy_name})

PHP

자세한 내용은 PutKeyPolicy 방법 에서 PHP용 AWS SDK.

// Set a key policy for a CMK//// ## ## # ARN# ### # ID ## # ARN## ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';$policyName = "default";

$result = $KmsClient->putKeyPolicy([ 'KeyId' => $keyId, 'PolicyName' => $policyName, 'Policy' => '{ "Version": "2012-10-17", "Id": "custom-policy-2016-12-07", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/root" }, "Action": [ "kms:*" ], "Resource": "*" }, { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": [ "kms:Encrypt*", "kms:GenerateDataKey*", "kms:Decrypt*", "kms:DescribeKey*", "kms:ReEncrypt*" ], "Resource": "*" } ] } ' ]);

Node.js

자세한 내용은 키 정책 속성 입력 에서 Node.js용 AWS SDK.

// Set a key policy for a CMK//// ## ## # ARN# ### # ID ## # ARN## ####.const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';const PolicyName = 'default';const Policy = `{ "Version": "2012-10-17", "Id": "custom-policy-2016-12-07",

255

Page 264: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 정책 설정

"Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": [ "kms:Encrypt*", "kms:GenerateDataKey*", "kms:Decrypt*", "kms:DescribeKey*", "kms:ReEncrypt*" ], "Resource": "*" } ]}`; // The key policy document kmsClient.putKeyPolicy({ KeyId, Policy, PolicyName }, (err, data) => { ...});

PowerShell

의 주요 정책을 설정하려면 CMK, 사용 쓰기-KMS키정책 cm들렛. 이 cmdlet는 출력을 반환하지 않습니다. 명령이 효과적이었는지 확인하려면 Get-KMSKeyPolicy cmdlet를 사용합니다.

Policy 파라미터는 문자열을 사용합니다. 문자열을 작은따옴표로 묶어 리터럴 문자열로 만듭니다. 리터럴 문자열에서는 연속 문자나 이스케이프 문자를 사용할 필요가 없습니다.

# Set a key policy for a CMK

# ## ## # ARN# ### # ID ## # ARN## ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'$policyName = 'default'$policy = '{ "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": [

256

Page 265: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드권한 부여 작업

"kms:Encrypt*", "kms:GenerateDataKey*", "kms:Decrypt*", "kms:DescribeKey*", "kms:ReEncrypt*" ], "Resource": "*" }] }'

Write-KMSKeyPolicy -KeyId $keyId -PolicyName $policyName -Policy $policy

AWS KMS PowerShell cmdlet을 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치합니다.자세한 내용은 Windows PowerShell용 AWS 도구 사용 설명서를 참조하세요.

권한 부여 작업이 주제의 예제에서는 AWS KMS API를 사용하여 에 대한 부여를 생성, 확인, 폐기 및 취소할 수 있습니다.AWS KMS 고객 마스터 키 (CMKs). AWS KMS에서 권한 부여를 사용하는 방법에 대한 자세한 내용은 권한부여 사용 (p. 136) 단원을 참조하십시오.

주제• 권한 부여 생성 (p. 257)• 권한 부여 보기 (p. 259)• 권한 부여 사용 중지 (p. 261)• 권한 부여 취소 (p. 263)

권한 부여 생성다음에 대한 보조금을 생성하려면 AWS KMS 고객 마스터 키, 사용 생성승인 작업. 응답에는 권한 부여 ID와권한 부여 토큰만 포함됩니다. 권한 부여에 대한 자세한 내용을 보려면 권한 부여 보기 (p. 259)에 나온 대로 ListGrants 작업을 사용합니다.

이 예에서는 계정의 IAM 사용자인 Alice가 데이터 키 생성 작동 CMK 에서 식별 KeyId 파라미터.

클라이언트 객체가 필요한 언어의 경우 이러한 예제에서는 클라이언트 만들기 (p. 219)에서 생성한 AWSKMS 클라이언트 객체를 사용합니다.

Java

자세한 내용은 생성승인 방법 에서 AWS SDK for Java API Reference.

// Create a grant//// ## ## # ARN# ### # ID ## # ARN## ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";String granteePrincipal = "arn:aws:iam::111122223333:user/Alice";String operation = GrantOperation.GenerateDataKey.toString();

CreateGrantRequest request = new CreateGrantRequest() .withKeyId(keyId) .withGranteePrincipal(granteePrincipal) .withOperations(operation);

CreateGrantResult result = kmsClient.createGrant(request);

257

Page 266: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드권한 부여 생성

C#

자세한 내용은 생성승인 방법 에서 .NET용 AWS SDK.

// Create a grant//// ## ## # ARN# ### # ID ## # ARN## ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";String granteePrincipal = "arn:aws:iam::111122223333:user/Alice";String operation = GrantOperation.GenerateDataKey;

CreateGrantRequest createGrantRequest = new CreateGrantRequest(){ KeyId = keyId, GranteePrincipal = granteePrincipal, Operations = new List<string>() { operation }};

CreateGrantResponse createGrantResult = kmsClient.CreateGrant(createGrantRequest);

Python

자세한 내용은 Python용 AWS SDK(Boto3)의 create_grant 메서드를 참조하십시오.

# Create a grant

# ## ## # ARN# ### # ID ## # ARN## ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'grantee_principal = 'arn:aws:iam::111122223333:user/Alice'operation = ['GenerateDataKey']

response = kms_client.create_grant( KeyId=key_id, GranteePrincipal=grantee_principal, Operations=operation)

Ruby

자세한 내용은 부여자_생성 인스턴스 메서드 Ruby용 AWS SDK.

# Create a grant

# ## ## # ARN# ### # ID ## # ARN## ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'grantee_principal = 'arn:aws:iam::111122223333:user/Alice'operation = ['GenerateDataKey']

response = kmsClient.create_grant({ key_id: key_id, grantee_principal: grantee_principal, operations: operation})

PHP

자세한 내용은 생성승인 방법 에서 PHP용 AWS SDK.

// Create a grant//// ## ## # ARN# ### # ID ## # ARN## ####.

258

Page 267: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드권한 부여 보기

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';$granteePrincipal = "arn:aws:iam::111122223333:user/Alice";$operation = ['GenerateDataKey']

$result = $KmsClient->createGrant([ 'GranteePrincipal' => $granteePrincipal, 'KeyId' => $keyId, 'Operations' => $operation ]);

Node.js

자세한 내용은 생성승인 속성 에서 AWS SDK for JavaScript in Node.js.

// Create a grant//// ## ## # ARN# ### # ID ## # ARN## ####.const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';const GranteePrincipal = 'arn:aws:iam::111122223333:user/Alice';const Operations: ["GenerateDataKey"];kmsClient.createGrant({ KeyId, GranteePrincipal, Operations }, (err, data) => { ...});

PowerShell

권한 부여를 만들려면 New-KMSGrant cmdlet를 사용합니다.

# Create a grant # ## ## # ARN# ### # ID ## # ARN## ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'$granteePrincipal = 'arn:aws:iam::111122223333:user/Alice'$operation = 'GenerateDataKey'

$response = New-KMSGrant -GranteePrincipal $granteePrincipal -KeyId $keyId -Operation $operation

AWS KMS PowerShell cmdlet을 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치합니다.자세한 내용은 Windows PowerShell용 AWS 도구 사용 설명서를 참조하세요.

권한 부여 보기교부금에 대한 자세한 정보를 얻으려면 AWS KMS 고객 마스터 키, 사용 목록승인 작업. 이 예제에서는 선택적 Limits 파라미터를 사용합니다. 이 파라미터는 작업이 반환하는 권한 부여의 수를 결정합니다.

Note

ListGrants 응답의 GranteePrincipal 필드에는 일반적으로 권한 부여의 피부여자보안 주체가 포함됩니다. 그러나 권한 부여의 피부여자 보안 주체가 AWS 서비스인 경우GranteePrincipal 필드에는 서비스 보안 주체(여러 피부여자 보안 주체가 될 수 있음)가 포함됩니다.

클라이언트 객체가 필요한 언어의 경우 이러한 예제에서는 클라이언트 만들기 (p. 219)에서 생성한 AWSKMS 클라이언트 객체를 사용합니다.

Java

Java 구현에 대한 자세한 내용은 목록승인 방법 에서 AWS SDK for Java API Reference.

259

Page 268: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드권한 부여 보기

// Listing grants on a CMK//// ## ## # ARN# ### # ID ## # ARN## ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";Integer limit = 10;

ListGrantsRequest req = new ListGrantsRequest().withKeyId(keyId).withLimit(limit);ListGrantsResult result = kmsClient.listGrants(req);

C#

자세한 내용은 목록승인 방법 에서 .NET용 AWS SDK.

// Listing grants on a CMK//// ## ## # ARN# ### # ID ## # ARN## ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";int limit = 10;

ListGrantsRequest listGrantsRequest = new ListGrantsRequest(){ KeyId = keyId, Limit = limit};ListGrantsResponse listGrantsResponse = kmsClient.ListGrants(listGrantsRequest);

Python

자세한 내용은 Python용 AWS SDK(Boto3)의 list_grants 메서드를 참조하십시오.

# Listing grants on a CMK

# ## ## # ARN# ### # ID ## # ARN## ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kms_client.list_grants( KeyId=key_id, Limit=10)

Ruby

자세한 내용은 보조금_목록 인스턴스 메서드 Ruby용 AWS SDK.

# Listing grants on a CMK

# ## ## # ARN# ### # ID ## # ARN## ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kmsClient.list_grants({ key_id: key_id, limit: 10})

PHP

자세한 내용은 목록승인 방법 에서 PHP용 AWS SDK.

// Listing grants on a CMK

260

Page 269: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드권한 부여 사용 중지

//// ## ## # ARN# ### # ID ## # ARN## ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';$limit = 10;

$result = $KmsClient->listGrants([ 'KeyId' => $keyId, 'Limit' => $limit,]);

Node.js

자세한 내용은 목록 승인 속성 에서 AWS SDK for JavaScript in Node.js.

// Listing grants on a CMK//// ## ## # ARN# ### # ID ## # ARN## ####.const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';const Limit = 10;kmsClient.listGrants({ KeyId, Limit }, (err, data) => { ...});

PowerShell

모든 AWS KMS 교부금 CMK, 사용 Get-KMS승인 목록 cm들렛.

출력 객체의 수를 제한하기 위해 이 예제에서는 목록 cmdlet에서 사용되지 않는 Limit 파라미터 대신 Select-Object cmdlet을 사용합니다. PowerShell용 AWS 도구의 출력 페이지 매김에 대한 도움말은PowerShell용 AWS 도구를 사용하여 출력 페이지 매김을 참조하십시오.

# Listing grants on a CMK

# ## ## # ARN# ### # ID ## # ARN## ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'$limit = 10

$response = Get-KMSGrantList -KeyId $keyId | Select-Object -First $limit

AWS KMS PowerShell cmdlet을 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치합니다.자세한 내용은 Windows PowerShell용 AWS 도구 사용 설명서를 참조하세요.

권한 부여 사용 중지다음 기간 동안 그랜트를 은퇴시키기 위해 AWS KMS 고객 마스터 키, 사용 은퇴승인 작업. 권한 부여의 사용을 완료한 후에는 사용을 중지해야 합니다.

그랜트를 폐기하려면, 그랜트 토큰 또는 그랜트 ID와 CMK ID. 이 작업의 경우 CMK ID는 다음과 같아야 합니다. Amazon 리소스 이름(ARN) CMK (p. 37). 권한 부여 토큰은 CreateGrant 작업으로 반환됩니다. 권한 부여ID는 CreateGrant 및 ListGrants 작업으로 반환됩니다.

RetireGrant는 응답을 반환하지 않습니다. 효과적이었는지 확인하려면 ListGrants 작업을 사용합니다.

클라이언트 객체가 필요한 언어의 경우 이러한 예제에서는 클라이언트 만들기 (p. 219)에서 생성한 AWSKMS 클라이언트 객체를 사용합니다.

Java

자세한 내용은 은퇴승인 방법 에서 AWS SDK for Java API Reference.

261

Page 270: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드권한 부여 사용 중지

// Retire a grant//String grantToken = Place your grant token here;

RetireGrantRequest req = new RetireGrantRequest().withGrantToken(grantToken);kmsClient.retireGrant(req);

C#

자세한 내용은 은퇴승인 방법 에서 .NET용 AWS SDK.

// Retire a grant//String grantToken = "Place your grant token here";

RetireGrantRequest retireGrantRequest = new RetireGrantRequest(){ GrantToken = grantToken};kmsClient.RetireGrant(retireGrantRequest);

Python

자세한 내용은 Python용 AWS SDK(Boto3)의 retire_grant 메서드를 참조하십시오.

# Retire a grant

grant_token = Place your grant token here

response = kms_client.retire_grant( GrantToken=grant_token)

Ruby

자세한 내용은 은퇴_보조금 인스턴스 메서드 Ruby용 AWS SDK.

# Retire a grant

grant_token = Place your grant token here

response = kmsClient.retire_grant({ grant_token: grant_token})

PHP

자세한 내용은 은퇴승인 방법 에서 PHP용 AWS SDK.

// Retire a grant//$grantToken = 'Place your grant token here';

$result = $KmsClient->retireGrant([ 'GrantToken' => $grantToken,]);

Node.js

자세한 내용은 은퇴승인 속성 에서 AWS SDK for JavaScript in Node.js.

262

Page 271: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드권한 부여 취소

// Retire a grant//const GrantToken = 'Place your grant token here';kmsClient.retireGrant({ GrantToken }, (err, data) => { ...});

PowerShell

권한 부여의 사용을 중지하려면 사용 Disable-KMSGrant cmdlet를 사용합니다. 권한 부여 토큰을 얻으려면 New-KMSGrant cmdlet를 사용합니다. GrantToken 파라미터는 문자열을 사용하므로 Read-Hostcmdlet가 반환하는 출력을 변환할 필요가 없습니다.

# Retire a grant

$grantToken = Read-Host -Message Place your grant token hereDisable-KMSGrant -GrantToken $grantToken

AWS KMS PowerShell cmdlet을 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치합니다.자세한 내용은 Windows PowerShell용 AWS 도구 사용 설명서를 참조하세요.

권한 부여 취소승인 취소 AWS KMS 고객 마스터 키, 사용 승인 폐기 작업. 권한 부여를 취소하여 종속된 작업을 명시적으로거부할 수 있습니다.

클라이언트 객체가 필요한 언어의 경우 이러한 예제에서는 클라이언트 만들기 (p. 219)에서 생성한 AWSKMS 클라이언트 객체를 사용합니다.

Java

자세한 내용은 취소승인 방법 에서 AWS SDK for Java API Reference.

// Revoke a grant on a CMK//// ## ## # ARN# ### # ID ## # ARN## ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

// &fake-grant-id;String grantId = "grant1";

RevokeGrantRequest req = new RevokeGrantRequest().withKeyId(keyId).withGrantId(grantId);kmsClient.revokeGrant(req);

C#

자세한 내용은 해지승인 방법 에서 .NET용 AWS SDK.

// Revoke a grant on a CMK//// ## ## # ARN# ### # ID ## # ARN## ####.String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

// &fake-grant-id;String grantId = "grant1";

263

Page 272: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드권한 부여 취소

RevokeGrantRequest revokeGrantRequest = new RevokeGrantRequest(){ KeyId = keyId, GrantId = grantId};kmsClient.RevokeGrant(revokeGrantRequest);

AWS KMS PowerShell cmdlet을 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치합니다.자세한 내용은 Windows PowerShell용 AWS 도구 사용 설명서를 참조하세요.

Python

자세한 내용은 Python용 AWS SDK(Boto3)의 revoke_grant 메서드를 참조하십시오.

# Revoke a grant on a CMK

# ## ## # ARN# ### # ID ## # ARN## ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

# &fake-grant-id;grant_id = 'grant1'

response = kms_client.revoke_grant( KeyId=key_id, GrantId=grant_id)

Ruby

자세한 내용은 배정_취소 인스턴스 메서드 Ruby용 AWS SDK.

# Revoke a grant on a CMK

# ## ## # ARN# ### # ID ## # ARN## ####.key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

# &fake-grant-id;grant_id = 'grant1'

response = kmsClient.revoke_grant({ key_id: key_id, grant_id: grant_id})

PHP

자세한 내용은 해지승인 방법 에서 PHP용 AWS SDK.

// Revoke a grant on a CMK//// ## ## # ARN# ### # ID ## # ARN## ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

// ## ## ## ## ID# ### ID# ####.$grantId = "grant1";

$result = $KmsClient->revokeGrant([ 'KeyId' => $keyId, 'GrantId' => $grantId,]);

264

Page 273: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드권한 부여 취소

Node.js

자세한 내용은 속성 승인 취소 에서 AWS SDK for JavaScript in Node.js.

// Revoke a grant on a CMK//// ## ## # ARN# ### # ID ## # ARN## ####.const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

// ## ## ## ## ID# ### ID# ####.const GrantId = 'grant1';kmsClient.revokeGrant({ GrantId, KeyId }, (err, data) => { ...});

PowerShell

권한 부여를 취소하려면 Revoke-KMSGrant cmdlet를 사용합니다.

# Revoke a grant on a CMK

# ## ## # ARN# ### # ID ## # ARN## ####.$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

# ## ## ## ## ID# ### ID# ####.$grantId = 'grant1'

Revoke-KMSGrant -KeyId $keyId -GrantId $grantId

AWS KMS PowerShell cmdlet을 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치합니다.자세한 내용은 Windows PowerShell용 AWS 도구 사용 설명서를 참조하세요.

265

Page 274: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드삭제 작동 방식CMKs

고객 마스터 키 삭제(고객 마스터 키)에서 CMK(AWS Key Management Service)를 삭제하는 것은 안전하지 않으며 위험할 수 있습니다.AWS KMS 키 구성 요소와 CMK에 연결된 모든 메타데이터를 삭제하며, 되돌릴 수 없습니다. 가 삭제된 후에는 해당 CMK로 암호화된 데이터를 더 이상 해독할 수 없습니다. 즉, 데이터를 복구할 수 없게 됩니다.CMK 더 이상 사용할 필요가 없다고 확신하는 경우에만 CMK를 삭제해야 합니다. 확실하지 않은 경우 삭제하는 대신 를 비활성화CMK하는 것이 좋습니다. (p. 47) 비활성화된 CMK는 나중에 다시 사용해야 하는 경우 다시 활성화할 수 있지만 삭제된 CMK는 복구할 수 없습니다.

를 삭제하기 전에 해당 CMK로 암호화된 암호화 텍스트 수를 알고 싶을 수 있습니다. CMK는 이 정보를 저장하지 않으며 어떠한 암호화 텍스트도 저장하지 않습니다.AWS KMS 이 정보를 얻으려면 사용자가 직접CMK의 과거 사용량을 확인해야 합니다. 이때 도움이 될 만한 지침을 읽으려면 과거의 과거 사용 고객 마스터 키 (p. 274) 페이지를 방문하십시오.

AWS KMS는 명시적으로 삭제를 예약하고 필수 대기 기간이 만료되지 않는 한 CMKs를 삭제하지 않습니다.

그러나 다음 중 하나 이상의 이유로 CMK를 삭제하도록 선택할 수 있습니다.

• 더 이상 필요하지 않은 CMKs의 키 수명 주기를 완료하기 위해• 사용하지 않는 유지 관리와 관련된 관리 오버헤드 및 비용CMKs을 피하려면• 리소스 할당량CMKs에 포함되는 수를 줄이려면CMK (p. 397)

Note

계정을 닫거나 삭제하면 AWS에 액세스할 수 없으며 더 이상 비용이 청구되지 않습니다.CMKs 계정을 닫는 것과 별도로 CMKs 삭제를 예약할 필요가 없습니다.

주제• 삭제 작동 방식고객 마스터 키 (p. 266)• 키 삭제 예약 및 취소 (p. 268)• 키 삭제 예약 및 취소를 위한 권한 추가 (p. 270)• 생성 Amazon CloudWatch 알람의 사용을 고객 마스터 키 삭제 대기 중 (p. 271)• 과거의 과거 사용 고객 마스터 키 (p. 274)

삭제 작동 방식고객 마스터 키권한이 부여된 사용자는 대칭 및 비대칭 고객 마스터 키(CMKs)를 삭제할 수 있습니다. 절차는 두 유형의CMKs에 대해 동일합니다.

를 삭제하는 것은 안전하지 않으며 위험할 수 있기 때문에 CMK는 대기 기간을 적용합니다.AWS KMS 에서CMK를 삭제하려면 AWS KMS키 삭제를 예약합니다. 대기 기간을 최소 7일에서 최대 30일까지 설정할 수 있습니다. 기본 대기 기간은 30일입니다.

대기 기간 동안 CMK 상태 및 키 상태는 Pending deletion(삭제 보류 중)입니다.

• 삭제 보류 중인 CMK는 어떠한 암호화 작업 (p. 11)에도 사용할 수 없습니다.• AWS KMS는 삭제 보류 중인 의 (p. 171)백업 키를 교체CMKs하지 않습니다.

대기 기간이 종료된 후 AWS KMS는 CMK 및 이를 가리키는 모든 별칭을 포함하여 이와 연결된 모든 AWSKMS 데이터를 삭제합니다.

266

Page 275: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드비대칭 CMKs 삭제

키 삭제를 예약하면 AWS KMS가 대기 기간이 끝나는 날짜와 시간을 보고합니다. 이 날짜와 시간은 키 삭제를 예약한 시점으로부터 지정된 최소 수만큼 경과한 시점이지만 최대 24시간이 더해질 수 있습니다. 예를 들어 키 삭제를 예약하고 대기 시간을 7일로 설정한다고 해봅시다. 이 경우에는 요청한 시간으로부터 7일 이후부터 8일 이내에 대기 시간이 종료됩니다. AWS Management 콘솔, AWS CLI, 또는 AWS KMS API에서 대기기간이 끝나는 정확한 날짜와 시간을 확인합니다.

현재 또는 향후에 CMK가 필요하지 않도록 하기 위해 대기 기간을 사용합니다. 경보를 구성하여 사람이나 애플리케이션이 대기 기간 중에 Amazon CloudWatch를 사용하려고 할 때 경고할 수 있습니다. (p. 271)CMK를 복구하려면 대기 기간이 끝나기 전에 키 삭제를 취소할 수 있습니다.CMK 대기 기간이 종료된 후에는 키삭제를 취소할 수 없으며 AWS KMS는 CMK를 삭제합니다.

AWS KMS는 AWS CloudTrail의 삭제를 예약 (p. 205)할 때와 CMK가 실제로 삭제될 때 CMK 로그에 항목을기록합니다. (p. 190)

비대칭 CMKs 삭제권한이 부여된 사용자는 대칭 또는 비대칭 (p. 270)를 삭제할 수 있습니다.CMKs 이러한 CMKs의 삭제를예약하는 절차는 두 유형의 키에 대해 동일합니다. 그러나 비대칭 CMK의 퍼블릭 키를 다운로드 (p. 48)하여AWS KMS 외부에서 사용할 수 있기 때문에 이 작업은 특히 암호화에 사용되는 비대칭 CMKs의 경우(키 사용이 ENCRYPT_DECRYPT) 상당한 추가 위험을 초래합니다.

• 의 삭제를 예약하면 CMK의 키 상태가 CMKPending deletion(삭제 보류 중)으로 변경되고 를 CMK암호화작업에 사용할 수 없습니다. (p. 11) 그러나 삭제 예약은 AWS KMS 외부의 퍼블릭 키에는 영향을 미치지않습니다. 퍼블릭 키가 있는 사용자는 계속해서 해당 키를 사용하여 메시지를 암호화할 수 있습니다. 키 상태가 변경되었다는 알림은 받지 못합니다. 삭제가 취소되지 않으면 해당 퍼블릭 키로 생성된 암호화 텍스트는 해독할 수 없습니다.

• 삭제 보류 중인 CMK 사용을 시도했음을 감지하는 경보, 로그 및 기타 전략은 AWS KMS 외부에서의 퍼블릭 키 사용을 감지할 수 없습니다.

• 가 삭제되면 해당 CMK와 관련된 모든 AWS KMS 작업이 실패합니다.CMK 그러나 퍼블릭 키가 있는 사용자는 계속해서 메시지를 암호화하는 데 사용할 수 있습니다. 이러한 암호화 텍스트는 해독할 수 없습니다.

키 사용이 CMK인 비대칭 ENCRYPT_DECRYPT을 삭제해야 하는 경우 CloudTrail 로그 항목을 사용하여 퍼블릭 키가 다운로드 및 공유되었는지 확인합니다. 그러한 퍼블릭 키가 있을 경우 해당 키가 AWS KMS 외부에서 사용되지 않는지 확인합니다. 그런 다음 을 삭제하는 대신 비활성화CMK하는 것이 좋습니다. (p. 47)

삭제가 고객 마스터 키와 통합된 AWS 서비스에 미치는영향AWS KMS여러 AWS 서비스가 AWS KMS와 통합되어 데이터를 보호합니다. Amazon EBS 및 와 같은 일부 서비스는Amazon Redshift에서 고객 마스터 키( (p. 3))를 사용하여 CMK데이터 키AWS KMS를 생성한 다음 데이터 키를 사용하여 데이터를 암호화합니다.??? (p. 5) 보호하는 데이터가 현재 사용 중인 동안에는 이러한 일반 텍스트 데이터 키가 메모리에 유지됩니다.

가 삭제되도록 예약하면 사용할 수 없게 되지만 CMK 서비스가 메모리의 데이터 키를 사용하여 데이터를 암호화하고 해독하는 것은 불가능합니다.AWS 삭제 대기 중이거나 삭제된 CMK를 사용해야 할 때까지 서비스에 영향이 가지 않습니다.

예를 들어 다음 시나리오를 고려해 보십시오.

1. 암호화된 EBS 볼륨을 생성하고 CMK를 지정합니다. Amazon EBS는 AWS KMS를 사용하여 볼륨의 CMK암호화된 데이터 키를 생성하도록 에 요청합니다. Amazon EBS는 볼륨과 함께 암호화된 데이터 키를 저장합니다.

2. EBS 볼륨을 EC2 인스턴스에 연결하면 Amazon EC2가 AWS KMS를 사용하여 EBS 볼륨의 암호화된 데이터 키를 암호화 해제하도록 CMK에 요청합니다. Amazon EC2는 하이퍼바이저 메모리에 일반 텍스트

267

Page 276: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 삭제 예약 및 취소

데이터 키를 저장하고 이를 사용하여 디스크 I/O를 EBS 볼륨으로 암호화합니다. EBS 볼륨이 EC2 인스턴스에 연결되어 있는 동안에는 데이터 키가 메모리에 유지됩니다.

3. 삭제할 CMK를 예약하면 사용할 수 없게 됩니다. 이는 EC2 인스턴스 또는 EBS 볼륨에 즉각적인 영향을주지 않습니다. Amazon EC2가 —가 아닌CMK일반 텍스트 데이터 키를 사용하여 디스크 I/O를 EBS 볼륨으로 암호화하기 때문입니다.—

예약된 시간이 경과하여 AWS KMS가 CMK를 삭제하더라도 Amazon EC2는 CMK가 아닌 일반 텍스트 데이터 키를 사용하므로 EC2 인스턴스 또는 EBS 볼륨에는 즉각적인 영향이 없습니다.

4. 단, 암호화된 EBS 볼륨이 EC2 인스턴스에서 삭제되면 Amazon EBS는 일반 텍스트 키를 메모리에서 제거합니다. 다음에 암호화된 EBS 볼륨이 EC2 인스턴스에 연결될 때 Amazon EBS가 볼륨의 암호화된 데이터 키를 해독하는 데 CMK를 사용할 수 없기 때문에 연결이 실패합니다.

키 삭제 예약 및 취소다음 절차에서는 AWS Management 콘솔, AWS CLI 및 AWS SDK for Java를 사용하여 AWS KMS에서 키삭제를 예약하고 취소하는 방법에 대해 설명합니다.

Warning

에서 고객 마스터 키(CMK)을 삭제하는 것은 안전하지 않으며 위험할 수 있습니다.AWS KMS 더 이상 CMK를 사용할 필요가 없다고 확신하고 나중에 사용할 필요가 없는 경우에만 진행해야 합니다.잘 모르는 경우 삭제하는 대신 를 비활성화CMK해야 합니다. (p. 47)

를 삭제하려면 먼저 삭제할 수 있는 권한이 있어야 합니다.CMK 키 정책에만 의존하여 AWS KMS 권한을 지정하는 경우 CMK를 삭제하기 전에 권한을 추가해야 할 수 있습니다. 이러한 권한 추가에 대한 자세한 내용은 키 삭제 예약 및 취소를 위한 권한 추가 (p. 270)에서 확인하십시오.

AWS KMS는 AWS CloudTrail의 삭제를 예약 (p. 205)할 때와 CMK가 실제로 삭제될 때 CMK 로그에 항목을기록합니다. (p. 190)

키 삭제 예약 및 취소 방법• 키 삭제 예약 및 취소(console) (p. 268)• 키 삭제 예약 및 취소(AWS CLI) (p. 269)• 키 삭제 예약 및 취소(AWS SDK for Java) (p. 269)

키 삭제 예약 및 취소(console)AWS Management 콘솔에서 키 삭제를 예약하고 취소할 수 있습니다.

키 삭제를 예약하려면

1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/kms에서 AWS KeyManagement Service(AWS KMS) 콘솔을 엽니다.

2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 탐색 창에서 고객 관리형 키를 선택합니다.4. 삭제할 CMK 옆의 확인란을 선택합니다.5. Key actions(키 작업)과 Schedule key deletion(키 삭제 예약)을 차례로 선택합니다.6. 경고와 대기 기간 동안 삭제 취소에 대한 정보를 읽고 고려하십시오. 삭제를 취소하려면 취소를 선택합

니다.7. Waiting period(in days)(대기 기간(일))에 7~30 범위의 일수를 입력합니다.8. Confirm you want to schedule this key for deletion in(이 키의 삭제를 예약할 확인) 옆에 있는 확인란을

선택합니다.<number of days> 일..9. [Schedule deletion]을 선택합니다.

268

Page 277: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS CLI 사용

상태가 CMKPending deletion(삭제 보류 중)으로 변경됩니다.

키 삭제를 취소하려면

1. https://console.aws.amazon.com/kms에서 AWS KMS 콘솔을 엽니다.2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 탐색 창에서 고객 관리형 키를 선택합니다.4. 복구할 CMK 옆의 확인란을 선택합니다.5. Key actions(키 작업)과 Cancel key deletion(키 삭제 취소)을 차례로 선택합니다.

상태가 CMKPending deletion(삭제 보류 중)에서 비활성으로 변경됩니다. 를 사용하려면 CMK활성화해야 합니다. (p. 47)

키 삭제 예약 및 취소(AWS CLI)다음 예제와 같이 aws kms schedule-key-deletion 명령을 사용하여 AWS CLI에서 키 삭제를 예약할수 있습니다.

$ aws kms schedule-key-deletion --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --pending-window-in-days 10

성공적으로 사용되면 AWS CLI는 다음 예제의 출력과 비슷한 출력을 반환합니다.

{ "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "DeletionDate": 1442102400.0}

다음 예제와 같이 aws kms cancel-key-deletion 명령을 사용하여 AWS CLI에서 키 삭제를 취소할 수있습니다.

$ aws kms cancel-key-deletion --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

성공적으로 사용되면 AWS CLI는 다음 예제의 출력과 비슷한 출력을 반환합니다.

{ "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"}

의 상태가 CMKPending Deletion(삭제 보류 중)에서 비활성으로 변경됩니다. 를 사용하려면 CMK활성화해야합니다. (p. 47)

키 삭제 예약 및 취소(AWS SDK for Java)다음 예제에서는 CMK를 사용하여 삭제할 AWS SDK for Java를 예약하는 방법을 보여 줍니다. 이 예제에서는 먼저 AWSKMSClient를 kms로 인스턴스화해야 합니다.

String KeyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

int PendingWindowInDays = 10;

ScheduleKeyDeletionRequest scheduleKeyDeletionRequest =new ScheduleKeyDeletionRequest().withKeyId(KeyId).withPendingWindowInDays(PendingWindowInDays);

269

Page 278: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 삭제 예약 및 취소를 위한 권한 추가

kms.scheduleKeyDeletion(scheduleKeyDeletionRequest);

다음 예제는 AWS SDK for Java를 사용하여 키 삭제를 취소하는 방법을 보여줍니다. 이 예제에서는 먼저AWSKMSClient를 kms로 인스턴스화해야 합니다.

String KeyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

CancelKeyDeletionRequest cancelKeyDeletionRequest =new CancelKeyDeletionRequest().withKeyId(KeyId);kms.cancelKeyDeletion(cancelKeyDeletionRequest);

의 상태가 CMKPending Deletion(삭제 보류 중)에서 비활성으로 변경됩니다. 를 사용하려면 CMK활성화해야합니다. (p. 47)

키 삭제 예약 및 취소를 위한 권한 추가정책을 사용하여 IAM 권한을 허용하는 경우 AWS KMS 관리자 액세스(IAM) 또는 AWS 전체 액세스("Action": "*")가 있는 모든 AWS KMS 사용자와 역할은 이미 "Action": "kms:*" AWS KMS에 대한키 삭제를 예약하고 취소할 수 있습니다.CMKs 키 정책에만 의존하여 AWS KMS 권한을 허용하는 경우, IAM사용자 및 역할이 CMKs를 삭제하도록 허용하는 권한을 추가해야 할 수 있습니다. 이 권한을 추가하려면 다음 단계를 참조하십시오.

다음 절차는 AWS Management 콘솔 또는 AWS CLI를 사용해 키 정책에 권한을 추가하는 방법에 대해 설명합니다.

키 삭제를 예약하고 취소할 권한을 추가하는 방법• 키 삭제 예약 및 취소를 위한 권한 추가(console) (p. 270)• 키 삭제 예약 및 취소를 위한 권한 추가(AWS CLI) (p. 270)

키 삭제 예약 및 취소를 위한 권한 추가(console)AWS Management 콘솔을 이용해 키 삭제를 예약하고 취소할 권한을 추가할 수 있습니다.

1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/kms에서 AWS KeyManagement Service(AWS KMS) 콘솔을 엽니다.

2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 탐색 창에서 고객 관리형 키를 선택합니다.4. 권한을 변경할 CMK의 별칭 또는 키 ID를 선택합니다.5. Key policy(키 정책) 탭을 선택합니다. 키 삭제에서 키 관리자가 이 키를 삭제하도록 허용을 선택한 다음

변경 사항 저장을 선택합니다.Note

Allow key administrators to delete this key(키 관리자가 이 키를 삭제하도록 허용) 옵션이 표시되지 않는 경우, 보통은 AWS KMS API를 이용해 이 키 정책을 수정했다는 의미입니다.이 경우 키 정책 문서를 수동으로 업데이트해야 합니다. kms:ScheduleKeyDeletion 및kms:CancelKeyDeletion 권한을 키 정책의 키 관리자 문("Sid": "Allow access forKey Administrators")에 추가한 다음 변경 사항 저장을 선택합니다.

키 삭제 예약 및 취소를 위한 권한 추가(AWS CLI)AWS Command Line Interface을 이용해 키 삭제를 예약하고 취소할 권한을 추가할 수 있습니다.

270

Page 279: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드Amazon CloudWatch 경보 생성

키 삭제를 예약하고 취소할 권한을 추가하려면

1. aws kms get-key-policy 명령을 이용해 기존 키 정책을 검색한 후 정책 문서를 파일에 저장합니다.2. 원하는 텍스트 편집기에서 정책 문서를 열고 키 관리자에게 권한을 부여하는 정책 설명(예

를 들어 "Sid": "Allow access for Key Administrators"가 포함된 정책 설명)에kms:ScheduleKeyDeletion 및 kms:CancelKeyDeletion 권한을 추가합니다. 그런 다음 파일을저장합니다. 다음 예는 이 두 권한이 포함된 정책 설명을 보여줍니다.

{ "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/KMSKeyAdmin"}, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*"}

3. aws kms put-key-policy 명령을 사용하여 키 정책을 에 적용합니다.CMK

생성 Amazon CloudWatch 알람의 사용을 고객 마스터 키 삭제 대기 중

여러분은 AWS CloudTrail, Amazon CloudWatch Logs, 그리고 Amazon Simple Notification Service(Amazon SNS)는 귀하 계정의 누군가가 CMK 암호화 작업에서 삭제 대기 중입니다. 이 알림을 받는 경우,CMK 삭제하기로 결정한 사항을 다시 생각해 보십시오.

다음 절차는 로그 파일에 "Key ARN is pending deletion" 오류 메시지가 기록되도록 만드는 API 요청이 이루어질 때마다 알림을 받는 방법에 대해 설명합니다. 이 오류 메시지는 개인 또는 응용 프로그램이CMK 암호화 작업(Encrypt, Decrypt, GenerateDataKey, GenerateDataKeyWithoutPlaintext,그리고 ReEncrypt) ). 알림이 오류 메시지에 연결되기 때문에 허용된 API 작업을 사용할 때 트리거되지 않습니다. CMKs 삭제 대기 중인 ListKeys, CancelKeyDeletion, 그리고 PutKeyPolicy. 목록을 보려면AWS KMS 이 오류 메시지를 반환하는 API 작업, 참조 주요 상태: 귀하의 CMK (p. 175).

수신한 알림 이메일에는 CMK 또는 암호화 작업. CloudTrail 로그 (p. 181)에서 해당 정보를 확인할 수 있습니다. 대신에, 경보 상태가 정상에서 경보로 변경되었다는 내용이 이메일로 보고됩니다. 자세한 정보는CloudWatch 경보 및 상태 변경, 참조 생성 Amazon CloudWatch 알람 in the Amazon CloudWatch 사용 설명서.

Warning

이 Amazon CloudWatch 경보 지표의 공개 키 사용을 감지할 수 없습니다. CMK 외부 AWS KMS. 차트 메트릭 삭제의 특별한 위험에 대한 자세한 내용은 CMKs 해독할 수 없는 ciphertexts 생성을 비롯한 공개 키 암호화에 사용됩니다. 비대칭 CMKs 삭제 (p. 267).

주제

271

Page 280: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드CloudWatch 경보의 요구 사항

• CloudWatch 경보의 요구 사항 (p. 272)• CloudWatch 경보 생성 (p. 272)

CloudWatch 경보의 요구 사항CloudWatch 경보를 생성하기 전에 AWS CloudTrail 추적을 생성하고 CloudTrail 로그 파일을 AmazonCloudWatch Logs에 전달하도록 CloudTrail을 구성합니다.

1. CloudTrail 추적 생성

CloudTrail은 AWS 계정 생성 시 해당 계정에 대해 자동으로 활성화됩니다. 하지만 AWS KMS 관련 이벤트를 비롯하여 계정 내 현재 이벤트 레코드의 경우에는 추적을 생성합니다.

2. 로그 파일을 CloudWatch Logs에 전달하도록 CloudTrail 구성.

CloudTrail 로그 파일을 CloudWatch Logs에 전달하도록 구성합니다. 이를 통해 CloudWatch Logs 로그를모니터링하려면 AWS KMS API 요청 시 CMK 삭제 대기 중입니다.

CloudWatch 경보 생성알림을 받으려면 AWS KMS API 요청은 CMK 암호화 작업에서 삭제가 보류 중인 경우 CloudWatch 알림 및알림 구성.

을(를) 생성하려면 CloudWatch KMS 사용 시도를 모니터링하는 알람 CMK 삭제 대기 중

1. AWS Management 콘솔에 로그인한 다음 https://console.aws.amazon.com/cloudwatch/에서CloudWatch 콘솔을 엽니다.

2. 오른쪽 상단의 리전 선택기를 사용하여 모니터링할 AWS 리전을 선택합니다.3. 왼쪽 탐색 창에서 Logs를 선택합니다.4. 로그 그룹 목록에서 로그 그룹 옆에 있는 옵션 버튼을 선택합니다. 그런 다음 [Create Metric Filter]를 선

택합니다.5. [Filter Pattern]에 다음을 입력하거나 붙여 넣습니다.

{ $.eventSource = kms* && $.errorMessage = "* is pending deletion."}

지표 할당을 선택합니다.6. [Create Metric Filter and Assign a Metric] 페이지에서 다음을 수행합니다.

a. 지표 네임스페이스에 CloudTrailLogMetrics를 입력합니다.b. 지표 이름에 KMSKeyPendingDeletionErrorCount를 입력합니다.c. 고급 지표 설정 표시를 선택한 후 측정치 값에 1(이 값이 현재 값이 아닌 경우)을 입력합니다.d. 필터 생성을 선택합니다.

7. 필터 상자에서 [Create Alarm]을 선택합니다.8. [Create Alarm] 창에서 다음과 같이 실행합니다.

a. 에서 알람 임계값 섹션, 이름, 유형 KMSKeyPendingDeletionErrorAlarm. 선택적 설명을 추가할 수도 있습니다.

b. 다음 경우 항상 다음에 같음에 >=를 선택하고 나서 1을 입력합니다.c. 대상 1개 중 1개 n 데이터포인트필요한 경우, 유형 1.d. 추가 설정 섹션의 누락 데이터 처리에서 정상(임계값을 위반하지 않음)를 선택합니다.e. 작업 섹션의 알림 보내기에서 다음 중 하나를 선택합니다.

272

Page 281: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드CloudWatch 경보 생성

• 새로운 Amazon SNS 주제를 새 목록은(는) 다음과 같은 새 주제 이름을 입력합니다. KMSAlert.대상 이메일 목록, 최소 하나의 이메일 주소를 입력합니다. 쉼표로 구분하여 두 개 이상의 이메일주소를 입력할 수 있습니다.

• 기존 Amazon SNS 주제를 사용하려면 사용할 주제의 이름을 선택합니다.f. [Create Alarm]을 선택합니다.

9. 한 이메일 주소로 알림을 보내기로 선택한 경우 [email protected]에서 "AWS Notification- Subscription Confirmation"이라는 제목으로 수신한 이메일 메시지를 엽니다. 이메일 메시지의[Confirm subscription] 링크를 선택해 이메일 주소를 확인합니다.

Note

이메일 주소를 확인한 후부터 이메일 알림을 받게 됩니다.

273

Page 282: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드과거의 과거 사용 CMK

이 절차를 완료한 후 이 CloudWatch 경보가 ALARM 상태에 도달할 때마다 알림을 받게 됩니다. 이 경보에대한 알림을 받는 경우, 이 경보는 여전히 사용해야 하는 누군가를 의미합니다. CMK. 이 경우 삭제 취소CMK (p. 268) 을(를) 더 많은 시간을 제공하여 정말로 삭제하고 싶은지 결정합니다.

과거의 과거 사용 고객 마스터 키삭제하기 전에 고객 마스터 키 (CMK), 이 키 아래에서 암호화가 얼마나 되었는지 알 수 있습니다. AWS KMS은(는) 이 정보를 저장하지 않으며, ciphertexts를 저장하지 않습니다. 어떻게 CMK 과거에 사용되어 향후 필요하다고 판단될 수 있습니다. 이 주제는 과거 사용량을 결정하는 데 도움이 되는 몇 가지 전략을 제시합니다. CMK.

Warning

과거 및 실제 사용량을 결정하기 위한 이러한 전략은 AWS 사용자와 AWS KMS 작업에만 유효합니다. 이들은 파생 메트릭의 공개 키 사용을 감지할 수 없습니다. CMK 외부 AWS KMS. 차트 메트릭삭제의 특별한 위험에 대한 자세한 내용은 CMKs 해독할 수 없는 ciphertexts 생성을 비롯한 공개 키암호화에 사용됩니다. 비대칭 CMKs 삭제 (p. 267).

주제• 검사 CMK 잠재적 사용 범위를 결정하기 위한 권한 (p. 274)• AWS CloudTrail 로그 확인을 통한 실제 사용량 파악 (p. 274)

검사 CMK 잠재적 사용 범위를 결정하기 위한 권한현재 누가 고객 마스터 키 (CMK)는 CMK 사용되었고 여전히 필요한지 여부. 현재 누가 CMK로 이동 액세스권한 결정 AWS KMS 고객 마스터 키 (p. 140).

AWS CloudTrail 로그 확인을 통한 실제 사용량 파악CMK의 사용 기록을 사용하여 특정 CMK 에 암호화된 ciphertexts가 있는지 여부를 결정할 수 있습니다.

모두 AWS KMS API 활동이 기록됨 AWS CloudTrail 로그 파일. 만약 생성된 CloudTrail 트레일 이 지역에서고객 마스터 키 (CMK)를 찾을 수 있습니다. CloudTrail 로그 파일을 AWS KMS 특정 항목에 대한 API 활동CMK. 트레일이 없는 경우 CloudTrail 이벤트 이력. 방법에 대한 자세한 내용은 AWS KMS 사용 CloudTrail,참조: AWS CloudTrail을 사용하여 AWS KMS API 호출 로깅 (p. 181).

다음 예제에서는 CloudTrail 생성된 로그 항목 AWS KMS CMK 에 저장된 개체를 보호하는 데 사용됩니다.Amazon Simple Storage Service (Amazon S3) ). 이 예에서는 개체가 Amazon S3 사용 서버 측 암호화 AWSKMS관리 키(SSE-KMS) (p. 376). 개체를 업로드할 때 Amazon S3 SSE-KMS를 사용하여 KMS를 지정합니다. CMK 개체를 보호하는 데 사용합니다. Amazon S3 사용 AWS KMS GenerateDataKey 이(가) 개체에대한 고유한 데이터 키를 요청하고 이 요청 이벤트가 로그인 되었습니다. CloudTrail 다음과 유사한 항목이있습니다.

{ "eventVersion": "1.02", "userIdentity": { "type": "AssumedRole", "principalId": "AROACKCEVSQ6C2EXAMPLE:example-user", "arn": "arn:aws:sts::111122223333:assumed-role/Admins/example-user", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2015-09-10T23:12:48Z"

274

Page 283: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS CloudTrail 로그 확인을 통한 실제 사용량 파악

}, "sessionIssuer": { "type": "Role", "principalId": "AROACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admins", "accountId": "111122223333", "userName": "Admins" } }, "invokedBy": "internal.amazonaws.com" }, "eventTime": "2015-09-10T23:58:18Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-west-2", "sourceIPAddress": "internal.amazonaws.com", "userAgent": "internal.amazonaws.com", "requestParameters": { "encryptionContext": {"aws:s3:arn": "arn:aws:s3:::example_bucket/example_object"}, "keySpec": "AES_256", "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, "responseElements": null, "requestID": "cea04450-5817-11e5-85aa-97ce46071236", "eventID": "80721262-21a5-49b9-8b63-28740e7ce9c9", "readOnly": true, "resources": [{ "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

다음에서 이 개체를 다운로드하는 경우 Amazon S3, Amazon S3 전송 Decrypt 요청 AWS KMS 지정된 데이터를 사용하여 객체의 데이터 키를 해독합니다. CMK. 이렇게 하면 CloudTrail 로그 파일에 다음과 비슷한항목이 포함됩니다.

{ "eventVersion": "1.02", "userIdentity": { "type": "AssumedRole", "principalId": "AROACKCEVSQ6C2EXAMPLE:example-user", "arn": "arn:aws:sts::111122223333:assumed-role/Admins/example-user", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2015-09-10T23:12:48Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admins", "accountId": "111122223333", "userName": "Admins" } }, "invokedBy": "internal.amazonaws.com" }, "eventTime": "2015-09-10T23:58:39Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt",

275

Page 284: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS CloudTrail 로그 확인을 통한 실제 사용량 파악

"awsRegion": "us-west-2", "sourceIPAddress": "internal.amazonaws.com", "userAgent": "internal.amazonaws.com", "requestParameters": { "encryptionContext": {"aws:s3:arn": "arn:aws:s3:::example_bucket/example_object"}}, "responseElements": null, "requestID": "db750745-5817-11e5-93a6-5b87e27d91a0", "eventID": "ae551b19-8a09-4cfc-a249-205ddba330e3", "readOnly": true, "resources": [{ "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

모든 AWS KMS API 활동이 CloudTrail에 의해 로깅됩니다. 이러한 로그 항목을 평가함으로써 특정 사용량을CMK을(를) 통해 삭제할지 여부를 결정하는 데 도움이 될 수 있습니다.

로그 파일에 API 활동이 어떻게 표시되는지 더 많은 예를 보고 싶으면 AWS CloudTrail을 사용하여 AWSKMS API 호출 로깅 (p. 181) 단원을 참조하십시오. CloudTrail에 대한 자세한 내용은 AWS CloudTrail UserGuide 단원을 참조하십시오.

276

Page 285: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드

AWS Key Management Service(AWSKMS)에서 키 구성 요소 가져오기

제공하는 키 구성 요소로 고객 마스터 키 (p. 3)(CMK)를 생성할 수 있습니다.

는 CMK의 논리적 표현입니다.마스터 키 여기에는 키 식별자 및 기타 메타데이터 외에도 데이터를 암호화하고 해독하는 데 사용되는 키 구성 요소 (p. 12)가 포함되어 있습니다. 를 생성하면 기본적으로 CMK는 해당 (p. 21)에 대한 키 구성 요소를 생성합니다.AWS KMSCMK 그러나 키 구성 요소 없이 CMK를 생성한 다음 자체 키 구성 요소를 해당 CMK로 가져올 수 있습니다. 이 기능은 흔히 "BYOK"(기존 보유 키 사용)라고 합니다.

Note

암호화 텍스트가 가져온 키 구성 요소로 AWS KMS로 암호화되었더라도 AWS KMS는 AWS KMS외부의 CMK 암호화 텍스트 암호화 해제를 지원하지 않습니다. AWS KMS는 이 작업에 필요한 암호화 텍스트 형식을 게시하지 않으며, 알림 없이 형식을 변경할 수 있습니다.

가져온 키 구성 요소는 CMKs 키 스토어의 대칭 AWS KMS에 대해서만 지원됩니다. 사용자 지정 키 스토어의CMKs비대칭 (p. 158)CMKs 또는 에서는 지원되지 않습니다. (p. 291)

가져온 키 구성 요소를 사용하는 경우, AWS KMS에서 사본을 사용하도록 허용하는 동시에 키 구성요소에 대한 책임은 유지해야 합니다. 이렇게 하기로 선택하는 경우는 다음과 같습니다.

• 요구 사항에 부합하는 엔트로피 소스를 사용하여 키 구성 요소를 생성했음을 입증하기 위해.• AWS 서비스에서 고유한 인프라의 키 구성 요소를 사용하고 내에서 를 이용해 이 키 구성 요소의 수명 주

기를 관리하기 위해.• AWS 내에서 키 구성 요소의 만료 시간을 설정하고 수동으로 삭제 (p. 288)하되, 나중에 다시 사용 가능

하도록 설정하기 위해. 반면 키 삭제를 예약 (p. 266)하려면 7~30일의 대기 기간이 필요하며, 이 기간이 지나면 삭제된 CMK를 복구할 수 없습니다.

• 키 구성 요소의 전체 수명 주기 동안 내구성 강화와 재해 복구를 목적으로 키 구성 요소의 원본을 소유하고AWS 외부에 보관하기 위해.

가져온 키 구성 요소가 있는 CMKs와 AWS KMS에서 생성된 키 구성 요소가 있는 구성 요소 간의 중요한 차이에 대한 자세한 내용은 가져온 키 구성 요소 정보 (p. 278) 단원을 참조하십시오.

가져오는 키 구성 요소는 256비트 대칭 암호화 키여야 합니다.

Topics

• 가져온 키 구성 요소 정보 (p. 278)• 키 구성 요소를 가져올 수 있는 권한 (p. 279)• 키 구성 요소를 가져오는 방법 (p. 279)

277

Page 286: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드가져온 키 구성 요소 정보

• 키 구성 요소를 다시 가져오는 방법 (p. 280)• 가져온 키 구성 요소로 CMKs를 보는 방법 (p. 280)

가져온 키 구성 요소 정보AWS KMS로 키 구성 요소를 가져오기로 결정하기 전에, 가져온 키 구성 요소의 다음과 같은 특성을 이해해야 합니다.

키 구성 요소를 생성하는 경우

보안 요구 사항을 충족하는 임의 소스를 사용하여 256비트의 키 구성 요소를 생성할 책임은 사용자에게 있습니다.

키 구성 요소를 변경할 수 없음

키 구성 요소를 CMK로 가져올 때 CMK는 해당 키 구성 요소와 영구적으로 연결됩니다. 동일한 키 구성 요소를 다시 가져올 수 있지만 다른 키 구성 요소를 해당 (p. 280)로 가져올 수는 없습니다.CMK 또한 가져온 키구성 요소를 사용하여 에 대한 (p. 170)자동 키 교체를 활성화CMK할 수 없습니다. 그러나 가져온 키 구성 요소로 를 수동으로 교체CMK할 수 있습니다. (p. 172)

다른 CMK로 해독할 수 없음

KMS CMK로 데이터를 암호화하는 경우, 암호화 텍스트를 다른 CMK로 해독할 수 없습니다. 이는 동일한 키구성 요소를 다른 CMK로 가져올 때도 마찬가지입니다.

이동성 또는 escrow 기능 없음

가 생성하는 암호화 텍스트는 이식할 수 없습니다. AWS KMS는 가져온 키 구성 요소로 AWS KMS에서 암호화 텍스트를 암호화했더라도 AWS KMS 외부의 AWS KMS 암호화 텍스트 해독을 지원하지 않습니다. CMK는 이 작업에 필요한 암호화 텍스트 형식을 게시하지 않으며, 이 형식은 통지 없이 변경될 수 있습니다.AWSKMS

또한 AWS 또는 AWS 암호화 SDK 클라이언트 측 암호화와 같은 Amazon S3 도구를 사용하여 암호화 텍스트를 해독할 수 없습니다.AWS KMS

따라서 키 구성 요소에 조건부로 액세스할 수 있는 권한 있는 타사가 AWS KMS 외부의 특정 암호화 텍스트를 암호화 해제할 수 있는 키 escrow 정렬을 지원하기 위해 키 구성 요소를 가져온 키를 사용할 수 없습니다.키 escrow를 지원하려면 AWS 암호화 SDK를 사용하여 AWS KMS와 독립적인 키로 메시지를 암호화합니다.

가용성과 내구성에 대한 책임은 사용자에게 있습니다.

키 구성 요소의 가용성과 내구성에 대한 모든 책임을 부담해야 합니다. AWS KMS는 가져온 키 구성 요소의가용성을 높게 유지하도록 설계되었습니다. 그러나 이 서비스는 가져온 키 구성 요소의 내구성을 자동 생성된 키 구성 요소와 동일한 수준으로 유지하지는 않습니다. 이 차이는 다음과 같은 경우에 의미가 있습니다.

• 가져온 키 구성 요소의 만료 시간을 설정하면 AWS KMS가 만료된 후 키 구성 요소를 삭제합니다. AWSKMS는 CMK 또는 해당 메타데이터를 삭제하지 않습니다. 사용자는 AWS KMS가 생성한 키 구성 요소의만료 시간을 설정할 수 없습니다.

• 가져온 키 구성 요소를 수동으로 삭제하면 (p. 288)가 키 구성 요소를 삭제하지만 AWS KMS 또는 그 메타데이터는 삭제하지 않습니다.CMK 반면 키 삭제를 예약 (p. 266)하려면 7~30일의 대기 기간이 필요하며,이 기간이 지나면 AWS KMS가 키 구성 요소와 CMK의 모든 메타데이터를 삭제합니다.

• 드물지만 서비스에 영향을 미칠 리전 전반에 걸친 장애(완전한 정전 등)가 발생하는 경우, AWS KMS는 가져온 키 구성 요소를 자동으로 복원할 수 없습니다. 그러나 AWS KMS는 CMK 및 해당 메타데이터를 복원할 수 있습니다.

이런 이벤트가 발생한 뒤에 키 구성 요소를 복원하려면 제어 시스템 안에 키 구성 요소의 사본이 있어야 합니다. 그런 다음 CMK로 다시 가져올 수 있습니다.

278

Page 287: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 구성 요소를 가져올 수 있는 권한

키 구성 요소를 가져올 수 있는 권한가져온 키 구성 요소로 CMKs를 생성하고 관리하려면 사용자에게 이 프로세스의 작업에 대한 권한이 필요합니다. CMK를 생성할 때 키 정책에 kms:GetParameterForImport, kms:ImportKeyMaterial 및kms:DeleteImportedKeyMaterial 권한을 제공할 수 있습니다. 권한은 키 관리자의 기본 권한에 포함되지 않으므로 수동으로 추가해야 합니다.kms:ImportKeyMaterial

가져온 키 구성 요소로 CMKs를 생성하려면 보안 주체는 다음 권한이 필요합니다.

• kms:CreateKey (p. 89)(IAM 정책)• 가져온 키 구성 요소를 사용하여 이 권한을 CMKs로 제한하려면 kms:KeyOrigin (p. 126) 정책 조건을EXTERNAL 값과 함께 사용합니다.

{ "Version": "2012-10-17", "Statement": { "Sid": "IAM policy to create CMKs with no key material" "Effect": "Allow", "Resource": "*", "Principal": { "AWS": "arn:aws:iam::111122223333:role/KMSAdminRole" }, "Action": "kms:CreateKey", "Condition": { "StringEquals": { "kms:KeyOrigin": "EXTERNAL" } }}

• kms:GetParametersForImport(키 정책 또는 IAM 정책)• 이 권한을 특정 래핑 알고리즘과 래핑 키 사양을 사용하는 요청으로 제한하려면

kms:WrappingAlgorithm (p. 133) 및 kms:WrappingKeySpec (p. 134) 정책 조건을 사용합니다.• kms:ImportKeyMaterial(키 정책 또는 IAM 정책)

• 만료되는 키 구성 요소를 허용하거나 금지하고 만료 날짜를 제어하려면 kms:ExpirationModel (p. 122)및 kms:ValidTo (p. 129) 정책 조건을 사용합니다.

가져온 키 구성 요소를 다시 가져오려면 보안 주체는 kms:GetParametersForImport 및kms:ImportKeyMaterial 권한이 필요합니다.

가져온 키 구성 요소를 삭제하려면 보안 주체에게 kms:DeleteImportedKeyMaterial 권한이 필요합니다.

키 구성 요소를 가져오는 방법다음 개요에서는 AWS KMS로 키 구성 요소를 가져오는 방법을 설명합니다. 프로세스의 각 단계에 대한 자세한 정보는 해당 주제를 참조하십시오.

1. 키 구성 요소 없이 대칭 CMK 생성 (p. 281) – 키 구성 요소 가져오기를 시작하려면 먼저 CMK오리진이인 대칭 EXTERNAL을 생성합니다. 이는 키 구성 요소가 AWS KMS 외부에서 생성되었음을 나타내며 AWSKMS가 CMK에 대한 키 구성 요소를 생성하지 못하게 방지합니다. 이후 단계에서는 자체 키 구성 요소를이 CMK로 가져옵니다.

2. 퍼블릭 키와 가져오기 토큰 다운로드 (p. 283) – 1단계를 완료한 후 퍼블릭 키와 가져오기 토큰을 다운로드합니다. 이러한 항목은 키 구성 요소를 AWS KMS로 가져오는 과정을 보호합니다.

3. 키 구성 요소 암호화 (p. 286) – 2단계에 다운로드한 퍼블릭 키를 사용하여 고유한 시스템에 생성한 키구성 요소를 암호화합니다.

279

Page 288: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 구성 요소를 다시 가져오는 방법

4. 키 구성 요소 가져오기 (p. 287) – 3단계에 생성하여 암호화한 키 구성 요소와 2단계에 다운로드한 가져오기 토큰을 업로드합니다.

AWS KMS는 AWS CloudTrail를 생성하고, CMK퍼블릭 키와 가져오기 토큰을 다운로드 (p. 186)하고, 키구성 요소를 가져오면 (p. 201) 로그에 항목을 기록합니다. 또한 는 가져온 키 구성 요소를 삭제하거나 (p. 202)가 AWS KMS만료된 키 구성 요소를 삭제AWS KMS할 때도 항목을 기록합니다.??? (p. 190)

키 구성 요소를 다시 가져오는 방법가져온 키 구성 요소로 CMK를 관리하는 경우 키 구성 요소가 만료되었거나 키 구성 요소가 실수로 삭제되거나 분실되어 키 구성 요소를 다시 가져와야 할 수 있습니다.

원래 CMK로 가져왔던 것과 동일한 키 구성 요소를 다시 가져와야 합니다. 다른 키 구성 요소는 CMK로 가져올 수 없습니다. 또한 AWS KMS는 키 구성 요소 없이 생성된 CMK에 대해서는 키 구성 요소를 생성할 수 없습니다.

키 구성 요소를 다시 가져오려면 처음 키 구성 요소를 가져올 때 (p. 279)와 동일한 절차를 사용하되, 다음예외를 적용합니다.

• 새 CMK를 생성하는 대신 기존 CMK를 사용합니다. 가져오기 절차의 1단계 (p. 281)를 건너뛸 수 있습니다.

• 에 키 구성 요소가 포함되어 있으면 키 구성 요소를 다시 가져오기 전에 CMK기존 키 구성 요소를 삭제해야 합니다. (p. 288)

키 구성 요소를 CMK로 가져올 때마다 에 대한 (p. 283)새 래핑 키와 가져오기 토큰을 다운로드하여 사용CMK해야 합니다. 래핑 절차는 키 구성 요소의 내용에 영향을 주지 않으므로 동일한 키 구성 요소를 다양한래핑 키(서로 다른 가져오기 토큰)로 가져올 수 있습니다.

가져온 키 구성 요소로 CMKs를 보는 방법키 구성 요소 없이 CMK을 생성하면 Origin의 CMK 속성 값이 EXTERNAL이 되고 이 값은 변경할 수 없습니다. 가져온 키 구성 요소를 사용하도록 설계된 키는 AWS KMS에서 제공하는 키 구성 요소를 사용하도록 변환할 수 없습니다.

가져온 키 구성 요소가 필요한 CMKs를 AWS KMS 콘솔에서 또는 AWS KMS API를 사용하여 식별할 수 있습니다. 또한 콘솔 또는 APIs를 사용하여 만료 여부와 만료 시기와 같은 키 구성 요소의 속성을 볼 수 있습니다.

가져온 키 구성 요소로 CMKs를 식별하려면(console)1. https://console.aws.amazon.com/kms에서 AWS KMS 콘솔을 엽니다.2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 다음 기법 중 하나를 사용하여 Origin의 CMKs 속성을 봅니다.

• 테이블에 Origin(오리진) 열을 추가하려면 오른쪽 상단 모서리에서 CMKSettings(설정) 아이콘을 선택합니다. Origin(오리진)을 확인한 다음 확인을 선택합니다. Origin(오리진) 열을 사용하면 오리진 속성값으로 CMKs를 쉽게 식별할 수 있습니다.EXTERNAL

• 특정 Origin의 CMK 속성 값을 찾으려면 CMK의 키 ID 또는 별칭을 선택합니다. 그런 다음 암호화 구성 탭을 선택합니다. 탭은 일반 구성(General configuration) 섹션 아래에 있습니다.

4. 키 구성 요소에 대한 세부 정보를 보려면 Key material(키 구성 요소) 탭을 선택합니다. 이 탭은 키 구성요소를 가져온 CMKs의 세부 정보 페이지에만 나타납니다.

280

Page 289: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드가져온 키 구성 요소로 CMKs를 식별하려면(AWS KMS API)

가져온 키 구성 요소로 CMKs를 식별하려면(AWS KMSAPI)DescribeKey 작업을 사용합니다. 응답에는 다음 예제와 같이 Origin의 CMK 속성, 만료 모델 및 만료 날짜가 포함됩니다.

$ aws kms describe-key --key-id 1234abcd-12ab-34cd-56ef-1234567890ab{ "KeyMetadata": { "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Origin": "EXTERNAL", "ExpirationModel": "KEY_MATERIAL_EXPIRES" "ValidTo": 1568894400.0, "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "CreationDate": 1568289600.0, "Enabled": false, "Description": "", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "PendingImport", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] }}

주요 재료 1단계 가져오기: 생성 AWS KMS 고객 마스터 키 (CMK) 키 재료 없음

기본적으로 AWS KMS 만들 때 고객 마스터 키 (CMK) ). 대신 자신의 키 자료를 가져오려면 CMK 키 재료 없이. 이 두 가지 유형의 CMKs by the CMK의 원산지. 언제 AWS KMS 여러분, CMK의 원산지는 AWS_KMS. 여러분이 CMK 핵심 재료, CMK의 원산지는 EXTERNAL이(가) 주요 자재가 AWS KMS.

A CMK 주요 자재는 가져오기 보류 중 을(를) 사용할 수 없습니다. 사용하려면 키 구성 요소를 가져와야 합니다(추후 설명). 키 자료를 가져올 때 CMK의 주요 상태 변경 사항 활성화됨. 키 상태에 대한 자세한 내용은 주요 상태: 귀하의 CMK (p. 175) 단원을 참조하십시오.

을(를) 생성하려면 CMK 주요 재료를 사용하여 AWS Management 콘솔 또는 AWS KMS API HTTP 요청을제출하거나 AWS SDK 또는 명령줄 도구 중 하나를 통해 바로 API를 사용할 수 있습니다.

AWS KMS 항목을 AWS CloudTrail 로그인 생성 CMK, 공개 키 다운로드 및 가져오기, 그리고 키 재료 가져오기. AWS KMS 가져온 키 자료를 삭제하거나 AWS KMS 만료된 키 재료 삭제.

• 생성 CMK 주요 재료(console) (p. 281)• 생성 CMK 주요 재료(AWS KMS API) (p. 283)

생성 CMK 주요 재료(console)귀하는 AWS Management 콘솔 만들기 위해 CMK 키 재료 없이. 이를 수행하기 전에 콘솔을 구성하여 원산지 열 목록 CMKs. 가져온 키의 Origin(오리진) 값은 외부입니다.

281

Page 290: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드생성 CMK 주요 재료(console)

귀하는 CMK 가져온 키 자료의 경우 한 번만. 동일한 키 자료를 기존의 CMK, 참조: 단계 2: 퍼블릭 키 및 가져오기 토큰 다운로드 (p. 283).

1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/kms에서 AWS KeyManagement Service(AWS KMS) 콘솔을 엽니다.

2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 탐색 창에서 고객 관리형 키를 선택합니다.4. [Create key]를 선택합니다.5. Symmetric(대칭)을 선택합니다. 키 재료를 팔레트 메트릭으로 가져올 수 없습니다. CMK.6. 고급 옵션을 확장합니다.7. Key material origin(키 구성 요소 오리진)에서 외부를 선택합니다.

그런 다음 [I understand the security, availability, and durability implications of using an imported key]옆 확인란을 선택하여, 가져온 키 구성 요소를 사용하는 것의 의미를 이해했음을 표시합니다. 이러한 의미에 대한 자세한 내용은 가져온 키 구성 요소 정보 (p. 278) 단원을 참조하십시오.

다음을 선택합니다.8. 별칭을 입력하고 (선택적으로) CMK.

다음을 선택합니다.9. : 선택. On 태그 추가 페이지, 추가 또는 분류를 CMK.

다음을 선택합니다.10. 에서 핵심 관리자 섹션 IAM 사용자 및 역할을 관리할 수 있는 CMK. 자세한 정보는 주요 관리자가

CMK (p. 68) 단원을 참조하십시오.

Note

IAM 정책을 통해 IAM 사용자 및 역할 권한이 CMK.11. (선택 사항) 선택된 것을 방지하기 위해 IAM 사용자 및 역할 삭제 CMK, 키 삭제 페이지 맨 아래에 있는

섹션을 키 관리자가 이 키 삭제 허용 확인란을 선택합니다.

다음을 선택합니다.12. 에서 이 계정 섹션 IAM 사용자 및 역할 AWS 계정을 사용하여 CMK 에서 암호화 작업 (p. 11). 자세한 정

보는 주요 사용자가 CMK (p. 70) 단원을 참조하십시오.

Note

IAM 정책을 통해 IAM 사용자 및 역할 사용 권한 CMK.13. (선택 사항) 다른 허용 가능 AWS 사용할 계정 CMK 암호화 작업에 사용됩니다. 이렇게 하려면 페이지

하단의 Other AWS accounts(다른 AWS 계정) 섹션에서 Add another AWS account(다른 AWS 계정 추가)를 선택하고 외부 계정의 AWS 계정 식별 번호를 입력합니다. 외부 계정을 여러 개 추가하려면 이 단계를 반복합니다.

Note

외부 계정의 원칙을 사용하여 CMK외부 계정의 관리자는 IAM 이 권한을 제공하는 정책. 자세한정보는 다른 계정의 사용자가 CMK를 사용하도록 허용 (p. 91) 단원을 참조하십시오.

다음을 선택합니다.14. On 주요 정책 검토 및 편집 새 항목에 대한 정책 문서를 검토하고 편집합니다. CMK. 모두 마쳤으면 완

료를 선택합니다.

작업이 성공하면 CMK 키 재료 없이. 상태는 Pending import(가져오기 보류 중)입니다. 지금 프로세스를계속하려면 퍼블릭 키 및 가져오기 토큰 다운로드(console) (p. 284) 단원을 참조하십시오. 나중에 프로세스를 계속하려면 취소를 선택합니다.

282

Page 291: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드생성 CMK 주요 재료(AWS KMS API)

그런 다음 단계 2: 퍼블릭 키 및 가져오기 토큰 다운로드 (p. 283).

생성 CMK 주요 재료(AWS KMS API)사용 방법 AWS KMS API 대칭을 CMK 키 재료 없이 생성키 요청 Origin 매개변수 설정 EXTERNAL. 다음예제에서는 이 작업을 수행하는 방법을 보여 줍니다. AWS Command Line Interface (AWS CLI).

$ aws kms create-key --origin EXTERNAL

명령이 제대로 실행되면 다음과 비슷한 출력이 표시됩니다. The CMK의 Origin is EXTERNAL 그리고KeyState is PendingImport.

{ "KeyMetadata": { "Origin": "EXTERNAL", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Description": "", "Enabled": false, "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "PendingImport", "CreationDate": 1568289600.0, "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333" "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] }}

복사 CMK나중에 단계에서 사용할 명령 출력에서 의 키 ID를 다음 단계로 이동합니다. 단계 2: 퍼블릭 키 및가져오기 토큰 다운로드 (p. 283).

키 구성 요소 가져오기 2단계: 퍼블릭 키 및 가져오기토큰 다운로드

키 구성 요소 없이 대칭 (고객 마스터 키)을 생성CMK한 후 해당 (p. 281)에 대한 퍼블릭 키와 가져오기 토큰을 다운로드합니다.CMK 키 구성 요소를 가져오려면 이러한 항목이 필요합니다. AWS Management 콘솔또는 AWS KMS API를 사용해 단일 단계에서 두 항목을 모두 다운로드할 수 있습니다.

동일한 키 구성 요소를 CMK로 다시 가져오려는 경우에도 이러한 항목을 다운로드할 수 있습니다. 이 방법으로 키 구성 요소의 만료 시간을 변경하거나 만료되었거나 삭제된 키 구성 요소를 복원할 수 있습니다.

퍼블릭 키의 사용

키 구성 요소를 가져올 때 AWS KMS에 원시 키 구성 요소를 업로드하지 마십시오. 먼저 이 단계에 다운로드한 퍼블릭 키로 키 구성 요소를 암호화한 후, 암호화한 키 구성 요소를 AWS KMS에 업로드해야 합니다. AWS KMS가 암호화한 키 구성 요소를 받으면 해당하는 프라이빗 키를 이용해 해독합니다. AWSKMS에서 받는 퍼블릭 키는 2048비트 RSA 퍼블릭 키로, 항상 AWS 계정별로 고유한 값입니다.

가져오기 토큰 사용

가져오기 토큰에는 키 구성 요소가 올바르게 가져와지도록 보장하는 메타데이터가 포함됩니다. 암호화된 키 구성 요소를 AWS KMS에 업로드할 때 이 단계에 다운로드한 가져오기 토큰을 업로드해야 합니다.

283

Page 292: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드퍼블릭 키 및 가져오기 토큰 다운로드(console)

래핑 알고리즘 선택

가져오기 동안 키 구성 요소를 보호하려면 래핑 키와 래핑 알고리즘을 사용해 이를 암호화합니다. 일반적으로 키 구성 요소를 보호하는 하드웨어 보안 모듈(HSM) 또는 키 관리 시스템에서 지원되는 알고리즘을 선택합니다. 다음 선택 항목으로 표현되는 세 가지 패딩 옵션 중 하나와 함께 RSA PKCS #1 암호화 스키마를 사용해야 합니다. 이 선택 항목은 AWS 기본 설정 순으로 나열됩니다. 이러한 선택 항목으로 표현된 스키마의 기술 세부 정보는 PKCS #1 버전 2.1 표준의 섹션 7에서 설명합니다.• RSAES_OAEP_SHA_256 – SHA-256 해시 함수와 OAEP(Optimal Asymmetric Encryption Padding)로

구성된 RSA 암호화 알고리즘입니다.• RSAES_OAEP_SHA_1 – SHA-1 해시 함수와 OAEP(Optimal Asymmetric Encryption Padding)로 구

성된 RSA 암호화 알고리즘입니다.• RSAES_PKCS1_V1_5 – PKCS #1 버전 1.5에서 설명한 패딩 형식으로 구성된 RSA 암호화 알고리즘

입니다.

Note

3단계의 OpenSSLEncrypt Key Material with (p. 286) 개념 증명 예제를 시도할 계획이라면RSAES_OAEP_SHA_1를 사용하십시오. (p. 286)

HSM 또는 키 관리 시스템에서 지원하는 경우, RSAES_OAEP_SHA_256을 이용해 키 구성 요소를 암호화하는 것이 좋습니다. 이 옵션을 사용할 수 없는 경우 RSAES_OAEP_SHA_1을 사용해야 합니다. 두OAEP 모두 사용할 수 없는 경우 RSAES_PKCS1_V1_5를 사용해야 합니다. 키 구성 요소를 암호화하는방법에 대한 내용은 키 구성 요소를 보호하는 키 관리 시스템이나 하드웨어 보안 모듈 설명서를 참조하십시오.

퍼블릭 키와 가져오기 토큰은 24시간 동안 유효합니다. 다운로드한 후 24시간 내에 이를 이용해 키 구성요소를 가져오지 않을 경우, 새로 다운로드해야 합니다.

AWS Management 콘솔 또는 AWS KMS API를 이용해 퍼블릭 키와 가져오기 토큰을 다운로드할 수 있습니다. HTTP 요청을 하거나 AWS SDKs 또는 명령줄 도구 중 하나를 통해 직접 API를 사용할 수 있습니다.

퍼블릭 키와 가져오기 토큰을 다운로드하면 GetParametersForImport 항목이 (p. 201) 로그에 추가되어AWS CloudTrailGetParametersForImport 작업을 기록합니다. 항목은 CloudTrail 콘솔 또는 AWS KMS API중 무엇을 사용하든 상관없이 동일합니다.AWS KMS

주제• 퍼블릭 키 및 가져오기 토큰 다운로드(console) (p. 284)• 퍼블릭 키 및 가져오기 토큰 다운로드(AWS KMS API) (p. 285)

퍼블릭 키 및 가져오기 토큰 다운로드(console)AWS Management 콘솔을 이용해 퍼블릭 키와 가져오기 토큰을 다운로드할 수 있습니다.

1. 방금 키 구성 요소 없이 CMK를 생성 (p. 281)하는 단계를 완료했고 Download wrapping key andimport token(래핑 키 및 가져오기 토큰 다운로드) 페이지에 있는 경우 Step 8 단원으로 건너뜁니다.

2. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/kms에서 AWS KeyManagement Service(AWS KMS) 콘솔을 엽니다.

3. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.4. 탐색 창에서 고객 관리형 키를 선택합니다.

Tip

키 구성 요소는 CMKOrigin(오리진)이 외부인 대칭 로만 가져올 수 있습니다. 이는 CMK가 키 구성 요소 없이 생성되었음을 나타냅니다. 테이블에 Origin(오리진) 열을 추가하려면 페이지의 오

284

Page 293: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드퍼블릭 키 및 가져오기 토큰 다운로드(AWS KMS API)

른쪽 상단 모서리에서 설정 아이콘( )을(를) 사용합니다. Origin(오리진)을 활성화한 다음확인을 선택합니다.

5. 가져오기가 보류 중인 CMK의 별칭 또는 키 ID를 선택합니다.6. Cryptographic configuration(암호화 구성) 탭을 선택하고 해당 값을 봅니다. 탭은 일반 구성(General

configuration) 섹션 아래에 있습니다.

키 유형CMKs이 Symmetric(대칭)이고 Origin(오리진)이 EXTERNAL(외부)인 로만 키 구성 요소를 가져올 수 있습니다. 가져온 키 구성 요소로 CMKs를 생성하는 방법에 대한 자세한 내용은 AWS KeyManagement Service(AWS KMS)에서 키 구성 요소 가져오기 (p. 277) 단원을 참조하십시오.

7. Key material(키 구성 요소) 탭을 선택한 다음 Download wrapping key and import token(래핑 키 및 가져오기 토큰 다운로드)을 선택합니다.

Key material(키 구성 요소) 탭은 Origin(오리진)CMKs 값이 EXTERNAL(외부)인 대칭 에만 나타납니다.8. [Select wrapping algorithm]에서 키 구성 요소 암호화에 사용할 옵션을 선택합니다. 옵션에 대한 자세한

내용은 래핑 알고리즘 선택 (p. 284)을 참조하십시오.

3단계에서 OpenSSLEncrypt Key Material with (p. 286) 개념 증명 예제를 사용하여 키 구성 요소 암호화 (p. 286)를 시도하려는 경우 RSAES_OAEP_SHA_1을 선택합니다.

9. [Download wrapping key and import token]을 선택한 후 파일을 저장합니다.

다음 옵션이 있는 경우 지금 프로세스를 계속하려면 다음을 선택합니다. 나중에 계속하려면 취소를 선택합니다. 그렇지 않고 창을 닫으려면 취소를 선택하거나 X를 클릭합니다.

10. 앞 단계에 저장한 .zip 파일(ImportParameters.zip)의 압축을 해제합니다.

폴더에는 다음 파일이 포함되어 있습니다.

• 이라는 파일의 래핑 키(퍼블릭 키)wrappingKeyCMK_key_ID_timestamp (예:wrappingKey_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909). 2048비트 RSA 퍼블릭 키입니다.

• 이름이 importToken_인 파일의 가져오기 토큰CMK_key_ID_timestamp (예:importToken_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909).

• README_라는 텍스트 파일CMK_key_ID_timestamp.txt(예: README_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909.txt). 이 파일에는 래핑 키(퍼블릭 키), 키 구성 요소를 암호화하는 데 사용할 래핑 알고리즘, 래핑 키(퍼블릭 키)와 가져오기 토큰이 만료되는 날짜와 시간에 대한정보가 포함되어 있습니다.

11. 프로세스를 계속하려면 키 구성 요소를 암호화 (p. 286)를 참조하십시오.

퍼블릭 키 및 가져오기 토큰 다운로드(AWS KMS API)API를 사용하여 퍼블릭 키와 가져오기 토큰을 다운로드하려면 이러한 항목을 다운로드할 AWS KMS를 지정하는 GetParametersForImport 요청을 보냅니다.CMK 다음 예에서는 AWS CLI에서 이 작업을 수행하는 방법을 보여줍니다.

이 예제는 RSAES_OAEP_SHA_1을 암호화 옵션으로 지정합니다. 다른 옵션을 지정하려면RSAES_OAEP_SHA_1를 RSAES_OAEP_SHA_256 또는 RSAES_PKCS1_V1_5로 바꿉니다. 을 퍼블릭 키와 가져오기 토큰을 다운로드할 1234abcd-12ab-34cd-56ef-1234567890ab의 키 ID로 바꿉니다.CMK 의 키ID 또는 Amazon 리소스 이름(ARN)을 사용할 수 있지만, 이 작업에 대한 별칭을 사용할 수 없습니다.CMK

Note

3단계에서 OpenSSLEncrypt Key Material with (p. 286)??? (p. 286) 개념 증명 예제를 시도할계획이라면 RSAES_OAEP_SHA_1을 지정하십시오.

$ aws kms get-parameters-for-import --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \

285

Page 294: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드단계 3. 키 재료 암호화

--wrapping-algorithm RSAES_OAEP_SHA_1 \ --wrapping-key-spec RSA_2048

명령이 제대로 실행되면 다음과 비슷한 출력이 표시됩니다.

{ "ParametersValidTo": 1568290320.0, "PublicKey": "public key base64 encoded data", "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "ImportToken": "import token base64 encoded data"}

이 출력을 받으면 base64 인코딩된 퍼블릭 키와 가져오기 토큰을 별개의 파일에 저장합니다. 그러면 base64가 각 파일을 이진 데이터로 디코딩하고 새 파일에 이진 데이터를 저장합니다. 그러면 이러한 항목을 이후 단계에 사용할 준비가 완료됩니다. 다음 예를 참조하십시오.

이후 단계에 사용할 퍼블릭 키 및 가져오기 토큰을 준비하려면

1. 퍼블릭 키의 base64 인코딩된 데이터(다음으로 표시됨) 복사 public key base64 encoded data예제 출력의 를 사용하여 새 파일에 붙여 넣은 다음 파일을 저장합니다. PublicKey.b64처럼 파일을설명하는 이름을 지정합니다.

2. OpenSSL를 사용하여 파일의 콘텐츠를 base64로 디코딩하고 디코딩된 데이터를 새 파일에 저장합니다. 다음 예제는 앞의 단계에서 저장한 파일(PublicKey.b64)의 데이터를 디코딩하고 출력을PublicKey.bin이라는 새 파일에 저장합니다.

$ openssl enc -d -base64 -A -in PublicKey.b64 -out PublicKey.bin

가져오기 토큰에 대해 이 두 단계를 반복한 후 단계 3. 키 재료 암호화 (p. 286) 단계로 넘어갑니다.

주요 자재 단계 가져오기 3: 키 재료 암호화퍼블릭 키와 가져오기 토큰을 다운로드 (p. 283)한 후 퍼블릭 키를 이용해 키 구성 요소를 암호화합니다. 키구성 요소는 이진 형식이어야 합니다.

일반적으로 하드웨어 보안 모듈(HSM)이나 키 관리 시스템에서 내보낼 때 키 구성 요소를 암호화합니다.이진 형식으로 키 구성 요소를 내보내는 방법은 HSM 또는 키 관리 시스템에 대한 문서를 참조하십시오.OpenSSL을 이용해 개념 증명 데모를 제공하는 다음 섹션을 참조할 수도 있습니다.

키 구성 요소를 암호화하려면, 퍼블릭 키와 가져오기 토큰을 다운로드 (p. 283)할 때 지정한 패딩옵션과 함께 암호화 스키마를 사용합니다(RSAES_OAEP_SHA_256, RSAES_OAEP_SHA_1 또는RSAES_PKCS1_V1_5).

예: openssl으로 키 재료 암호화다음 예는 사용하는 방법을 보여줍니다. openssl 256비트 대칭 키를 생성한 다음 이 키 자료를 암호화하여KMS로 가져오기 고객 마스터 키 (CMK) ).

Important

이 예제는 개념 증명 데모로만 제공됩니다. 프로덕션 시스템에서 보안이 강화된 메서드(상용 HSM또는 키 관리 시스템 등)를 사용해 키 구성 요소를 생성하고 저장합니다.이 예에서는 RSAES_OAEP_SHA_1 암호화 알고리즘이 가장 이상적입니다. 예제를 실행하기 전에2단계 (p. 283)의 래핑 알고리즘에 RSAES_OAEP_SHA_1을 사용했는지 확인합니다. 필요에 따라단계를 반복해 퍼블릭 키와 토큰을 다운로드하고 가져옵니다.

286

Page 295: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드단계 4: 키 구성 요소 가져오기

OpenSSL을 이용해 이진 키 구성 요소를 생성하고 AWS KMS로 가져오기 위해 암호화하려면

1. 다음 명령을 이용해 256 비트 대칭 키를 생성하고 PlaintextKeyMaterial.bin이라는 파일에 저장합니다.

$ openssl rand -out PlaintextKeyMaterial.bin 32

2. 다음 명령을 사용하여 이전에 다운로드한 공개 키로 키 자료를 암호화하십시오(참조). 퍼블릭 키 및 가져오기 토큰 다운로드(AWS KMS API) (p. 285))를 클릭하고 EncryptedKeyMaterial.bin. 교체PublicKey.bin 공용 키를 포함하는 파일의 이름을 지정합니다. 콘솔에서 공개 키를 다운로드한 경우 이 파일은 래핑키_CMK_key_ID_timestamp 예를 들어 wrappingKey_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909) ).

$ openssl rsautl -encrypt \ -in PlaintextKeyMaterial.bin \ -oaep \ -inkey PublicKey.bin \ -keyform DER \ -pubin \ -out EncryptedKeyMaterial.bin

단계 4: 키 구성 요소 가져오기 (p. 287) 항목으로 이동합니다.

키 구성 요소 가져오기 4단계: 키 구성 요소 가져오기키 구성 요소를 암호화한 후 (p. 286) AWS KMS(고객 마스터 키)에서 사용할 키 구성 요소를 가져올 수 있습니다.CMK 키 구성 요소를 가져오려면 단계 3. 키 재료 암호화 (p. 286)에서 암호화한 키 구성 요소와 단계 2: 퍼블릭 키 및 가져오기 토큰 다운로드 (p. 283)에서 다운로드한 가져오기 토큰을 업로드합니다. 퍼블릭 키와 가져오기 토큰을 다운로드할 때 지정한 것과 동일한 CMK로 키 구성 요소를 가져와야 합니다.

키 구성 요소를 가져올 때 선택적으로 키 구성 요소의 만료 시간을 지정할 수 있습니다. 키 구성 요소가 만료되면 AWS KMS는 키 구성 요소를 삭제하고 CMK를 사용할 수 없게 됩니다. 를 다시 사용하려면 키 구성 요소를 다시 가져와야 합니다.CMK

키 구성 요소를 성공적으로 가져오면 CMK의 키 상태가 활성으로 변경되고 CMK를 사용할 수 있습니다.

AWS Management 콘솔 또는 AWS KMS API를 이용해 키 구성 요소를 가져올 수 있습니다. HTTP 요청을 하거나 AWS SDKs 또는 명령줄 도구 중 하나를 통해 직접 API를 사용할 수 있습니다.

키 구성 요소를 가져올 때 ImportKeyMaterial 항목을 (p. 202) 로그에 추가하여 AWS CloudTrail 작업을 기록합니다.ImportKeyMaterial 항목은 CloudTrail 콘솔 또는 AWS KMS API 중 어떤 것을 사용하든 상관없이 동일합니다.AWS KMS

키 구성 요소 가져오기(console)AWS Management 콘솔을 사용해 키 구성 요소를 가져올 수 있습니다.

1. Download wrapping key and import token(래핑 키 및 가져오기 토큰 다운로드) 페이지에 있는 경우에는Step 8(으)로 넘어갑니다.

2. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/kms에서 AWS KeyManagement Service(AWS KMS) 콘솔을 엽니다.

3. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.4. 탐색 창에서 고객 관리형 키를 선택합니다.5. 퍼블릭 키와 가져오기 토큰을 다운로드한 CMK의 키 ID 또는 별칭을 선택합니다.

287

Page 296: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 구성 요소 가져오기(AWS KMS API)

6. Cryptographic configuration(암호화 구성) 탭을 선택하고 해당 값을 봅니다. 탭은 CMK일반 구성 섹션 아래에 있는 에 대한 세부 정보 페이지에 있습니다.

키 유형CMKs이 Symmetric(대칭)이고 Origin(오리진)이 EXTERNAL(외부)인 로만 키 구성 요소를 가져올 수 있습니다. 가져온 키 구성 요소로 CMKs를 생성하는 방법에 대한 자세한 내용은 AWS KeyManagement Service(AWS KMS)에서 키 구성 요소 가져오기 (p. 277) 단원을 참조하십시오.

7. Key material(키 구성 요소) 탭을 선택한 다음 Upload key material(키 구성 요소 업로드)을 선택합니다.

Key material(키 구성 요소) 탭은 Key type(키 유형)CMKs이 Symmetric(대칭)이고 Origin(오리진) 값이EXTERNAL(외부)인 에만 표시됩니다.

8. Encrypted key material and import token(암호화된 키 구성 요소 및 가져오기 토큰) 섹션의 Wrappedkey material(래핑된 키 구성 요소)에서 파일 선택을 선택합니다. 그런 다음, 래핑(암호화)된 키 구성 요소가 포함된 파일을 업로드합니다.

9. Encrypted key material and import token(암호화된 키 구성 요소 및 가져오기 토큰) 섹션의 Importtoken(토큰 가져오기)에서 파일 선택을 선택합니다. 다운로드한 (p. 284) 가져오기 토큰이 포함된 파일을 업로드합니다.

10. Expiration option(만료 옵션) 섹션에서 키 구성 요소의 만료 여부를 결정합니다. 만료 날짜와 시간을 설정하려면 Key material expires(키 구성 요소 만료)를 선택하고 캘린더를 사용해 날짜와 시간을 선택합니다.

11. [Finish] 또는 [Upload key material]을 선택합니다.

키 구성 요소 가져오기(AWS KMS API)API를 사용하여 키 구성 요소를 가져오려면 AWS KMS 요청을 보냅니다.ImportKeyMaterial 다음 예에서는AWS CLI에서 이 작업을 수행하는 방법을 보여줍니다.

이 예시에서는 키 구성 요소의 만료 시간을 지정합니다. 만료일 없이 키 구성 요소를 가져오려면KEY_MATERIAL_EXPIRES를 KEY_MATERIAL_DOES_NOT_EXPIRE로 바꾸고 --valid-to 파라미터를 생략합니다.

이 예제를 사용하려면

1. 을 퍼블릭 키와 가져오기 토큰을 다운로드할 때 사용한1234abcd-12ab-34cd-56ef-1234567890ab의 키 ID로 바꿉니다.CMK 를 식별하려면 키 ID 또는ARN을 사용합니다.CMK 이 작업에 대한 별칭을 사용할 수 없습니다.

2. EncryptedKeyMaterial.bin을 암호화된 키 구성 요소가 포함된 파일 이름으로 바꿉니다.3. ImportToken.bin을 가져오기 토큰이 포함된 파일 이름으로 바꿉니다.

$ aws kms import-key-material --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --encrypted-key-material fileb://EncryptedKeyMaterial.bin \ --import-token fileb://ImportToken.bin \ --expiration-model KEY_MATERIAL_EXPIRES \ --valid-to 2019-09-17T12:00:00-08:00

가져온 키 구성 요소 삭제키 구성 요소를 가져올 때 만료 날짜를 지정할 수 있습니다. 키 구성 요소가 만료되면 AWS KMS는 키 구성요소를 삭제하고 고객 마스터 키(CMK)를 사용할 수 없게 됩니다. 온디맨드 방식으로 키 구성 요소를 삭제할 수도 있습니다. 키 구성 요소가 만료될 때까지 기다리거나 수동으로 삭제하든, 결과는 동일합니다. AWSKMS는 키 구성 요소를 삭제하고, CMK의 키 상태 (p. 175)는 가 가져오기 보류 중으로 변경되며, CMK를 사용할 수 없습니다. 를 다시 사용하려면 동일한 키 구성 요소를 다시 가져와야 합니다.CMK

288

Page 297: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 구성 요소 삭제가 AWS KMS와 통

합된 AWS 서비스에 미치는 영향

키 구성 요소를 삭제하면 CMK에 즉시 영향을 미치지만, 동일한 키 구성 요소를 (p. 280)로 다시 가져와서CMK 키 구성 요소의 삭제를 되돌릴 수 있습니다. 반대로 CMK 삭제는 되돌릴 수 없습니다. 키 삭제를 예약하고 필요한 대기 기간이 만료되면 (p. 266)는 키 구성 요소 및 AWS KMS에 연결된 모든 메타데이터를 삭제합니다.CMK

AWS Management 콘솔 또는 AWS KMS API를 이용해 키 구성 요소를 삭제할 수 있습니다. HTTP 요청을 만들거나 AWS SDK, AWS Command Line Interface() 또는 AWS CLIPowerShell용 AWS 도구을 사용하여 API를 직접 사용할 수 있습니다.

AWS KMS는 가져온 키 구성 요소를 삭제할 때와 AWS CloudTrail가 만료된 키 구성 요소를 삭제할 때 로그에 항목을 기록합니다.AWS KMS (p. 190)

주제• 키 구성 요소 삭제가 AWS KMS와 통합된 AWS 서비스에 미치는 영향 (p. 289)• 키 구성 요소 삭제(console) (p. 289)• 키 구성 요소 삭제(AWS KMS API) (p. 290)

키 구성 요소 삭제가 AWS KMS와 통합된 AWS 서비스에 미치는 영향키 구성 요소를 삭제하면 CMK를 즉시 사용할 수 없게 됩니다. 그러나 AWS 서비스에서 사용 중인 어떤 데이터 키 (p. 5)도 즉시 영향을 받지 않습니다. 즉, 키 구성 요소를 삭제하면 AWS로 보호되는 모든 데이터 및CMK 리소스에 즉시 영향을 주지는 않지만 결국 영향을 받게 됩니다.

여러 AWS 서비스가 AWS KMS와 통합되어 데이터를 보호합니다. Amazon EBS 및 와 같은 일부 서비스는Amazon Redshift에서 고객 마스터 키( (p. 3))를 사용하여 CMK데이터 키AWS KMS를 생성한 다음 데이터 키를 사용하여 데이터를 암호화합니다.??? (p. 5) 보호하는 데이터가 현재 사용 중인 동안에는 이러한 일반 텍스트 데이터 키가 메모리에 유지됩니다.

예를 들어 다음 시나리오를 고려해 보십시오.

1. 암호화된 EBS 볼륨을 생성하고 가져온 키 구성 요소로 CMK를 지정합니다. Amazon EBS는 AWS KMS를사용하여 해당 볼륨에 대한 CMK암호화된 데이터 키를 생성하도록 에 요청합니다. Amazon EBS는 해당볼륨으로 암호화된 데이터 키를 저장합니다.

2. EBS 볼륨을 EC2 인스턴스에 연결하면 Amazon EC2가 AWS KMS를 사용하여 EBS 볼륨의 암호화된 데이터 키를 암호화 해제하도록 CMK에 요청합니다. Amazon EC2는 하이퍼바이저 메모리에 일반 텍스트데이터 키를 저장하고 이를 사용하여 디스크 I/O를 EBS 볼륨으로 암호화합니다. EBS 볼륨이 EC2 인스턴스에 연결되어 있는 동안에는 데이터 키가 메모리에 유지됩니다.

3. 가져온 키 구성 요소를 CMK에서 삭제하면 사용할 수 없게 됩니다. 이로 인해 EC2 인스턴스나 EBS 볼륨에 즉시 영향이 미치지 않습니다. 그 이유는 볼륨이 인스턴스에 연결되어 있는 동안 Amazon EC2가 —이아닌CMK일반 텍스트 데이터 키를 사용하여 모든 디스크 I/O를 암호화하기 때문입니다.—

4. 단, 암호화된 EBS 볼륨이 EC2 인스턴스에서 삭제되면 Amazon EBS는 일반 텍스트 키를 메모리에서 제거합니다. 다음에 암호화된 EBS 볼륨이 EC2 인스턴스에 연결될 때 Amazon EBS가 CMK를 사용하여 볼륨의 암호화된 데이터 키를 해독할 수 없기 때문에 연결이 실패합니다. EBS 볼륨을 다시 사용하려면 동일한 키 구성 요소를 CMK로 다시 가져와야 합니다.

키 구성 요소 삭제(console)AWS Management 콘솔을 사용해 키 구성 요소를 삭제할 수 있습니다.

1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/kms에서 AWS KeyManagement Service(AWS KMS) 콘솔을 엽니다.

2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.

289

Page 298: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 구성 요소 삭제(AWS KMS API)

3. 탐색 창에서 고객 관리형 키를 선택합니다.4. 다음 중 하나를 수행합니다.

• 가져온 키 구성 요소가 있는 CMK의 확인란을 선택합니다. [Key actions], [Delete key material]을 선택합니다.

• 키 구성 요소를 가져온 CMK의 별칭 또는 키 ID를 선택합니다. Key material(키 구성 요소) 탭을 선택한다음 Delete key material(키 구성 요소 삭제)을 선택합니다.

5. 키 구성 요소를 삭제하고자 함을 확인한 후 [Delete key material]을 선택합니다. 키 상태CMK에 해당하는 의 상태가 (p. 175)Pending import(가져오기 보류 중)으로 변경됩니다.

키 구성 요소 삭제(AWS KMS API)API를 사용하여 키 구성 요소를 삭제하려면 AWS KMS 요청을 보냅니다.DeleteImportedKeyMaterial 다음 예에서는 AWS CLI에서 이 작업을 수행하는 방법을 보여줍니다.

키 구성 요소를 삭제할 1234abcd-12ab-34cd-56ef-1234567890ab의 키 ID로 CMK를 바꿉니다. 의 키ID 또는 ARN을 사용할 수 있지만 이 작업에 대한 별칭을 사용할 수 없습니다.CMK

$ aws kms delete-imported-key-material --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

290

Page 299: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드

사용자 지정 키 스토어 사용AWS KMS는 ??? (p. 293) 클러스터에서 지원되는 AWS CloudHSM사용자 지정 키 스토어를 지원합니다.사용자 지정 키 스토어에서 AWS KMS 고객 마스터 키 (p. 3)(CMK)를 생성하면 AWS KMS가 추출할 수 없는CMK용 키 구성 요소를 사용자가 소유 및 관리하는 AWS CloudHSM 클러스터에 생성하여 저장합니다. 사용자 지정 키 스토어에서 CMK를 사용하는 경우 암호화 작업 (p. 315)이 클러스터의 HSMs에서 수행됩니다.이 기능은 AWS KMS의 편의성 및 광범위한 통합 기능과 AWS 계정의 추가 AWS CloudHSM 클러스터 컨트롤을 하나로 결합합니다.

AWS KMS는 사용자 지정 키 스토어를 생성, 사용 및 관리할 수 있도록 전체 콘솔 및 API를 지원합니다. 사용자 지정 키 스토어에서 CMKs를 생성할 때 다른 CMK와 마찬가지로 사용할 수 있습니다. 예를 들어, CMKs를사용하여 데이터 키를 생성하고 데이터를 암호화할 수 있습니다. 고객 관리형 CMKs를 지원하는 AWS 서비스와 함께 사용자 지정 키 스토어에서 CMKs를 사용할 수도 있습니다.

사용자 지정 키 스토어가 필요할까요?

대부분 사용자는 FIPS 140-2 검증 암호화 모듈이 보호하는 기본 AWS KMS 키 스토어를 통해 보안 요구 사항을 충족합니다. 유지 관리를 책임지는 계층을 추가하거나 추가 서비스에 의존할 필요가 없습니다.

하지만 조직이 다음 요구 사항을 가지고 있는 경우에는 사용자 지정 키 스토어를 생성하는 방법을 고려할 수있습니다.

• 키 구성 요소는 공유 환경에 저장할 수 없습니다.• 키 구성 요소는 독립적인 보조 감사 경로를 따라야 합니다.• 키 구성 요소를 생성 및 저장하는 HSMs은 FIPS 140-2 레벨 3에서 인증되어야 합니다.

사용자 지정 키 스토어는 어떻게 작동합니까?

각각의 사용자 지정 키 스토어는 AWS 계정의 AWS CloudHSM 클러스터와 연결됩니다. 사용자 지정 키 스토어를 클러스터에 연결할 때 AWS KMS는 이러한 연결을 지원하는 네트워크 인프라를 생성합니다. 그런다음, 클러스터에서 전용 CU(Crypto User) 계정 (p. 294)의 자격 증명을 사용하여 클러스터의 키 AWSCloudHSM 클라이언트에 로그인합니다.

사용자 지정 키 스토어는 AWS KMS에서, HSM 클러스터는 AWS CloudHSM에서 생성 및 관리합니다. 사용자 지정 키 스토어에서 고객 마스터 키(CMKs)를 생성할 때 AWS KMS에서 CMKs를 보고 관리합니다.AWSKMS 그러나 클러스터의 다른 키에서와 마찬가지로 AWS CloudHSM에서 키 구성 요소를 확인 및 관리할 수도 있습니다.

291

Page 300: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드

사용자 지정 키 스토어에서 가 생성한 키 구성 요소로 CMKs대칭 (p. 310)를 생성AWS KMS할 수 있습니다. 그런 다음 동일한 기법을 사용하여 CMKs 키 스토어의 CMKs에 사용하는 사용자 지정 키 스토어에서 AWS KMS를 보고 관리합니다. 및 키 정책을 사용하여 액세스를 제어하고, 태그 및 별칭을 생성하며,IAM를 활성화 및 비활성화하고, 키 삭제를 예약할 수 있습니다.CMKs 를 CMKs암호화 작업에 사용하고 (p. 315)와 통합되는 AWS 서비스와 함께 사용할 수 있습니다.AWS KMS

또한 AWS CloudHSM 생성 및 삭제와 백업 관리를 포함하여 HSMs 클러스터를 완벽하게 제어할 수 있습니다. 클라이언트 및 지원되는 소프트웨어 라이브러리를 사용하여 AWS CloudHSM에 대한 키 구성 요소를 확인, 감사 및 관리할 수 있습니다.CMKs 사용자 지정 키 스토어의 연결이 해제되어 있으면 AWS KMS가 해당키 스토어에 액세스할 수 없으며, 사용자는 암호화 작업 시 사용자 지정 키 스토어의 CMKs를 사용할 수 없습니다. 이러한 추가적인 제어 계층 덕분에 사용자 지정 키 스토어는 이를 필요로 하는 조직에게 강력한 솔루션이 될 수 있습니다.

어디에서 시작합니까?

사용자 지정 키 스토어를 생성 및 관리하려면 AWS KMS 및 AWS CloudHSM의 기능을 사용합니다.

1. AWS CloudHSM에서 시작합니다. 활성 AWS CloudHSM 클러스터를 생성하거나 기존 클러스터를 선택합니다. 클러스터는 서로 다른 가용 영역에 최소 2개의 활성 HSMs가 있어야 합니다. 그러면 AWS KMS에서해당 클러스터에 대한 전용 CU(Crypto User) 계정 (p. 294)을 생성할 수 있습니다.

2. AWS KMS에서 선택한 AWS CloudHSM 클러스터에 연결된 사용자 지정 키 스토어를 생성 (p. 297)합니다. AWS KMS는 사용자 지정 키 스토어를 생성, 확인, 편집 및 삭제할 수 있도록 완벽한 관리 인터페이스 (p. 300)를 제공합니다.

3. 사용자 지정 키 스토어를 사용할 준비가 되면 이를 연결된 AWS CloudHSM 클러스터에 연결 (p. 304)합니다. AWS KMS는 연결을 지원하는 데 필요한 네트워크 인프라를 생성합니다. 그런 다음, 클러스터에서키 구성 요소를 생성 및 관리할 수 있도록 전용 CU(Crypto User) 계정 자격 증명을 사용해 클러스터에 로그인합니다.

4. 이제 사용자 지정 키 스토어에서 대칭 CMKs를 생성 (p. 310)할 수 있습니다. 를 생성할 때 사용자 지정키 스토어를 지정하기만 하면 됩니다.CMK

어떤 지점에서 막히면 사용자 지정 키 스토어 문제 해결 (p. 320) 주제에서 도움말을 참조할 수 있습니다. 문제가 해결되지 않은 경우 이 가이드의 각 페이지 하단에 있는 피드백 링크를 사용하거나 AWS KeyManagement Service 토론 포럼에 질문을 게시합니다.

할당량

AWS 계정 또는 리전의 사용자 지정 키 스토어 수에 대한 리소스 할당량은 없습니다. 그러나 AWSCloudHSM 할당량은 각 계정 및 리전의 AWS CloudHSM 클러스터 수에 대한 할당량과 AWS사용자 지정 키스토어에서 AWS KMS 사용에 대한 CMKs 할당량이 있습니다. (p. 400)

Regions

AWS KMS는 AWS KMS 및 AWS CloudHSM 모두 사용할 수 있는 모든 AWS 리전에서 사용자 지정 키 스토어를 지원합니다. 각 서비스가 지원되는 AWS 리전의 목록은 Amazon Web Services 일반 참조에서 AWSKey Management Service 엔드포인트 및 할당량 및 AWS CloudHSM 엔드포인트 및 할당량 단원을 참조하십시오.

지원되지 않는 기능

사용자 지정 키 스토어는 비대칭 CMKs (p. 157), 비대칭 데이터 키 페어 (p. 6) 또는 CMKs가 가져온 키 구성요소 (p. 277)와 함께 지원되지 않으며, 사용자 지정 키 스토어의 에서 (p. 170)자동 키 교체CMK를 활성화할수 없습니다.

주제• 사용자 지정 키 스토어란 무엇입니까? (p. 293)• 사용자 지정 키 스토어에 대한 액세스 제어 (p. 295)

292

Page 301: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사용자 지정 키 스토어란 무엇입니까?

• 사용자 지정 키 스토어 생성 (p. 297)• 사용자 지정 키 스토어 관리 (p. 300)• 관리 CMKs 사용자 지정 키 스토어에서 (p. 310)• 사용자 지정 키 스토어 문제 해결 (p. 320)

사용자 지정 키 스토어란 무엇입니까?이 주제에서는 AWS KMS 사용자 지정 스토어에서 사용되는 일부 개념들을 설명합니다.

주제• AWS KMS 사용자 지정 키 스토어 (p. 293)• AWS CloudHSM 클러스터 (p. 293)• kmsuser CU(Crypto User) (p. 294)• CMKs 사용자 지정 키 스토어에서 (p. 294)

AWS KMS 사용자 지정 키 스토어키 스토어는 암호화 키를 저장하기에 안전한 장소입니다. AWS KMS의 기본 키 스토어는 저장하는 키를 생성 및 관리하는 방법도 지원합니다. 기본적으로 고객 마스터 키 (CMKs)에서 AWS KMS 하드웨어 보안 모듈(hsm)에 의해 생성되고 보호됩니다. FIPS 140-2 인증 암호화 모듈. The CMKs 모듈을 암호화하지 않은 상태로 두지 마십시오.

그러나 hsms를 더 많이 제어할 필요가 있으면 다음과 같은 사용자 지정 키 저장소를 만들 수 있습니다. FIPS140-2 레벨 3 hsm in an AWS CloudHSM 소유하고 관리하는 클러스터입니다.

사용자 지정 키 스토어는 AWS CloudHSM 클러스터에 연결된 AWS KMS 리소스입니다. 여러분이 AWSKMS CMK 사용자 지정 키 스토어에서 AWS KMS 연관된 AWS CloudHSM 클러스터. 이 키 구성 요소는HSM을 암호화되지 않은 상태로 두지 않습니다. 귀하가 CMK 사용자 지정 키 스토어에서 암호화 작업은 클러스터의 hsm에서 수행됩니다.

사용자 지정 키 스토어는 AWS KMS의 편리하고 포괄적인 키 관리 인터페이스와 AWS 계정의 AWSCloudHSM 클러스터가 제공하는 추가적인 컨트롤을 하나로 결합합니다. 이 통합 기능은 CMKs 에서 AWSKMS 클러스터, hsm 및 백업을 관리하는 등 주요 자료를 저장하는 hsm을 완벽하게 제어할 수 있습니다. 귀하는 AWS KMS 콘솔 및 API를 사용하여 맞춤형 키 스토어 및 CMKs. 또한 AWS CloudHSM 콘솔, API, 클라이언트 소프트웨어 및 연결 소프트웨어 라이브러리를 사용하여 연결 클러스터를 관리할 수도 있습니다.

사용자 지정 키 스토어의 보기 및 관리 (p. 300), 속성 편집 (p. 302), AWS CloudHSM 클러스터에서의 연결 및 연결 해제 (p. 304)가 가능합니다. 필요한 경우 사용자 지정 키 저장소 삭제 (p. 308)을(를) 먼저 삭제해야 합니다. CMKs 사용자 지정 키 스토어에서 유예 기간이 만료될 때까지 기다리고 있습니다. 사용자 지정 키 스토어를 삭제하면 AWS KMS에서 리소스가 제거되지만, AWS CloudHSM 클러스터에는 영향이 미치지 않습니다.

AWS CloudHSM 클러스터모든 AWS KMS 사용자 지정 키 스토어가 하나의 AWS CloudHSM 클러스터에 연결됩니다. 여러분이 고객마스터 키 (CMK)를 사용해 AWS KMS 관련 클러스터의 키 자료를 만듭니다. 귀하가 CMK 사용자 지정 키 스토어에서 암호화 작업은 관련 클러스터에서 수행됩니다.

각각의 AWS CloudHSM 클러스터는 오직 하나의 사용자 지정 키 스토어에만 연결될 수 있습니다. 사용자가선택한 클러스터는 다른 키 스토어에 연결되거나 연결 클러스터와 백업 기록을 공유할 수 없습니다. 클러스터는 초기화 및 활성화가 필요하며, AWS 계정 및 리전에서 AWS KMS 사용자 지정 키 스토어로서 존재해야합니다. 새 클러스터를 생성하거나 기존 클러스터를 사용할 수 있습니다. AWS KMS에서는 클러스터의 독점

293

Page 302: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드kmsuser CU(Crypto User)

적 사용이 필요하지 않습니다. 만들려면 CMKs 사용자 지정 키 스토어에서 연결된 클러스터는 최소 2개의 활성 hsm을 포함해야 합니다. 다른 모든 작업에서는 오직 하나의 HSM만 필요합니다.

사용자 지정 키 스토어를 생성할 때 클러스터를 지정할 수 있지만 이를 변경할 수는 없습니다. 한편 다른 클러스터와 백업 기록을 공유하는 모든 클러스터를 대체할 수 있습니다. 이렇게 하면 필요 시 클러스터를 삭제하고 이를 백업 중 하나에서 생성된 클러스터로 바꿀 수 있습니다. 사용자는 사용자 및 키를 관리하고 HSM을 생성 및 삭제하며 백업을 관리할 수 있도록 연결 AWS CloudHSM 클러스터에 대한 완벽한 제어권을 보유합니다.

사용자 지정 키 스토어를 사용할 준비가 되면 연결 AWS CloudHSM 클러스터에 이를 연결합니다. 언제든지 사용자 지정 키 스토어를 연결 및 연결 해제 (p. 304)할 수 있습니다. 사용자 지정 키 스토어가 연결되면CMKs. 연결이 끊어지면 사용자 정의 키 스토어와 CMKs. 하지만 여러분은 CMKs 또는 CMKs 암호화 작업을위한 사용자 지정 키 저장소를 참조하십시오.

kmsuser CU(Crypto User)관련된 주요 자료를 생성하고 관리하려면 AWS CloudHSM 클러스터를 대신하여 AWS KMS 전용 AWSCloudHSM crypto 사용자 클러스터 내 CU) kmsuser. kmsuser CU는 클러스터의 모든 hsm과 자동으로 동기화되고 클러스터 백업에 저장되는 표준 CU 계정입니다.

사용자 지정 키 스토어를 생성하기 전에 만들기 kmsuser CU 계정 (p. 297) 여러분의 AWS CloudHSM클러스터를 사용하여 생성사용자 cloudhsm_mgmt_util 명령을 실행합니다. 그리고 사용자 지정 키 스토어를 생성 (p. 297)할 때 kmsuser 계정 암호를 AWS KMS에 제공합니다. 사용자 지정 키 스토어를 연결 (p. 304)하면 AWS KMS가 kmsuser CU로서 클러스터에 로그인하고 암호를 교체합니다.

사용자 지정 키 스토어가 연결되어 있는 한, AWS KMS는 kmsuser로 로그인한 상태를 유지합니다. 이러한CU 계정을 다른 목적으로 사용해서는 안 됩니다. 그러나 kmsuser CU 계정에 대한 궁극적인 제어권은 보유할 수 있습니다. 언제든지 kmsuser가 소유하는 키의 키 핸들을 검색 (p. 319)할 수 있습니다. 필요한 경우사용자 지정 키 스토어의 연결을 해제 (p. 304)하고, kmsuser 암호를 변경하고, kmsuser로 클러스터에 로그인 (p. 325)하고, kmsuser가 소유하는 키를 확인 및 관리할 수 있습니다.

kmsuser CU 계정 생성에 대한 지침은 kmsuser CU(Crypto User) 생성 (p. 297)을 참조하십시오.

CMKs 사용자 지정 키 스토어에서귀하는 AWS Management 콘솔 또는 AWS KMS API를 사용하여 고객 마스터 키 (p. 3) (CMK)를 참조하십시오. 귀하가 사용하는 것과 동일한 기법을 사용합니다. AWS KMS CMK. 한 가지 차이라면 사용자 지정 키 스토어를 식별하고 키 구성 요소의 오리진을 AWS CloudHSM 클러스터로 지정해야 한다는 점입니다.

귀하가 만들기 CMK 사용자 지정 키 스토어에서 (p. 310), AWS KMS 생성 CMK 에서 AWS KMS 관련 클러스터에 256비트, 영구, 비휴대용 AES(Advanced Encryption Standard) 대칭 백킹 키를 생성합니다. AWSCloudHSM이 다양한 유형의 대칭 및 비대칭 키를 지원하지만, AWS KMS와 사용자 지정 키 스토어는 AES대칭 키만 지원합니다.

귀하는 CMKs 의 사용자 지정 키 스토어에서 AWS KMS 콘솔 및 콘솔 옵션을 사용하여 사용자 지정 키 저장소 ID를 표시합니다. 또한 DescribeKey 작업을 사용해 사용자 지정 키 스토어 ID및 AWS CloudHSM 클러스터 ID를 찾을 수도 있습니다.

The CMKs 고객 맞춤형 키 스토어에서 CMKs 에서 AWS KMS. 승인된 사용자에게는 CMKs. 동일한 콘솔 절차와 API 작업을 사용하여 CMKs 사용자 지정 키 스토어에서. 여기에는 활성화 및 비활성화가 포함됩니다.CMKs, 태그 및 별칭 생성 및 사용, 설정 및 변경 IAM 및 주요 정책. 귀하는 CMKs 암호화 작업을 위한 사용자지정 키 저장소에서 통합 AWS 서비스 (p. 341) 고객 관리를 지원하는 CMKs. 하지만, 자동 키 회전 (p. 170)또는 키 재료 가져오기 (p. 277) a CMK 사용자 지정 키 스토어에서.

동일한 프로세스를 사용하여 스케줄 삭제 (p. 320) of a CMK 사용자 지정 키 스토어에서. 대기 기간 만료후, AWS KMS 삭제 CMK KMS. 그런 다음, CMK 관련 AWS CloudHSM 클러스터. 하지만 클러스터 및 백업에서 수동으로 불필요한 키 구성 요소를 삭제 (p. 324)하고 싶어할 수 있습니다.

294

Page 303: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사용자 지정 키 스토어에 대한 액세스 제어

사용자 지정 키 스토어에 대한 액세스 제어IAM 정책을 사용하여 AWS KMS 사용자 지정 키 스토어 및 AWS CloudHSM 클러스터에 대한 액세스를 제어합니다. 사용할 수 있습니다. IAM 정책 및 주요 정책을 고객 마스터 키 (CMKs)를 참조하십시오. 사용자, 그룹및 역할에 수행할 가능성이 있는 작업에 필요한 권한만 제공하는 것이 좋습니다.

주제• 사용자 지정 키 스토어 관리자 및 사용자에 대한 권한 부여 (p. 295)• AWS KMS에 AWS CloudHSM 및 Amazon EC2 리소스를 관리할 수 있는 권한 부여 (p. 295)

사용자 지정 키 스토어 관리자 및 사용자에 대한 권한부여사용자 지정 키 스토어를 설계할 때는 이를 사용하고 관리하는 보안 주체가 필요한 권한만 갖도록 해야 합니다. 다음 목록에는 사용자 지정 키 스토어 관리자 및 사용자에게 필요한 최소 권한이 설명되어 있습니다.

• 사용자 지정 키 스토어를 생성 및 관리하는 보안 주체가 사용자 지정 키 스토어의 API 작업을 사용하려면다음 권한이 필요합니다.• cloudhsm:DescribeClusters

• kms:CreateCustomKeyStore

• kms:ConnectCustomKeyStore

• kms:DisconnectCustomKeyStore

• kms:UpdateCustomKeyStore

• kms:DeleteCustomKeyStore

• kms:DescribeCustomKeyStores

• iam:CreateServiceLinkedRole

• 사용자 지정 키 스토어에 연결된 AWS CloudHSM 클러스터를 생성 및 관리하는 보안 주체에게는 AWSCloudHSM 클러스터를 생성하고 초기화하는 권한이 필요합니다. 여기에는 가상 사설 클라우드를 생성 또는 사용하고 서브넷을 생성하며 Amazon EC2 인스턴스를 생성하는 권한이 포함되어 있습니다. 보안 주체가 HSM을 생성 및 삭제하고 백업을 관리해야 하는 경우도 있습니다. 필요한 권한 목록은 다음을 참조하십시오. AWS cloudhsm에 필요한 사용자 권한 제한 in the AWS CloudHSM User Guide.

• 생성 및 관리하는 책임 고객 마스터 키 (CMKs사용자정의 키 저장소에 있는 )은 CMK 에서 AWS KMS. 예를 들어 이러한 보안 주체에게는 kms:CreateKey 권한을 가진 IAM 정책이 필요합니다. 추가 권한은 필요하지 않습니다. The 기본 키 정책 (p. 67) for CMKs 사용자 지정 키 저장소에서 기본 키 정책과 동일합니다.CMKs 에서 AWS KMS.

• 이를 사용하는 책임자 CMKs 사용자 지정 키 스토어에서 암호화 작업 (p. 315) 암호화 작업을 수행할 수있는 권한이 필요합니다. CMK과 같은 kms:암호 해독. IAM 또는 키 정책에서 이러한 권한을 제공할 수 있습니다. 하지만, CMK 사용자 지정 키 스토어에서.

AWS KMS에 AWS CloudHSM 및 Amazon EC2 리소스를 관리할 수 있는 권한 부여사용자 지정 키 스토어를 지원하려면 AWS KMS가 AWS CloudHSM 클러스터에 대한 정보를 얻을 수 있는 권한이 필요합니다. 사용자 지정 키 스토어를 AWS CloudHSM 클러스터에 연결하는네트워크 인프라를 생성할 수 있는 권한도 필요합니다. 이러한 권한을 얻기 위해 AWS KMS가AWS 계정에서 AWSServiceRoleForKeyManagementServiceCustomKeyStores 서비스 연결 역할을 생성합니다. 사용자 지정 키 스토어를 생성하는 사용자는 서비스 연결 역할을 생성할 수 있는iam:CreateServiceLinkedRole 권한을 가지고 있어야 합니다.

295

Page 304: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS에 AWS CloudHSM 및 AmazonEC2 리소스를 관리할 수 있는 권한 부여

주제• AWS KMS 서비스 연결 역할 정보 (p. 296)• 서비스 연결 역할 생성 (p. 296)• 서비스 연결 역할 설명 편집 (p. 296)• 서비스 연결 역할 삭제 (p. 297)

AWS KMS 서비스 연결 역할 정보서비스 연결 역할은 사용자를 대신해 다른 AWS 서비스를 호출할 수 있는 권한을 한 AWS 서비스에 제공하는 IAM 역할입니다. 이 역할은 복잡한 IAM 정책을 생성 및 유지 관리할 필요 없이 여러 통합 AWS 서비스의기능을 손쉽게 사용할 수 있도록 설계되었습니다.

사용자 지정 키 스토어에서 AWS KMS는 AWSKeyManagementServiceCustomKeyStoresServiceRolePolicy정책을 통해 AWSServiceRoleForKeyManagementServiceCustomKeyStores 서비스 연결 역할을 생성합니다. 이 정책은 이 역할에 다음 권한을 부여합니다.

• cloudhsm:DescribeClusters• ec2:AuthorizeSecurityGroupIngress• ec2:CreateNetworkInterface• ec2:CreateSecurityGroup• ec2:DeleteSecurityGroup• ec2:DescribeSecurityGroups• ec2:RevokeSecurityGroupEgress

AWSServiceRoleForKeyManagementServiceCustomKeyStores 서비스 연결 역할은cks.kms.amazonaws.com만 신뢰하기 때문에, AWS KMS만 이 서비스 연결 역할을 수임할 수 있습니다.이 역할은 AWS KMS에서 AWS CloudHSM 클러스터를 보고 사용자 지정 키 스토어를 관련 AWS CloudHSM클러스터에 연결하는 데 필요한 작업으로 제한됩니다. 이렇게 해도 AWS KMS에 어떤 추가 권한도 부여되지않습니다. 예를 들어 AWS KMS는 AWS CloudHSM 클러스터, HSM 또는 백업을 생성, 관리 또는 삭제할 권한을 가지고 있지 않습니다.

Regions

사용자 지정 키 스토어 기능과 마찬가지로, AWSServiceRoleForKeyManagementServiceCustomKeyStores역할은 AWS KMS 및 AWS CloudHSM 모두 사용할 수 있는 모든 AWS 리전에서 지원됩니다. 각 서비스가 지원되는 AWS 리전의 목록은 Amazon Web Services 일반 참조에서 AWS Key Management Service 엔드포인트 및 할당량 및 AWS CloudHSM 엔드포인트 및 할당량 단원을 참조하십시오.

AWS 서비스가 서비스 연결 역할을 어떻게 사용하는가에 대한 자세한 내용은 IAM 사용 설명서의 서비스 연결 역할 사용을 참조하십시오.

서비스 연결 역할 생성역할이 이미 존재하지 않을 경우 사용자가 사용자 지정 키 스토어를 생성할 때 AWS KMS가 AWS 계정에서AWSServiceRoleForKeyManagementServiceCustomKeyStores 서비스 연결 역할을 자동으로 생성합니다.사용자는 이러한 서비스 연결 역할을 직접 생성하거나 다시 생성할 수 없습니다.

서비스 연결 역할 설명 편집AWSServiceRoleForKeyManagementServiceCustomKeyStores 서비스 연결 역할에서 역할 이름 또는 정책설명을 편집할 수 없지만, 역할 설명은 편집이 가능합니다. 지침은 서비스 연결 역할 편집 in the IAM 사용 설명서.

296

Page 305: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사용자 지정 키 스토어 생성

서비스 연결 역할 삭제AWS KMS 은(는) AWSServiceRoleForKeyManagementServiceCustomKeyStores 서비스가 결합된 역할 AWS 계정. 만약 사용자 정의 키 저장소를 모두 삭제했습니다. (p. 308) 새로 생성할 계획이 없습니다. 더 이상 이 서비스가 연결된 역할이 필요하지 않습니다. 활성 사용자 지정키 스토어가 없으면 AWS KMS는 이 역할을 수임하거나 해당 권한을 사용하지 않습니다. 하지만AWSServiceRoleForKeyManagementServiceCustomKeyStores 서비스 연결 역할을 삭제하기 위한 절차는현재 없습니다.

사용자 지정 키 스토어 생성계정에서 사용자 지정 키 스토어 (p. 293)를 하나 또는 여러 개 생성할 수 있습니다. 각 사용자 지정 키 스토어는 동일한 AWS 리전에 있는 AWS CloudHSM 클러스터 하나와 연결됩니다. 사용자 지정 키 스토어를 생성하기 전에 사전 조건을 수집 (p. 297)해야 합니다. 사용자 지정 키 스토어를 사용할 수 있으려면 먼저 AWSCloudHSM 클러스터에 이를 연결 (p. 304)해야 합니다.

Tip

사용자 지정 키 스토어를 당장 연결할 필요는 없습니다. 사용 준비가 될 때까지 연결 해제 상태로 남겨둘 수 있습니다. 하지만 적절하게 구성이 되었는지 확인하기 위해 이를 연결하고 (p. 304), 연결상태를 확인한 다음 (p. 300), 연결을 해제 (p. 304)하고 싶을 수 있습니다.

주제• 사전 조건 수집 (p. 297)• 사용자 지정 키 스토어 생성(콘솔) (p. 299)• 사용자 지정 키 스토어 생성(API) (p. 299)

사전 조건 수집각각의 AWS KMS 사용자 지정 키 스토어는 AWS CloudHSM 클러스터를 기반으로 합니다. 사용자 지정 키스토어를 생성하려면 다른 키 스토어에 아직 연결되어 있지 않은 활성 AWS CloudHSM 클러스터를 지정해야 합니다. 또한 AWS KMS가 사용자를 대신해 키를 생성하고 관리하는 데 사용할 수 있는 클러스터의 HSM에서 전용 CU(Crypto User)를 생성해야 합니다.

사용자 지정 키 스토어를 생성하기 전에 다음을 수행합니다.

AWS CloudHSM 클러스터 선택

모든 사용자 지정 키 스토어가 단 하나의 AWS CloudHSM 클러스터에 연결 (p. 293)됩니다. 여러분이 고객 마스터 키 (p. 3) (CMK)를 사용해 AWS KMS 생성 CMK ID 및 Amazon 리소스 이름(ARN)과 같은 메타데이터 AWS KMS. 그런 다음, 연결 클러스터의 HSM에서 키 구성 요소를 생성합니다. 새 AWSCloudHSM 클러스터를 생성하거나 기존 클러스터를 사용할 수 있습니다. AWS KMS에서 클러스터에 대한 독점적인 액세스가 필요하지 않습니다.

선택한 AWS CloudHSM 클러스터가 사용자 지정 키 스토어에 영구적으로 연결됩니다. 사용자 지정 키스토어를 생성한 후에 연결 클러스터의 클러스터 ID를 변경 (p. 302)할 수 있지만, 지정한 클러스터는원래 클러스터와 백업 기록을 공유해야 합니다. 관련이 없는 클러스터를 사용하려면 사용자 지정 키 스토어를 새로 생성해야 합니다.

선택한 AWS CloudHSM 클러스터는 다음 특성을 가지고 있어야 합니다.• 클러스터는 활성 상태여야 합니다.

클러스터를 생성해서 이를 초기화하고 플랫폼에 대한 AWS CloudHSM 클라이언트 소프트에어를설치한 다음, 클러스터를 활성화해야 합니다. 자세한 지침은 시작하기 섹션 AWS CloudHSM UserGuide.

297

Page 306: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사전 조건 수집

• 클러스터가 AWS KMS 사용자 지정 키 스토어와 동일한 계정 및 리전에 있어야 합니다. 한 리전에 있는 사용자 지정 키 스토어를 다른 리전의 클러스터와 연결할 수 없습니다. 다중 리전에서 키 인프라를생성하려면 각 리전에서 키 스토어와 클러스터를 생성해야 합니다.

• 클러스터가 계정의 다른 사용자 지정 키 스토어에 연결될 수 없습니다. 각각의 사용자 지정 키 스토어는 서로 다른 AWS CloudHSM 클러스터에 연결되어야 합니다. 사용자 지정 키 스토어에 이미 연결되어 있는 클러스터나 연결 클러스터와 백업 기록을 공유하는 클러스터를 지정할 수 없습니다. 백업 기록을 공유하는 클러스터들은 동일한 클러스터 인증서를 가지고 있습니다. 클러스터의 클러스터 인증서를 보려면 AWS CloudHSM 콘솔 또는 DescribeClusters 작업을 사용합니다.

• 클러스터는 개인 서브넷 에서 최소 2개의 가용성 영역 지역 내. AWS CloudHSM은 모든 가용 영역에서 지원되는 것은 아니기 때문에 해당 리전의 모든 가용 영역에서 프라이빗 서브넷을 생성하는 것이좋습니다. 기존 클러스터에 대한 서브넷을 재구성할 수는 없지만, 클러스터 구성에서 서브넷을 서로달리하여 백업으로부터 클러스터를 생성할 수 있습니다.

Important

사용자 지정 키 스토어를 만든 후에는 해당 AWS CloudHSM 클러스터에 대해 구성된 프라이빗 서브넷을 삭제하지 마십시오. AWS KMS가 클러스터 구성에서 서브넷을 모두 찾을 수 없는 경우, 사용자 지정 키 스토어에 연결 (p. 304)하려는 시도가 SUBNET_NOT_FOUND 연결오류 상태로 실패합니다. 자세한 내용은 연결 오류를 수정하는 방법 (p. 321) 단원을 참조하십시오.

• The 클러스터의 보안 그룹 (cloudhsm-클러스터-<cluster-id>-sg)에는 포트 2223-2225 에서 TCP트래픽을 허용하는 인바운드 규칙 및 아웃바운드 규칙이 포함되어야 합니다. 인바운드 규칙의 소스와아웃바운드 규칙의 대상이 보안 그룹 ID와 일치해야 합니다. 이들 규칙은 클러스터를 생성할 때 기본적으로 설정됩니다. 삭제하거나 변경하지 마십시오.

• 클러스터는 서로 다른 가용 영역에 활성 HSM을 최소 2개 포함하고 있어야 합니다. HSM의 수를 확인하려면 AWS CloudHSM 콘솔 또는 DescribeClusters 작업을 사용합니다. 필요한 경우 HSM을 추가할수 있습니다.

트러스트 앵커 인증서 찾기

사용자 지정 키 스토어를 생성할 때 AWS CloudHSM 클러스터의 트러스트 앵커 인증서를 AWS KMS로업로드해야 합니다. AWS KMS은 사용자 지정 키 스토어를 클러스터에 연결하기 위해 트러스트 앵커 인증서를 필요로 합니다.

모든 활성 AWS CloudHSM 클러스터는 트러스트 앵커 인증서를 갖습니다. 클러스터를 초기화할 때 이러한 인증서를 생성해서 customerCA.crt 파일에 저장하고 클러스터를 연결하는 호스트에 이를 복사합니다.

AWS KMS에 대한 kmsuser CU(Crypto User) 생성

사용자 지정 키 스토어를 관리하기 위해 AWS KMS는 선택한 클러스터의 kmsuser CU(CryptoUser) (p. 294) 계정에 로그인합니다. 사용자 지정 키 스토어를 생성하기 전에 먼저 kmsuser CU를 생성해야 합니다. 사용자 지정 키 스토어를 생성할 때 사용자는 AWS KMS에 kmsuser의 암호를 제공합니다. AWS KMS는 연결 AWS CloudHSM 클러스터에 사용자 지정 키 스토어를 연결할 때마다 kmsuser암호를 교체합니다.

Important

kmsuser CU를 생성할 때 2FA 옵션을 지정해서는 안 됩니다. 그렇게 하면 AWS KMS가 로그인을 할 수 없고 사용자 지정 키 스토어가 이 AWS CloudHSM 클러스터에 연결될 수 없습니다.일단 2FA를 지정하면 실행 취소를 할 수 없습니다. 대신에 CU를 삭제한 다음 다시 생성해야 합니다.

kmsuser CU를 생성하려면 다음 절차를 사용하십시오.

1. 에 설명된 대로 cloudhsm_mgmt_util 시작 cloudhsm_mgmt_util 실행 준비 섹션 AWS CloudHSMUser Guide.

2. 사용 생성사용자 cloudhsm_mgmt_util 명령을 사용하여 이름을 지정합니다. kmsuser. 암호는 7-32자 영숫자로 구성되어야 합니다. 대소문자가 구분되며 어떤 특수 문자도 포함해서는 안 됩니다.

298

Page 307: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사용자 지정 키 스토어 생성(콘솔)

예를 들어 다음 예제 명령은 암호가 kmsPswd인 kmsuser CU를 생성합니다.

aws-cloudhsm> createUser CU kmsuser kmsPswd

사용자 지정 키 스토어 생성(콘솔)AWS Management 콘솔에서 사용자 지정 키 스토어 (p. 293)를 생성할 때 워크플로우 과정에서 사전 조건 (p. 297)을 추가 및 생성할 수 있습니다. 그러나 이들을 미리 수집하면 프로세스가 더 빨라집니다.

1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/kms에서 AWS KeyManagement Service(AWS KMS) 콘솔을 엽니다.

2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 탐색 창에서 사용자 지정 키 스토어를 선택합니다.4. Create key store(키 스토어 생성)을 선택합니다.5. 기억하기 쉬운 사용자 지정 키 스토어 이름을 입력합니다. 이름은 계정에서 고유해야 합니다.6. 사용자 지정 키 스토어의 AWS CloudHSM 클러스터 (p. 293)를 선택합니다. 그렇지 않고 AWS

CloudHSM 클러스터를 새로 선택하려면 Create an AWS CloudHSM cluster(AWS CloudHSM 클러스터생성) 링크를 선택합니다.

사용자 지정 키 스토어를 연결하려면 클러스터가 요구 사항을 충족 (p. 297)해야 합니다. 메뉴에는 사용자 지정 키 스토어에 아직 연결되지 않은 계정 및 리전의 사용자 지정 키 스토어가 표시됩니다.

7. 파일 업로드를 선택한 다음, 선택한 AWS CloudHSM 클러스터의 트러스트 앵커 인증서를 업로드합니다. 클러스터를 초기화했을 때 생성한 customerCA.crt 파일입니다.

8. 선택한 클러스터에서 생성한 kmsuser CU(Crypto User) (p. 294)의 암호를 입력합니다.9. 생성을 선택합니다.

절차가 성공하면 계정 및 리전의 사용자 지정 키 스토어 목록에 새로운 사용자 지정 키 스토어가 나타납니다.절차가 실패하면 오류 메시지가 나타나서 문제를 설명하고 이를 수정할 수 있는 방법에 대한 도움말을 제공합니다. 도움이 더 필요한 경우 사용자 지정 키 스토어 문제 해결 (p. 320) 단원을 참조하십시오.

다음: 새 사용자 지정 키 저장소가 자동으로 연결되지 않습니다. 만들기 전에 고객 마스터 키 (CMKs) 사용자지정 키 스토어에서 사용자 지정 키 스토어 연결 (p. 304) 관련 AWS CloudHSM 클러스터.

사용자 지정 키 스토어 생성(API)CreateCustomKeyStore 작업은 계정 및 리전의 AWS CloudHSM 클러스터에 연결되는 새로운 사용자 지정키 스토어 (p. 293)를 생성합니다. 이 예제들은 AWS Command Line Interface(AWS CLI)를 사용하지만, 사용자는 어떤 지원되는 프로그래밍 언어라도 사용할 수 있습니다.

CreateCustomKeyStore 작업에서는 다음과 같은 파라미터 값이 필요합니다.

• CustomKeyStoreName – 계정에서 고유한 기억하기 쉬운 사용자 지정 키 스토어의 이름입니다.• CloudHsmClusterId – 사용자 지정 키 스토어를 연결하기 위해 요구 사항을 충족 (p. 297)하는 클러스터

의 클러스터 ID입니다.• KeyStorePassword – 지정된 클러스터의 kmsuser CU 계정 암호입니다.• TrustAnchorCertificate – 클러스터를 초기화할 때 생성한 customerCA.crt 파일의 콘텐츠입니다.

다음 예제는 가상의 클러스터 ID를 사용합니다. 명령을 실행하기 전에 유효한 클러스터 ID로 이를 바꿉니다.

$ aws kms create-custom-key-store

299

Page 308: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사용자 지정 키 스토어 관리

--custom-key-store-name ExampleKeyStore \ --cloud-hsm-cluster-id cluster-1a23b4cdefg \ --key-store-password kmsPswd \ --trust-anchor-certificate <certificate-goes-here>

AWS CLI를 사용 중인 경우에는 콘텐츠 대신에 트러스트 앵커 인증서 파일을 지정할 수 있습니다. 다음 예제에서 customerCA.crt 파일은 루트 디렉터리에 있습니다.

$ aws kms create-custom-key-store --custom-key-store-name ExampleKeyStore \ --cloud-hsm-cluster-id cluster-1a23b4cdefg \ --key-store-password kmsPswd \ --trust-anchor-certificate file://customerCA.crt

작업이 성공하면 CreateCustomKeyStore가 사용자 지정 키 스토어 ID를 반환합니다(다음 예제 응답 참조).

{ "CustomKeyStoreId": cks-1234567890abcdef0}

작업이 실패할 경우 예외로 표시된 오류를 정정하고 다시 시도해 보십시오. 추가적인 도움말은 사용자 지정키 스토어 문제 해결 (p. 320) 단원을 참조하십시오.

다음으로 사용자 지정 키 스토어를 사용하려면 AWS CloudHSM 클러스터에 연결 (p. 304)합니다.

사용자 지정 키 스토어 관리AWS Management 콘솔 및 AWS KMS API를 사용하여 사용자 지정 키 스토어를 관리할 수 있습니다. 예를들어 사용자 지정 키 스토어를 확인하고, 그 속성을 편집하고, 이를 연결 AWS CloudHSM 클러스터에 연결및 연결 해제하고, 사용자 지정 키 스토어를 삭제할 수 있습니다.

주제• 사용자 지정 키 스토어 보기 (p. 300)• 사용자 지정 키 스토어 설정 편집 (p. 302)• 사용자 지정 키 스토어 연결 및 연결 해제 (p. 304)• 사용자 지정 키 스토어 삭제 (p. 308)

사용자 지정 키 스토어 보기AWS Management 콘솔 콘솔 또는 AWS KMS API를 사용하여 각 계정 및 리전에서 사용자 지정 키 스토어를볼 수 있습니다.

확인을 위해 CMKs 사용자 지정 키 스토어에서 사용자 지정 키 스토어에서 CMKs 보기 (p. 314).

주제• 사용자 지정 키 스토어 보기(콘솔) (p. 300)• 사용자 지정 키 스토어 보기(API) (p. 301)

사용자 지정 키 스토어 보기(콘솔)AWS Management 콘솔에서 사용자 지정 키 스토어를 볼 때 다음이 표시됩니다.

300

Page 309: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사용자 지정 키 스토어 보기

• 사용자 지정 키 스토어 이름• 연결 AWS CloudHSM 클러스터의 ID• 클러스터의 HSM 개수• 현재 연결 상태

연결 상태가 Disconnected(연결 해제됨)라는 것은 사용자 지정 키 스토어가 새 것으로 전혀 연결된 적이 없거나 의도적으로 AWS CloudHSM 클러스터에서 연결 해제 (p. 304)되었음을 의미합니다. 하지만, 귀하가 CMK 연결된 사용자 지정 키 스토어에서 실패할 수 있으며, 이는 사용자 지정 키 스토어 또는 그 AWSCloudHSM 클러스터. 도움말은 실패 해결 방법 CMK (p. 321)를 참조하십시오.

해당 계정 및 리전에서 사용자 지정 키 스토어를 보려면 다음 절차를 사용하십시오.

1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/kms에서 AWS KeyManagement Service(AWS KMS) 콘솔을 엽니다.

2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 탐색 창에서 사용자 지정 키 스토어를 선택합니다.

화면을 사용자 지정하려면 Create key store(키 스토어 생성) 버튼 아래에 나타나는 기어 아이콘을 클릭합니다.

사용자 지정 키 스토어 보기(API)사용자 지정 키 스토어를 보려면 DescribeCustomKeyStores 작업을 사용합니다. 기본적으로 이 작업은 계정 및 리전에서 모든 사용자 지정 키 스토어를 반환합니다. 그러나 CustomKeyStoreId 또는CustomKeyStoreName 파라미터(둘 중 하나만)를 사용해서 특정한 사용자 지정 키 스토어로 출력을 제한할수 있습니다. 출력은 사용자 지정 키 스토어 ID와 이름, 연결 AWS CloudHSM 클러스터의 ID 및 연결 상태로이루어집니다. 연결 상태가 오류를 나타내는 경우, 출력에는 오류 원인을 설명하는 오류 코드도 포함됩니다.

이 단원의 예제는 AWS Command Line Interface(AWS CLI)를 사용하지만, 지원되는 모든 프로그래밍 언어를 사용할 수 있습니다.

예를 들어 다음 명령은 계정 및 리전에 모든 사용자 지정 키 스토어를 반환합니다. Limit 및 Marker 파라미터를 사용해 출력에서 사용자 지정 키 스토어를 탐색할 수 있습니다.

$ aws kms describe-custom-key-stores

다음 예제 명령은 CustomKeyStoreName 파라미터를 사용해 기억하기 쉬운 이름이 ExampleKeyStore인사용자 지정 키 스토어만 검색합니다. 각 명령에서 CustomKeyStoreName 또는 CustomKeyStoreId 파라미터(둘 중 하나만)를 사용할 수 있습니다.

다음 예제 출력은 AWS CloudHSM 클러스터에 연결된 사용자 지정 키 스토어를 나타냅니다.ConnectionState 요소는 콘솔의 Status 필드에 해당됩니다.

$ aws kms describe-custom-key-stores --custom-key-store-name ExampleKeyStore{ "CustomKeyStores": [ { "CloudHsmClusterId": "cluster-1a23b4cdefg", "ConnectionState": "CONNECTED", "CreationDate": "1.499288695918E9", "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "TrustAnchorCertificate": "<certificate appears here>" } ]}

301

Page 310: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사용자 지정 키 스토어 설정 편집

ConnectionState가 Disconnected라는 것은 사용자 지정 키 스토어가 전혀 연결된 적이 없거나 의도적으로 AWS CloudHSM 클러스터에서 연결 해제 (p. 304)되었음을 의미합니다. 하지만, CMK 연결된 사용자지정 키 스토어에서 실패할 수 있으며, 이는 사용자 지정 키 스토어 또는 그 AWS CloudHSM 클러스터. 도움말은 실패 해결 방법 CMK (p. 321)를 참조하십시오.

사용자 지정 키 스토어의 ConnectionState가 FAILED이면 DescribeCustomKeyStores 응답에 오류원인을 설명하는 ConnectionErrorCode 요소가 포함됩니다.

예를 들어 다음 출력에서 INVALID_CREDENTIALS 값은 kmsuser 암호가 잘못되었기 (p. 323) 때문에 사용자 지정 키 스토어 연결이 실패했음을 나타냅니다. 이를 비롯해 기타 연결 오류 문제에 대한 도움말은 사용자 지정 키 스토어 문제 해결 (p. 320) 단원을 참조하십시오.

$ aws kms describe-custom-key-stores --custom-key-store-id cks-1234567890abcdef0{ "CustomKeyStores": [ { "CloudHsmClusterId": "cluster-1a23b4cdefg", "ConnectionErrorCode": "INVALID_CREDENTIALS" "ConnectionState": "FAILED", "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "CreationDate": "1.499288695918E9", "TrustAnchorCertificate": "<certificate appears here>" } ]}

사용자 지정 키 스토어 설정 편집기존의 사용자 지정 키 스토어 (p. 293) 설정을 변경할 수 있습니다. 사용자 지정 키 스토어는 AWSCloudHSM 클러스터에서 연결이 해제되어 있어야 합니다.

사용자 지정 키 스토어 설정을 편집하려면

1. AWS CloudHSM 클러스터에서 사용자 지정 키 스토어의 연결을 해제 (p. 304)합니다. 사용자 지정 키 저장소를 분리하는 동안 고객 마스터 키 (p. 3) (CMKs사용자정의 키 스토어에서 CMKs 여기에는 암호화 작업 (p. 315).

2. 하나 이상의 사용자 지정 키 스토어 설정을 편집합니다.3. AWS CloudHSM 클러스터에 사용자 지정 키 스토어를 다시 연결 (p. 304)합니다.

사용자 지정 키 스토어에서 다음 설정을 편집할 수 있습니다.

기억하기 쉬운 사용자 지정 키 스토어 이름입니다.

기억하기 쉬운 이름을 새로 입력합니다. 새 이름은 AWS 계정에서 고유해야 합니다.연결 AWS CloudHSM 클러스터의 클러스터 ID입니다.

원본의 관련 AWS CloudHSM 클러스터를 대체하기 위해 이 값을 편집합니다. AWS CloudHSM 클러스터가 손상되었거나 삭제된 경우, 이 기능을 사용해 사용자 지정 키 스토어를 복구할 수 있습니다.

원래 클러스터와 백업 기록을 공유하는 AWS CloudHSM 클러스터를 지정하고, 서로 다른 가용 영역의두 활성 HSM을 포함해 사용자 지정 키 스토어 연결을 위한 요구 사항을 충족 (p. 297)합니다. 백업 기록을 공유하는 클러스터들은 동일한 클러스터 인증서를 가지고 있습니다. 클러스터의 클러스터 인증서를 보려면 DescribeClusters 작업을 사용합니다. 관련 없는 AWS CloudHSM 클러스터에 사용자 지정 키스토어를 연결하기 위해 편집 기능을 사용할 수는 없습니다.

kmsuserCU(Crypto User) (p. 294)의 현재 암호입니다.

AWS KMS에 AWS CloudHSM 클러스터에서 kmsuser CU의 현재 암호를 알려줍니다. 이 작업을 해도AWS CloudHSM 클러스터에서 kmsuser CU의 암호가 변경되지 않습니다.

302

Page 311: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사용자 지정 키 스토어 설정 편집

AWS CloudHSM 클러스터에서 kmsuser CU의 암호를 변경하는 경우, 이 기능을 사용해 AWS KMS에새 kmsuser 암호를 알려줍니다. 그렇지 않으면 AWS KMS가 클러스터에 로그인을 할 수 없고, 사용자지정 키 스토어를 클러스터에 연결하려는 모든 시도가 실패로 돌아갑니다.

주제• 사용자 지정 키 스토어 편집(콘솔) (p. 303)• 사용자 지정 키 스토어 편집(API) (p. 303)

사용자 지정 키 스토어 편집(콘솔)사용자 지정 키 스토어를 편집할 때 구성 가능한 값에서 무엇이든 변경할 수 있습니다.

1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/kms에서 AWS KeyManagement Service(AWS KMS) 콘솔을 엽니다.

2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 탐색 창에서 사용자 지정 키 스토어를 선택합니다.4. 편집하고 싶은 사용자 지정 키 스토어를 선택합니다.5. 상태 열의 값이 DISCONNECTED(연결 해제됨)가 아니면 먼저 사용자 지정 키 스토어의 연결을 해제해

야 편집을 할 수 있습니다. Key store actions(키 스토어 작업) 메뉴에서 Disconnect custom key store(사용자 지정 키 스토어 연결 해제)를 선택합니다.

6. Key store actions(키 스토어 작업) 메뉴에서 Edit custom key store settings(사용자 지정 키 스토어 설정편집)를 선택합니다.

7. 다음 작업 중 한 개 이상을 수행합니다.

• 기억하기 쉬운 사용자 지정 키 스토어 이름을 새로 입력합니다.• 관련 AWS CloudHSM 클러스터의 클러스터 ID를 입력합니다.• 연결 AWS CloudHSM 클러스터에서 kmsuser CU(Crypto User)의 현재 암호를 입력합니다.

8. Save를 선택합니다.

절차가 성공하면 편집한 설정을 설명하는 메시지가 표시됩니다. 절차가 실패하면 오류 메시지가 나타나서 문제를 설명하고 이를 수정할 수 있는 방법에 대한 도움말을 제공합니다. 도움이 더 필요한 경우 사용자 지정 키 스토어 문제 해결 (p. 320) 단원을 참조하십시오.

9. 사용자 지정 키 스토어를 다시 연결합니다. (p. 304)

사용자 지정 키 스토어를 사용하려면 편집 이후에 재연결을 해야 합니다. 사용자 지정 키 스토어를 연결이 해제된 상태로 남겨둘 수 있습니다. 하지만 연결이 끊기는 동안에는 CMKs 사용자 지정 키 스토어에서 사용하거나 CMKs 의 사용자 지정 키 스토어에서 암호화 작업 (p. 315).

사용자 지정 키 스토어 편집(API)사용자 지정 키 스토어의 속성을 변경하려면 UpdateCustomKeyStore 작업을 사용합니다. 동일한 명령으로 사용자 지정 키 스토어에서 여러 개의 속성을 변경할 수 있습니다. 작업이 성공하지 않으면 AWS KMS가HTTP 200 응답 및 속성을 포함하지 않는 JSON 객체를 반환합니다.

이 단원의 예제는 AWS Command Line Interface(AWS CLI)를 사용하지만, 지원되는 모든 프로그래밍 언어를 사용할 수 있습니다.

DisconnectCustomKeyStore를 사용하여 AWS KMS에서 사용자 지정 키 스토어의 연결을 해제 (p. 304)하는 것부터 시작합니다. 예제에 나온 사용자 지정 키 스토어 ID인 cks-1234567890abcdef0을 실제 ID로 대체합니다.

$ aws kms disconnect-custom-key-store --custom-key-store-id cks-1234567890abcdef0

303

Page 312: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사용자 지정 키 스토어 연결 및 연결 해제

첫 번째 예는 업데이터 스토어저장소 사용자 지정 키 저장소의 친근한 이름을 변경하려면DevelopmentKeys. 명령은 CustomKeyStoreId 사용자 지정 키 저장소와 CustomKeyStoreName 사용자 정의 키 저장소의 새 이름을 지정합니다.

$ aws kms update-custom-key-store --custom-key-store-id cks-1234567890abcdef0 --new-custom-key-store-name DevelopmentKeys

다음 예에서는 사용자 지정 키 스토어에 연결된 클러스터를 같은 클러스터의 다른 백업으로 변경합니다. 이명령은 CustomKeyStoreId 파라미터를 사용해 사용자 지정 키 스토어를 식별하고, CloudHsmClusterId파라미터를 사용해 새 클러스터 ID를 지정합니다.

$ aws kms update-custom-key-store --custom-key-store-id cks-1234567890abcdef0 --cloud-hsm-cluster-id cluster-1a23b4cdefg

다음 예는 다음과 같습니다. AWS KMS 전류를 kmsuser 비밀번호는 ExamplePassword. 명령은CustomKeyStoreId 사용자 지정 키 저장소와 KeyStorePassword 매개변수를 지정합니다.

$ aws kms update-custom-key-store --custom-key-store-id cks-1234567890abcdef0 --key-store-password ExamplePassword

마지막 명령은 사용자 지정 키 스토어를 AWS KMS에 다시 연결합니다. 연결 해제된 상태에 사용자 지정 키저장소를 남겨 둘 수 있지만, 새로 만들기 전에 연결해야 합니다. CMKs 또는 기존 사용 CMKs for 암호화 작업 (p. 315). 예제에 나온 사용자 지정 키 스토어 ID인 을 실제 ID로 대체합니다.

$ aws kms connect-custom-key-store --custom-key-store-id cks-1234567890abcdef0

사용자 지정 키 스토어 연결 및 연결 해제새로운 사용자 지정 키 스토어는 연결이 되지 않습니다. 만들기 전에 고객 마스터 키 (CMKs사용자 지정 키스토어에서 연결을 AWS CloudHSM 클러스터. 사용자 지정 키 스토어를 언제든 연결 및 연결 해제할 수 있으며 연결 상태를 확인 (p. 300)할 수 있습니다.

사용자 지정 키 스토어를 연결할 필요는 없습니다. 사용자 지정 키 스토어를 연결 해제 상태로 무기한 남겨두고 사용 시에만 이를 연결할 수 있습니다. 하지만 설정이 올바른지, 연결이 가능한지 확인하기 위해 정기적으로 연결을 테스트하고 싶을 수 있습니다.

Note

사용자 지정 키 스토어는 키 스토어가 연결되지 않은 경우 또는 연결을 직접 해제한 경우에만DISCONNECTED 상태가 됩니다. 사용자 지정 키 스토어 상태가 CONNECTED인데 사용에 문제가 있을 경우 연결된 AWS CloudHSM 클러스터가 작동 중이며 최소 한 개의 활성 HSM을 포함하고 있는지 확인하십시오. 연결 실패에 대한 도움말은 the section called “사용자 지정 키 스토어 문제 해결” (p. 320) 단원을 참조하십시오.

사용자 지정 키 스토어 연결

사용자 지정 키 스토어를 연결하면 AWS KMS가 연결 AWS CloudHSM 클러스터를 찾아서 연결하고 AWSCloudHSM 클라이언트에 kmsuser CU(Crypto User) (p. 294)로 로그인한 다음, kmsuser 암호를 교체합니다. AWS KMS는 사용자 지정 키 스토어가 연결되어 있는 한 AWS CloudHSM 클라이언트에 로그인한 상태로 유지됩니다.

연결을 설정하기 위해 AWS KMS는 클라우드의 가상 사설 클라우드(VPC)에서 kms-<custom key storeID>라는 보안 그룹을 생성합니다. 보안 그룹은 클라우드 보안 그룹에서 인바운드 트래픽을 허용하는 단일규칙을 가지고 있습니다. 또한 AWS KMS는 클러스터의 프라이빗 서브넷의 각 가용 영역에서 탄력적 네트워크 인터페이스(ENI)를 생성합니다. AWS KMS는 kms-<cluster ID> 보안 그룹 및 클러스터의 보안 그룹에 ENI를 추가합니다. 각 ENI에 대한 설명은 KMS managed ENI for cluster <cluster-ID>입니다.

304

Page 313: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사용자 지정 키 스토어 연결 및 연결 해제

연결 프로세스를 완료하는 데 최대 20분이 걸릴 수 있습니다.

사용자 지정 키 스토어를 연결하기 전에 요구 사항을 충족하는지 확인합니다.

• 연결 AWS CloudHSM 클러스터에는 최소 하나의 활성 HSM이 포함되어 있어야 합니다. 클러스터에서HSM의 수를 찾으려면 AWS CloudHSM 콘솔에서 클러스터를 보거나 DescribeClusters 작업을 사용합니다. 필요한 경우 HSM을 추가할 수 있습니다.

• 클러스터에는 kmsuser CU(Crypto User) (p. 298) 계정이 있어야 하지만 사용자 지정 키 스토어를 연결할 때 해당 CU가 클러스터에 로그인할 수 없습니다. 로그아웃에 대한 도움말은 로그아웃 및 재연결 방법 (p. 327) 단원을 참조하십시오.

• 사용자 지정 키 저장소의 연결 상태는 DISCONNECTING 또는 FAILED. 여러분은 연결 상태 보기 (p. 300)콘솔을 사용하거나 설명서류저장소 작업. 연결 상태가 FAILED이면 사용자 지정 키 스토어의 연결을 해제한 다음 다시 연결합니다.

사용자 지정 키 스토어가 연결되면 생성 CMKs in it (p. 310) 사용하고 CMKs 에서 암호화 작업 (p. 315).

사용자 지정 키 스토어 연결 해제

사용자 지정 키 스토어의 연결을 해제하면 AWS KMS가 AWS CloudHSM 클라이언트에서 로그아웃하고 연결 AWS CloudHSM 클러스터와의 연결이 해제되며, 연결을 지원하기 위해 생성된 네트워크 인프라를 제거합니다.

사용자 정의 키 스토어가 분리되어 있는 동안 사용자 지정 키 저장소와 그 고객 마스터 키 (CMKs을(를) 생성하거나 사용할 수 없습니다. CMKs 사용자 지정 키 스토어에서. 키 스토어의 상태는 DISCONNECTED 그리고주요 상태 (p. 175) of CMKs 사용자 지정 키 스토어에서 Unavailable예외가 아닌 한 PendingDeletion.언제든지 사용자 정의 키 저장소를 다시 연결할 수 있습니다.

Note

사용자 지정 키 스토어의 연결이 해제된 상태에서는 사용자 지정 키 스토어에서 고객 마스터 키(CMK)를 생성하거나, 암호화 작업을 위해 기존 CMK를 사용하려는 모든 시도가 실패합니다. 이 작업은 사용자가 기밀 데이터를 저장하거나 액세스하지 못하도록 차단합니다.

키 스토어를 분리하는 효과를 더 잘 추정하려면 &t={\f CMKs (p. 317) 사용자 지정 키 스토어에서 과거 사용법 결정 (p. 274).

다음과 같은 이유로 사용자 지정 키 스토어의 연결을 해제할 수 있습니다.

• kmsuser 암호를 교체하려면 AWS KMS는 AWS CloudHSM 클러스터에 연결될 때마다 kmsuser 암호를변경합니다. 강제로 암호 교체를 수행하려면 연결을 해제하고 다시 연결하기만 하면 됩니다.

• 주요 자료를 감사하려면 for the CMKs in the AWS CloudHSM 클러스터. 사용자 지정 키 스토어의 연결을해제하면 AWS KMS가 AWS CloudHSM 클라이언트의 kmsuser CY(Crypto User) (p. 294) 계정에서 로그아웃합니다. 따라서 클러스터에 로그인할 수 kmsuser CU 및 감사 및 주요 재료 관리 CMK.

• 모두 즉시 비활성화하려면 CMKs 사용자 지정 키 스토어에서. 여러분은 비활성화 및 재활성화CMKs (p. 47) 사용자정의 키 스토어에서 AWS Management 콘솔 또는 장애 작업. 이러한 작업은 신속하게완료되지만, CMK 한 번에. 연결이 끊어지면 CMKs 사용자 지정 키 Unavailable이(가) 암호화 작업에 사용되는 것을 방지합니다.

• 실패한 연결 시도를 복구하려면. 사용자 지정 키 스토어를 연결하려는 시도가 실패하면(사용자 지정 키 스토어의 연결 상태가 FAILED) 다시 연결을 시도하기에 앞서 사용자 지정 키 스토어의 연결을 해제해야 합니다.

주제• 사용자 지정 키 스토어 연결(콘솔) (p. 306)• 사용자 지정 키 스토어 연결(API) (p. 306)• 사용자 지정 키 스토어 연결 해제(콘솔) (p. 307)• 사용자 지정 키 스토어 연결 해제(API) (p. 307)

305

Page 314: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사용자 지정 키 스토어 연결 및 연결 해제

사용자 지정 키 스토어 연결(콘솔)AWS Management 콘솔에서 사용자 지정 키 스토어를 연결하려면 Custom key stores(사용자 지정 키 스토어) 페이지에서 사용자 지정 키 스토어를 선택하는 것부터 시작합니다. 이 프로세스가 완료되는 데 최대 20분이 걸릴 수 있습니다.

1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/kms에서 AWS KeyManagement Service(AWS KMS) 콘솔을 엽니다.

2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 탐색 창에서 사용자 지정 키 스토어를 선택합니다.4. 연결하고 싶은 사용자 지정 키 스토어를 선택합니다.5. 사용자 지정 스토어의 상태가 FAILED(실패)이면 연결에 앞서 사용자 지정 키 스토어의 연결을 해

제 (p. 307)해야 합니다.6. Key store actions(키 스토어 작업) 메뉴에서 Connect custom key store(사용자 지정 키 스토어 연결)를

선택합니다.

AWS KMS는 사용자 지정 키 스토어를 연결하는 프로세스를 시작합니다. 또한 연결 AWS CloudHSM 클러스터를 찾고, 필요한 네트워크 인프라를 구축하여 연결하고, kmsuser CU로 AWS CloudHSM 클러스터에 로그인하고, kmsuser 암호를 교체합니다. 이 작업이 완료되면 연결 상태가 CONNECTED(연결 상태)로 변경됩니다.

작업이 실패하면 실패 원인을 설명하는 오류 메시지가 나타납니다. 다시 연결을 시도하기에 앞서 사용자 지정 키 스토어의 연결 상태를 확인 (p. 300)합니다. 연결 상태가 FAILED(실패)이면 다시 연결을 하기 앞서 사용자 지정 키 스토어의 연결을 해제 (p. 307)해야 합니다. 도움이 필요한 경우 사용자 지정 키 스토어 문제해결 (p. 320) 단원을 참조하십시오.

그런 다음 . 생성 CMKs 사용자 지정 키 스토어에서 (p. 310).

사용자 지정 키 스토어 연결(API)연결이 해제된 사용자 지정 키 스토어를 연결하려면 ConnectCustomKeyStore 작업을 사용합니다. 연결AWS CloudHSM 클러스터에 최소 하나의 활성 HSM이 포함되어 있어야 하고, 연결 상태는 FAILED가 될 수없습니다.

연결 프로세스를 완료하는 데 최대 20분이 걸릴 수 있습니다. 빨리 실패하지 않는 한, 이 작업은 속성 없이HTTP 200 응답 및 JSON 객체를 반환합니다. 하지만 이러한 초기 응답은 연결이 성공했음을 의미하지는 않습니다. 사용자 지정 키 스토어의 연결 상태를 확인하려면 DescribeCustomKeyStores 작업을 사용합니다.

이 단원의 예제는 AWS Command Line Interface(AWS CLI)를 사용하지만, 지원되는 모든 프로그래밍 언어를 사용할 수 있습니다.

사용자 지정 키 스토어를 식별하려면 사용자 지정 키 스토어 ID를 사용합니다. 콘솔의 Custom key stores(사용자 지정 키 스토어) 페이지에서, 또는 DescribeCustomKeyStores 작업을 사용하여 ID를 찾을 수 있습니다.이 예제를 실행하기 앞서 예제 ID를 유효한 ID로 바꿉니다.

$ aws kms connect-custom-key-store --custom-key-store-id cks-1234567890abcdef0

사용자 지정 키 스토어가 연결되어 있는지 확인하려면 DescribeCustomKeyStores 작업을 사용합니다. 기본적으로 이 작업은 계정 및 리전에서 모든 사용자 지정 키 스토어를 반환합니다. 그러나 CustomKeyStoreId또는 CustomKeyStoreName 파라미터(둘 중 하나만)를 사용해서 특정한 사용자 지정 키 스토어로 응답을제한할 수 있습니다. ConnectionState 값이 CONNECTED라는 것은 AWS CloudHSM 클러스터에 사용자지정 키 스토어가 연결되어 있다는 것을 의미합니다.

$ aws kms describe-custom-key-stores --custom-key-store-id cks-1234567890abcdef0{ "CustomKeyStores": [ "CustomKeyStoreId": "cks-1234567890abcdef0",

306

Page 315: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사용자 지정 키 스토어 연결 및 연결 해제

"CustomKeyStoreName": "ExampleKeyStore", "CloudHsmClusterId": "cluster-1a23b4cdefg", "TrustAnchorCertificate": "<certificate string appears here>", "CreationDate": "1.499288695918E9", "ConnectionState": "CONNECTED" ],}

ConnectionState 값이 실패인 경우, ConnectionErrorCode 요소는 실패 원인을 나타냅니다. 이경우 AWS KMS 을(를) 찾을 수 없습니다. AWS CloudHSM 클러스터 ID를 가진 계정의 클러스터 IDcluster-1a23b4cdefg. 클러스터를 삭제한 경우 다음을 수행할 수 있습니다. 백업에서 복구 그런 다음 클러스터 ID 편집 (p. 302) 사용자 지정 키 스토어의 경우.

$ aws kms describe-custom-key-stores --custom-key-store-id cks-1234567890abcdef0{ "CustomKeyStores": [ "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "CloudHsmClusterId": "cluster-1a23b4cdefg", "TrustAnchorCertificate": "<certificate string appears here>", "CreationDate": "1.499288695918E9", "ConnectionState": "FAILED" "ConnectionErrorCode": "CLUSTER_NOT_FOUND" ],}

그런 다음 . 생성 CMKs 사용자 지정 키 스토어에서 (p. 310).

사용자 지정 키 스토어 연결 해제(콘솔)AWS Management 콘솔에서 연결된 사용자 지정 키 스토어의 연결을 해제하려면 Custom Key Stores(사용자 지정 키 스토어) 페이지에서 사용자 지정 키 스토어를 선택하는 것부터 시작합니다.

1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/kms에서 AWS KeyManagement Service(AWS KMS) 콘솔을 엽니다.

2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 탐색 창에서 사용자 지정 키 스토어를 선택합니다.4. 연결을 해제하고 싶은 사용자 지정 키 스토어를 선택합니다.5. Key store actions(키 스토어 작업) 메뉴에서 Disconnect custom key store(사용자 지정 키 스토어 연결

해제)를 선택합니다.

작업이 완료되면 연결 상태가 DISCONNECTING(연결 해제 중)에서 DISCONNECTED(연결 해제됨)로 변경됩니다. 작업이 실패하면 오류 메시지가 나타나서 문제를 설명하고 이를 수정할 수 있는 방법에 대한 도움말을 제공합니다. 도움이 더 필요한 경우 사용자 지정 키 스토어 문제 해결 (p. 320) 단원을 참조하십시오.

사용자 지정 키 스토어 연결 해제(API)연결된 사용자 지정 키 스토어의 연결을 해제하려면 DisconnectCustomKeyStore 작업을 사용합니다. 작업이성공하지 않으면 AWS KMS가 HTTP 200 응답 및 속성을 포함하지 않는 JSON 객체를 반환합니다.

이 단원의 예제는 AWS Command Line Interface(AWS CLI)를 사용하지만, 지원되는 모든 프로그래밍 언어를 사용할 수 있습니다.

이 예제에서는 사용자 지정 키 스토어의 연결을 해제합니다. 이 예제를 실행하기 앞서 예제 ID를 유효한 ID로바꿉니다.

$ aws kms disconnect-custom-key-store --custom-key-store-id cks-1234567890abcdef0

307

Page 316: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사용자 지정 키 스토어 삭제

사용자 지정 키 스토어가 연결 해제되어 있는지 확인하려면 DescribeCustomKeyStores 작업을 사용합니다. 기본적으로 이 작업은 계정 및 리전에서 모든 사용자 지정 키 스토어를 반환합니다. 그러나CustomKeyStoreId 또는 CustomKeyStoreName 파라미터(둘 중 하나만)를 사용해서 특정한 사용자지정 키 스토어로 응답을 제한할 수 있습니다. ConnectionState 값이 DISCONNECTED라는 것은 AWSCloudHSM 클러스터에 사용자 지정 키 스토어가 연결되어 있지 않다는 것을 의미합니다.

$ aws kms describe-custom-key-stores --custom-key-store-id cks-1234567890abcdef0{ "CustomKeyStores": [ "CloudHsmClusterId": "cluster-1a23b4cdefg", "ConnectionState": "DISCONNECTED", "CreationDate": "1.499288695918E9", "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "TrustAnchorCertificate": "<certificate string appears here>" ],}

사용자 지정 키 스토어 삭제사용자 지정 키 스토어를 삭제하면 AWS KMS가 AWS CloudHSM 클러스터 연결에 대한 정보를 포함해 사용자 지정 키 스토어에 대한 모든 메타데이터를 KMS에서 삭제합니다. 이 작업은 AWS CloudHSM 클러스터와그 HSM, 또는 그 사용자에게 영향을 미치지 않습니다. 사용자는 지정된 클러스터에 연결된 새로운 사용자지정 키 스토어를 생성할 수 있지만, 삭제 작업의 실행을 취소할 수는 없습니다.

다음에서 분리된 사용자 정의 키 저장소만 삭제할 수 있습니다. AWS KMS 또한 고객 마스터 키 (CMKs) ). 사용자 지정 키 스토어를 삭제하기 전에 다음을 수행합니다.

• 다음 중 어느 것도 사용할 필요가 없는지 확인합니다. CMKs 모든 고객을 위한 암호화 작업 (p. 315). 그런 다음 그런 스케줄 삭제 (p. 320) 모두 CMKs 키 스토어에서. 고객을 위한 CMKs 사용자 지정 키 스토어에서 찾기 CMKs 사용자 지정 키 스토어에서 (p. 317).

• 모두 확인 CMKs 삭제되었습니다. 을(를) 보려면 CMKs 사용자 지정 키 스토어에서 사용자 지정 키 스토어에서 CMKs 보기 (p. 314).

• AWS KMS에서 사용자 지정 키 스토어의 연결을 해제 (p. 304)합니다.

사용자 지정 키 스토어를 삭제하는 대신, 연결 AWS CloudHSM 클러스터에서 연결 해제 (p. 304)를 고려하십시오. 사용자 정의 키 스토어가 분리되어 있는 동안 사용자 지정 키 저장소와 그 고객 마스터 키 (CMKs) ).하지만 여러분은 CMKs 사용자 지정 키 스토어에서. 언제든지 사용자 지정 키 스토어를 다시 연결할 수 있습니다.

AWS 계정의 모든 리전에서 모든 사용자 지정 키 스토어를 삭제했고 추가로 생성할 계획이 없는 경우에는AWS KMS가 사용자 지정 키 스토어에서 사용하는 서비스 연결 역할을 삭제 (p. 295)해야 합니다.

주제• 사용자 지정 키 스토어 삭제(콘솔) (p. 308)• 사용자 지정 키 스토어 삭제(API) (p. 309)

사용자 지정 키 스토어 삭제(콘솔)AWS Management 콘솔에서 사용자 지정 키 스토어를 삭제하려면 Custom key stores(사용자 지정 키 스토어) 페이지에서 사용자 지정 키 스토어를 선택하는 것부터 시작합니다.

1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/kms에서 AWS KeyManagement Service(AWS KMS) 콘솔을 엽니다.

2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.

308

Page 317: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사용자 지정 키 스토어 삭제

3. 탐색 창에서 사용자 지정 키 스토어를 선택합니다.4. 제거하고 싶은 사용자 지정 키 스토어를 나타내는 열을 찾습니다. 사용자 지정 키 스토어의 상태가

DISCONNECTED(연결 해제됨)이면 사용자 지정 키 스토어를 삭제하기 전에 사용자 지정 키 스토어의연결 해제 (p. 304)가 필요합니다.

5. Key store actions(키 스토어 작업) 메뉴에서 Delete custom key store(사용자 지정 키 스토어 삭제)를 선택합니다.

작업이 완료되면 성공 메시지가 나타나고, 사용자 지정 키 스토어는 더 이상 사용자 지정 키 스토어 목록에나타나지 않습니다. 작업이 실패하면 오류 메시지가 나타나서 문제를 설명하고 이를 수정할 수 있는 방법에대한 도움말을 제공합니다. 도움이 더 필요한 경우 사용자 지정 키 스토어 문제 해결 (p. 320) 단원을 참조하십시오.

사용자 지정 키 스토어 삭제(API)사용자 지정 키 스토어를 삭제하려면 DeleteCustomKeyStore 작업을 사용합니다. 작업이 성공하지 않으면AWS KMS가 HTTP 200 응답 및 속성을 포함하지 않는 JSON 객체를 반환합니다.

시작하려면 사용자 지정 키 저장소에 아무 것도 포함하지 않았는지 AWS KMS 고객 마스터 키 (CMKs) ). 다음을 포함하는 사용자 정의 키 저장소를 삭제할 수 없습니다. CMKs. 첫 번째 예제 명령은 listkey and 설명 검색 AWS KMS 고객 마스터 키 사용자 지정 키 스토어에서 cks-1234567890abcdef0 가짜 키 매장 ID. 이경우 명령은 CMKs. 만일 만약 스케줄키 삭제 작업 일정을 CMKs.

Bash

for key in $(aws kms list-keys --query 'Keys[*].KeyId' --output text) ; do aws kms describe-key --key-id $key | grep '"CustomKeyStoreId": "cks-1234567890abcdef0"' --context 100; done

PowerShell

PS C:\> (Get-KMSKeyList).KeyArn | foreach {Get-KMSKey -KeyId $_} | where CustomKeyStoreId -eq 'cks-1234567890abcdef0'

그런 다음, 사용자 지정 키 스토어의 연결을 해제합니다. 이 예제 명령은 DisconnectCustomKeyStore 작업을사용하여 AWS CloudHSM 클러스터에서 사용자 지정 키 스토어의 연결을 해제합니다. 이 명령을 실행하기앞서 예제에 나온 사용자 지정 키 스토어 ID를 유효한 ID로 대체합니다.

Bash

$ aws kms disconnect-custom-key-store --custom-key-store-id cks-1234567890abcdef0

PowerShell

PS C:\> Disconnect-KMSCustomKeyStore -CustomKeyStoreId cks-1234567890abcdef0

사용자 지정 키 스토어가 연결 해제된 후에는 DeleteCustomKeyStore 작업을 사용하여 이를 삭제할 수 있습니다.

Bash

$ aws kms delete-custom-key-store --custom-key-store-id cks-1234567890abcdef0

309

Page 318: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드관리 CMKs 사용자 지정 키 스토어에서

PowerShell

PS C:\> Remove-KMSCustomKeyStore -CustomKeyStoreId cks-1234567890abcdef0

관리 CMKs 사용자 지정 키 스토어에서사용자는 고객 마스터 키 (CMKs)를 참조하십시오. 사용하는 절차는 귀하가 사용하는 절차와 매우 유사합니다. CMKs 에서 AWS KMS. 유일한 차이점은 사용자가 CMK. 그리고 AWS KMS 비추출할 수 없는 키 재료 생성 CMK in the AWS CloudHSM 사용자 지정 키 저장소와 연결된 클러스터입니다. 귀하가 CMK 맞춤형 키 스토어에서 암호화 작업 (p. 315) 클러스터의 hsm에서 수행됩니다.

Note

AWS KMS 사용자 지정 키 스토어는 대칭 키만 지원합니다. 비록 AWS CloudHSM Fixlet 메트릭 키를 지원합니다. 그리스를 만들 수 없습니다. CMKs 또는 사용자 지정 키 스토어에서 메트릭 데이터키 쌍을 선택합니다.귀하는 키 재료 가져오기 (p. 277) a CMK 사용자 지정 키 스토어에서. AWS KMS 주요 자료를 CMKin the AWS CloudHSM 클러스터.

이 섹션에서 논의된 절차에 추가하여 다음을 수행할 수 있습니다. CMKs 사용자 지정 키 스토어에서:

• 주요 정책, IAM 정책 및 보조금 액세스 권한 부여 (p. 62) to the CMK.• 할당 태그 (p. 44) to the CMKs 그리고 별칭 (p. 231) 이는 CMKs.• 사용 CMKs for 암호화 작업 (p. 11)암호화, 해독, 재암호화, 데이터 키 생성 등 을(를) 포함합니다.• 사용 CMKs with AWS 통합된 서비스를 AWS KMS (p. 341) 고객이 관리하는 CMKs.• 추적 CMK 사용 AWS CloudTrail 로그 (p. 181) and Amazon CloudWatch 모니터링 도구 (p. 180).

그러나 키 자료를 CMK 사용자 지정 키 스토어에서.

주제• 생성 CMKs 사용자 지정 키 스토어에서 (p. 310)• 사용자 지정 키 스토어에서 CMKs 보기 (p. 314)• 사용 CMKs 사용자 지정 키 스토어에서 (p. 315)• 찾기 CMKs 주요 재료 (p. 316)• 삭제 일정 CMKs 맞춤형 키 스토어에서 (p. 320)

생성 CMKs 사용자 지정 키 스토어에서사용자 지정 키 스토어를 생성한 후 고객 마스터 키 (p. 3) (CMKs)를 참조하십시오. 이들은 대칭CMKs (p. 158) 핵심 소재를 사용하여 AWS KMS 생성. 생성할 수 없습니다 메트릭 CMKs (p. 158) 또는CMKs with 가져온 키 재료 (p. 277)대칭을 사용할 수 없습니다. CMKs 을(를) 사용자정의 키 저장소에서 생성할 수 있습니다.

사용 및 관리 CMKs 사용자 정의 키 스토어에서 사용 및 관리하는 것과 동일한 방식으로 CMK 에서 AWSKMS. 예를 들어 다음 중 하나를 수행할 수 있습니다.

• 사용 CMKs for 암호화 작업 (p. 11).• 설정 IAM 주요 정책을 CMKs.• 별칭은 CMKs.• 태그를 CMKs.

310

Page 319: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드생성 CMKs 사용자 지정 키 스토어에서

• 활성화 및 비활성화 CMKs.• 일정 삭제 CMKs.

을(를) 생성하려면 CMK 사용자 지정 키 스토어에서 사용자 지정 키 스토어는 연결된 AWS CloudHSM클러스터 (p. 304) 클러스터는 서로 다른 가용성 존(Availability Zone)에 최소 2개의 활성 hsm을 포함해야 합니다. HSM의 연결 상태와 개수를 알려면 AWS Management 콘솔의 사용자 지정 키 스토어 페이지 (p. 300)를 확인합니다. API 작업을 사용할 때 DescribeCustomKeyStores 작업을 사용해 해당되는 사용자 지정 키 스토어가 연결되어 있는지 확인합니다. AWS CloudHSM DescribeClusters 작업을 사용해 클러스터 및 가용 영역에서 활성 HSM의 수를 확인합니다.

여러분이 CMK 사용자 지정 키 스토어에서 AWS KMS 생성 CMK 에서 AWS KMS. 하지만, 이는 CMK 관련AWS CloudHSM 클러스터. 특히, AWS KMS는 생성한 kmsuser CU로 (p. 297) 클러스터에 로그인합니다.그런 다음 클러스터에서 영구적이고 비추출할 수 없는 256비트 AES(Advanced Encryption Standard) 대칭키를 생성합니다. AWS KMS 의 값을 설정합니다. 키 레이블 속성클러스터는 클러스터의 경우에만 볼 수 있는 CMK.

명령이 성공하면 주요 상태 (p. 175) 새로운 CMK is Enabled 그 이유는 AWS_CLOUDHSM. 귀하는 CMK 을(를) 만듭니다. 귀하가 CMK 콘솔의 사용자 지정 키 스토어에서 또는 설명 기본 ID, 키 상태 및 생성일 등의 일반적인 속성을 볼 수 있습니다. 하지만 사용자 지정 키 스토어 ID와 AWS CloudHSM 클러스터 ID(선택 사항)을 확인할 수도 있습니다. 자세한 내용은 사용자 지정 키 스토어에서 CMKs 보기 (p. 314) 단원을 참조하십시오.

만약 여러분이 CMK 사용자 지정 키 저장소에 오류가 발생하여 원인을 결정하는 데 도움이 되는 오류 메시지를 사용합니다. 사용자 지정 키 스토어가 연결되어 있지 않거나(CustomKeyStoreInvalidStateException) 연결 AWS CloudHSM 클러스터에 이 작업에 필요한 두 개의 활성 HSM이 포함되어 있지 않다는(CloudHsmClusterInvalidConfigurationException) 의미일수 있습니다. 도움말은 사용자 지정 키 스토어 문제 해결 (p. 320)를 참조하십시오.

주제• 생성 CMK 사용자 지정 키 저장소(콘솔) (p. 311)• 생성 CMK API(Custom Key Store)에서 (p. 312)

생성 CMK 사용자 지정 키 저장소(콘솔)다음 절차를 사용하여 고객 마스터 키 (CMK)를 참조하십시오.

1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/kms에서 AWS KeyManagement Service(AWS KMS) 콘솔을 엽니다.

2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 탐색 창에서 고객 관리형 키를 선택합니다.4. [Create key]를 선택합니다.5. Symmetric(대칭)을 선택합니다.

차트 메트릭을 만들 수 없습니다. CMK 사용자 지정 키 스토어에서.6. 고급 옵션을 선택합니다.7. Key material origin(키 구성 요소 오리진)에서 Custom key store(CloudHSM)(사용자 지정 키 스토어

(CloudHSM))을 선택합니다.8. 다음을 선택합니다.9. 사용자 정의 키 스토어를 선택하십시오. CMK. 사용자 지정 키 스토어를 새로 생성하려면 Create custom

key store(사용자 지정 키 스토어 생성)를 선택합니다.

선택한 사용자 지정 키 스토어의 상태는 CONNECTED(연결 상태)여야 합니다. 연결 AWS CloudHSM클러스터는 활성 상태여야 하고 서로 다른 가용 영역에 최소 2개의 활성 HSM을 포함하고 있어야 합니다.

311

Page 320: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드생성 CMKs 사용자 지정 키 스토어에서

사용자 지정 키 스토어를 연결하는 방법에 대한 도움말은 사용자 지정 키 스토어 연결 및 연결 해제 (p. 304) 단원을 참조하십시오. hsm을 추가하는 데 도움이 필요하면 HSM 추가 in the AWSCloudHSM User Guide.

10. 다음을 선택합니다.11. 별칭과 CMK.12. : 선택. On 태그 추가 페이지, 추가 또는 분류를 CMK.

AWS 리소스에 태그를 추가하면 AWS에서 사용 내역 및 비용을 태그별로 집계한 비용 할당 보고서를 생성합니다. CMK 태그 지정에 대한 자세한 정보는 키 태그 지정 (p. 44) 단원을 참조하십시오.

13. 다음을 선택합니다.14. 에서 핵심 관리자 섹션, IAM 사용자 및 CMK. 자세한 내용은 주요 관리자가 CMK (p. 68).

Note

IAM 정책은 다른 IAM 사용자들에게 권한을 부여하고 CMK.15. (선택 사항) 이 키 관리자가 이 키를 삭제하지 못하도록 하려면 CMK, 페이지 하단에 있는 상자를 선택 취

소합니다. 키 관리자가 이 키를 삭제할 수 있도록 허용합니다.16. 다음을 선택합니다.17. 에서 이 계정 섹션에서 IAM 사용자 및 역할을 선택합니다. AWS 계정을 사용하여 CMK 에서 암호화 작

업 (p. 11). 자세한 내용은 주요 사용자가 CMK (p. 70).

Note

IAM 정책은 다른 IAM 사용자들에게 권한을 부여하고 CMK.18. (선택 사항) 다른 AWS 계정을 사용하여 CMK 암호화 작업에 사용됩니다. 이렇게 하려면 페이지 하단의

Other AWS accounts(다른 AWS 계정) 섹션에서 Add another AWS account(다른 AWS 계정 추가)를 선택하고 외부 계정의 AWS 계정 식별 번호를 입력합니다. 외부 계정을 여러 개 추가하려면 이 단계를 반복합니다.

Note

기타 관리자 AWS 계정은 CMK 사용자를 위한 IAM 정책을 생성할 수 있습니다. 자세한 정보는다른 계정의 사용자가 CMK를 사용하도록 허용 (p. 91) 단원을 참조하십시오.

19. 다음을 선택합니다.20. On 주요 정책 검토 및 편집 새 항목에 대한 정책 문서를 검토하고 편집합니다. CMK. 모두 마쳤으면 완

료를 선택합니다.

절차가 성공하면 디스플레이에 새 화면이 CMK 를 선택합니다. 새 이름의 이름 또는 별칭을 CMK의 세부 정보 페이지에는 CMK (cloudhsm), 사용자 정의 키 저장소의 이름과 ID, 그리고 AWS CloudHSM 클러스터. 이절차가 실패하면 실패 원인을 설명하는 오류 메시지가 나타납니다.

Tip

보다 쉽게 식별하기 위해 CMKs 사용자 지정 키 스토어에서 고객 관리 키 페이지, 추가 사용자 지정키 매장 ID 열로 열을 표시합니다. 오른쪽 상단의 기어 아이콘을 클릭하고 Custom key store ID(사용자 지정 키 스토어 ID)를 선택합니다.

생성 CMK API(Custom Key Store)에서새로 만들려면 고객 마스터 키 (p. 3) (CMK사용자 지정 키 스토어에서 생성키 작업. CustomKeyStoreId 파라미터를 사용하여 사용자 지정 키 스토어를 식별하고 AWS_CLOUDHSM의 Origin 값을 지정합니다.

Policy 파라미터를 사용해 키 정책을 지정할 수도 있습니다. 언제든 키 정책(PutKeyPolicy)을 변경하고 설명 및 태그 등의 선택적 요소를 추가할 수 있습니다.

312

Page 321: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드생성 CMKs 사용자 지정 키 스토어에서

이 단원의 예제는 AWS Command Line Interface(AWS CLI)를 사용하지만, 지원되는 모든 프로그래밍 언어를 사용할 수 있습니다.

다음 예에서는 연결 AWS CloudHSM 클러스터에 사용자 지정 스토어가 연결되어 있는지 확인하기 위해DescribeCustomKeyStores 작업을 호출하는 것부터 시작합니다. 기본적으로 이 작업은 계정 및 리전에서 모든 사용자 지정 키 스토어를 반환합니다. 특정한 사용자 지정 키 스토어만 설명하려면 CustomKeyStoreId또는 CustomKeyStoreName 파라미터를 사용합니다(둘 모두를 사용해서는 안 됨).

이 명령을 실행하기 앞서 예제에 나온 사용자 지정 키 스토어 ID를 유효한 ID로 대체합니다.

$ aws kms describe-custom-key-stores --custom-key-store-id cks-1234567890abcdef0{ "CustomKeyStores": [ "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "CloudHsmClusterId": "cluster-1a23b4cdefg", "TrustAnchorCertificate": "<certificate string appears here>", "CreationDate": "1.499288695918E9", "ConnectionState": "CONNECTED" ],}

다음 예제 명령은 DescribeClusters 작업을 사용해 ExampleKeyStore(cluster-1a23b4cdefg)에 연결된AWS CloudHSM 클러스터가 최소 두 개의 활성 HSM을 가지고 있는지 확인합니다. 클러스터의 HSM 수가 2개 미만이면 CreateKey 작업이 실패합니다.

$ aws cloudhsmv2 describe-clusters{ "Clusters": [ { "SubnetMapping": { ... }, "CreateTimestamp": 1507133412.351, "ClusterId": "cluster-1a23b4cdefg", "SecurityGroup": "sg-865af2fb", "HsmType": "hsm1.medium", "VpcId": "vpc-1a2b3c4d", "BackupPolicy": "DEFAULT", "Certificates": { "ClusterCertificate": "-----BEGIN CERTIFICATE-----\...\n-----END CERTIFICATE-----\n" }, "Hsms": [ { "AvailabilityZone": "us-west-2a", "EniIp": "10.0.1.11", "ClusterId": "cluster-1a23b4cdefg", "EniId": "eni-ea8647e1", "StateMessage": "HSM created.", "SubnetId": "subnet-a6b10bd1", "HsmId": "hsm-abcdefghijk", "State": "ACTIVE" }, { "AvailabilityZone": "us-west-2b", "EniIp": "10.0.0.2", "ClusterId": "cluster-1a23b4cdefg", "EniId": "eni-ea8647e1", "StateMessage": "HSM created.", "SubnetId": "subnet-b6b10bd2", "HsmId": "hsm-zyxwvutsrqp", "State": "ACTIVE"

313

Page 322: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사용자 지정 키 스토어에서 CMKs 보기

}, ], "State": "ACTIVE" } ]}

이 예제 명령은 생성키 작업을 CMK 사용자 지정 키 저장소. 을(를) 생성하려면 CMK 사용자 지정 키 스토어에서 사용자 지정 키 저장소 이름의 ID를 제공하고 Origin 값 AWS_CLOUDHSM.

응답에는 사용자 지정 키 스토어 및 AWS CloudHSM 클러스터의 ID가 포함되어 있습니다.

이 명령을 실행하기 앞서 예제에 나온 사용자 지정 키 스토어 ID를 유효한 ID로 대체합니다.

$ aws kms create-key --origin AWS_CLOUDHSM --custom-key-store-id cks-1234567890abcdef0{ "KeyMetadata": { "AWSAccountId": "111122223333", "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1.499288695918E9, "Description": "Example key", "Enabled": true, "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "Origin": "AWS_CLOUDHSM" "CloudHsmClusterId": "cluster-1a23b4cdefg", "CustomKeyStoreId": "cks-1234567890abcdef0" "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] }}

사용자 지정 키 스토어에서 CMKs 보기사용자 지정 키 스토어에서 고객 마스터 키(CMKs)를 보려면 AWS KMS 고객 관리형 CMKs를 보는 데 사용하는 것과 동일한 기법을 사용합니다. (p. 3) 기본적인 사항은 키 보기 (p. 27) 단원을 참조하십시오. 에서키 구성 요소 역할을 하는 AWS CloudHSM 클러스터의 키를 식별하려면 CMK 단원을 참조하십시오.찾기CMKs 주요 재료 (p. 316)

에서 사용자 지정 키 스토어의 AWS Management 콘솔가 다른 모든 고객 관리형 CMKs 계정 및 리전과 함께표시됩니다.CMKsAWS

하지만 다음 값은 사용자 지정 키 스토어의 CMKs에 고유합니다.

• 를 저장하는 사용자 지정 키 스토어의 이름과 ID입니다.CMK• 키 구성 요소를 포함하는 연결 AWS CloudHSM 클러스터의 클러스터 ID입니다.• AWS Management 콘솔 또는 API 응답의 AWS_CLOUDHSM에서 CloudHSM의 Origin 값입니다.• 키 상태 값은 (p. 175)일 수 있습니다.Unavailable 상태 해결에 도움을 받으려면 사용 불가능한 픽스

CMKs (p. 320) 단원을 참조하십시오.

사용자 지정 키 스토어에서 CMKs를 보려면(콘솔)

1. https://console.aws.amazon.com/kms에서 AWS KMS 콘솔을 엽니다.2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.

314

Page 323: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사용 CMKs 사용자 지정 키 스토어에서

3. 탐색 창에서 고객 관리형 키를 선택합니다.4. 오른쪽 상단 모서리에서 기어 아이콘을 선택하고 Custom key store ID(사용자 지정 키 스토어 ID) 및

Origin(오리진)을 선택한 다음, 확인을 선택합니다.5. 사용자 지정 키 스토어에서 CMKs를 식별하려면 CMKsOrigin(오리진) 값이 AWS_CLOUDHSM인 를 찾

습니다. 특정 사용자 지정 키 스토어에서 CMKs를 식별하려면 사용자 지정 키 스토어 ID 열에서 값을 확인합니다.

6. 사용자 지정 키 스토어에서 CMK의 별칭 또는 키 ID를 선택합니다.

이 페이지에는 Amazon 리소스 이름(ARN), 키 정책 및 태그를 포함하여 CMK에 대한 세부 정보가 표시됩니다.

7. 암호화 구성 탭을 선택합니다. 탭은 일반 구성(General configuration) 섹션 아래에 있습니다.

이 단원에는 CMK의 사용자 지정 키 스토어 및 클러스터에 대한 정보가 포함되어 있습니다.

사용자 지정 키 스토어에서 CMKs를 보려면(API)

동일한 AWS KMS API 작업을 사용하여 CMKs, CMK, ListKeys, DescribeKey 등 모든 에 대해 사용할 사용자지정 키 스토어에서 를 볼 수 있습니다.GetKeyPolicy 예를 들어 describe-key의 다음 AWS CLI 작업은 사용자 지정 키 스토어의 CMK에 대한 특수 필드를 보여 줍니다. 이와 같은 명령을 실행하기 전에 예제 CMK ID를 유효한 값으로 바꿉니다.

$ aws kms describe-key --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

{ "KeyMetadata": { "AWSAccountId": "111122223333", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1537582718.431, "Enabled": true, "KeyManager": "CUSTOMER", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "Origin": "AWS_CLOUDHSM", "CloudHsmClusterId": "cluster-1a23b4cdefg", "CustomKeyStoreId": "cks-1234567890abcdef0", "Description": "CMK in custom key store" "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] }}

사용자 지정 키 스토어에서 CMKs를 찾거나 AWS CloudHSM에서 키 구성 요소 역할을 하는 CMK 클러스터의 키를 식별하는 방법은 찾기 CMKs 주요 재료 (p. 316) 단원을 참조하십시오.

사용 CMKs 사용자 지정 키 스토어에서귀하가 대칭적인 CMK 사용자 지정 키 스토어에서 (p. 310)다음 암호화 작업에 사용할 수 있습니다.

• Encrypt• 암호화 해제• GenerateDataKey• GenerateDataKeyWithoutPlaintext• ReEncrypt

315

Page 324: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드찾기 CMKs 주요 재료

&t={\f CMKs 및 Fixlet 메트릭 데이터 키 쌍은 사용자 지정 키 스토어에서 지원되지 않습니다. 그 결과, 스탠드메트릭에 특정한 작업을 사용할 수 없습니다. CMKs — 서명, 확인, 그리고 getpublickey. 또한 비대칭 데이터키 쌍을 생성하는 작업인 GenerateDataKeyPair 및 GenerateDataKeyPairWithoutPlaintext는 사용자 지정 키스토어에서 지원되지 않습니다.

귀하가 자신의 CMK 요청을 통해 CMK ID 또는 별칭으로, 사용자 지정 키 저장소를 지정할 필요가 없습니다.또는 AWS CloudHSM 클러스터. 응답에는 대칭을 위해 반환되는 동일한 필드가 포함됩니다. CMK.

그러나 CMK 사용자 정의 키 스토어에서 암호화 작업은 AWS CloudHSM 사용자 지정 키 저장소와 연결된 클러스터입니다. 이 작업은 CMK 을(를) 선택했습니다.

이것이 가능하려면 다음 조건이 충족되어야 합니다.

• The 주요 상태 (p. 175) of the CMK 반드시 Enabled. 주요 상태를 찾으려면 상태 필드의 필드 AWSManagement 콘솔 (p. 314) 또는 KeyState 필드의 필드 설명 응답.

• 사용자 지정 키 스토어는 AWS CloudHSM 클러스터에 연결되어 있어야 합니다. 그 상태 in the AWSManagement 콘솔 (p. 300) 또는 ConnectionState in the 설명서류저장소 응답은 CONNECTED.

• 사용자 지정 키 스토어에 연결된 AWS CloudHSM 클러스터는 최소 하나의 활성 HSM을 포함해야 합니다. 클러스터에서 활성 HSM의 수를 찾으려면 AWS KMS 콘솔 (p. 300), AWS CloudHSM 콘솔 또는DescribeClusters 작업을 사용합니다.

• The AWS CloudHSM 클러스터에 대한 주요 재료 CMK. 클러스터에서 키 구성 요소가 삭제된 경우나 키 구성 요소를 포함하지 않은 백업에서 HSM이 생성된 경우에는 암호화 작업이 실패합니다.

이러한 조건들이 충족되지 않으면 암호화 작업이 실패하고 AWS KMS가 KMSInvalidStateException 예외를 반환합니다. 일반적으로 사용자 지정 키 스토어를 재연결 (p. 304)하기만 하면 됩니다. 추가적인 도움말은 실패 해결 방법 CMK (p. 321) 단원을 참조하십시오.

사용 시 CMKs 사용자 정의 키 스토어에서 CMKs 각 사용자 지정 키 스토어에서 초당 할당량 (p. 400) 암호화 작업 요청 할당량을 초과하는 경우, AWS KMS a ThrottlingException. 사용자 지정 키 스토어와 관련된 AWS cloudhsm 클러스터에서 사용자 지정 키 저장소와 관련이 없는 것을 포함하여 명령어 명령을 처리하는 경우 ThrottlingException 훨씬 더 저렴한 가격에. 어떤 요청에 대해 ThrottlingException이반환된 경우에는 요청 속도를 낮추고 명령을 다시 시도하십시오. 사용자 지정 키 스토어의 암호화 작업에 대한 요청 할당량에 대한 자세한 내용은 사용자 지정 키 스토어 할당량 (p. 400) 단원을 참조하십시오.

찾기 CMKs 주요 재료사용자 지정 키 저장소를 관리하는 경우 CMKs 각 사용자 지정 키 스토어에서. 예를 들어, 다음 작업 중 일부를 수행해야 할 수 있습니다.

• 추적 CMKs 의 사용자 지정 키 스토어에서 AWS CloudTrail 로그.• 미치는 영향 예측 CMKs 사용자 정의 키 저장소를 분리합니다.• 일정 삭제 CMKs 사용자 지정 키 저장소를 삭제하기 전에.

또한 여러분은 AWS CloudHSM 중요한 역할을 하는 CMKs. 비록 AWS KMS 관리를 CMKs 주요 자료를 통해여러분은 AWS CloudHSM 클러스터, 그 hsm 및 백업과 hsm의 키. 키 자료를 감사하거나 실수로 삭제로부터보호하거나 삭제한 후 hsmms와 클러스터 백업에서 삭제하기 위해 키를 식별해야 할 수 있습니다. CMK.

모든 주요 재료 CMKs 사용자 지정 키 스토어에 있는 kmsuser crypto 사용자 (p. 294) (CU). AWS KMS 에서는 AWS CloudHSM의 아마존 자원 이름(ARN)에 CMK.

검색하려면 CMKs 및 키 재료를 사용하여 다음 기법을 사용합니다.

• 찾기 CMKs 사용자 지정 키 스토어에서 (p. 317) — 이를 식별하는 방법 CMKs 사용자 지정 키 스토어 중하나 또는 모두를 대상으로 합니다.

• 사용자 지정 키 스토어에서 모든 키 찾기 (p. 317) — 클러스터의 모든 키를 찾는 방법은 CMKs 사용자 지정 키 스토어에서.

316

Page 325: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드찾기 CMKs 주요 재료

• 의 키 찾기 CMK (p. 319) — 특정 분야에서 주요 자재로 기능하는 클러스터의 키를 찾는 방법 CMK 사용자 지정 키 스토어에서.

• 찾기 CMK 핵심적인 (p. 318) — 검색 방법 CMK 클러스터의 특정 키를 사용합니다.

찾기 CMKs 사용자 지정 키 스토어에서사용자 지정 키 저장소를 관리하는 경우 CMKs 각 사용자 지정 키 스토어에서. 이 정보를 사용하여 CMK 작업 AWS CloudTrail 로그, 미치는 영향 예측 CMKs 사용자 정의 키 저장소를 분리하거나 CMKs 사용자 지정키 저장소를 삭제하기 전에.

을(를) 찾으려면 CMKs 사용자 지정 키 저장소(콘솔)을(를) 찾으려면 CMKs 특정 사용자 지정 키 스토어에서 고객 관리 키 페이지, 사용자 지정 키 저장소 이름 또는 사용자 지정 키 매장 ID 필드. 식별하려면 CMKs 모든 사용자 지정 키 스토어에서 CMKs with an 원산지 값cloudhsm. 화면에 열 옵션을 추가하려면 페이지의 오른쪽 상단 모서리에서 기어 아이콘을 선택합니다.

을(를) 찾으려면 CMKs API(Custom Key Store)에서을(를) 찾으려면 CMKs 사용자정의 키 스토어에서 listkey and 설명 작업을 수행한 후 CustomKeyStoreId값. 예제를 실행하기 앞서 가상의 사용자 지정 키 스토어 ID를 유효한 값으로 대체합니다.

Bash

검색하려면 CMKs 특정 사용자 지정 키 스토어에서 CMKs &t=<B>계정&t=; 및 &t=<B 그런 다음, 사용자지정 키 스토어의 ID를 필터링합니다.

for key in $(aws kms list-keys --query 'Keys[*].KeyId' --output text) ; do aws kms describe-key --key-id $key | grep '"CustomKeyStoreId": "cks-1234567890abcdef0"' --context 100; done

받기 위해 CMKs 고객 및 지역의 사용자 지정 키 스토어에서 검색 CustomKeyStoreId 값이 cks-.

for key in $(aws kms list-keys --query 'Keys[*].KeyId' --output text) ; do aws kms describe-key --key-id $key | grep '"CustomKeyStoreId": "cks-"' --context 100; done

PowerShell

검색하려면 CMKs 특정 사용자 지정 키 스토어에서 kmskeylist 가져오기 Get-kmskey cmdlet에서 CMKs&t=<B>계정&t=; 및 &t=<B 그런 다음, 사용자 지정 키 스토어의 ID를 필터링합니다.

PS C:\> (Get-KMSKeyList).KeyArn | foreach {Get-KMSKey -KeyId $_} | where CustomKeyStoreId -eq 'cks-1234567890abcdef0'

받기 위해 CMKs 사용자 지정 키 스토어에 있는 모든 사용자 지정 키 스토어에서 -like 비교 연산자. 모든 사용자 지정 키 스토어 식별자는 cks-로 시작합니다.

PS C:\> (Get-KMSKeyList).KeyArn | foreach {Get-KMSKey -KeyId $_} | where CustomKeyStoreId -like 'cks*'

사용자 지정 키 스토어에서 모든 키 찾기사용자 지정 키 스토어에서 키 구성 요소 역할을 하는 AWS CloudHSM 클러스터의 키를 식별할 수 있습니다. 이를 위해 cloudhsm_mgmt_util의 findAllKeys 명령을 사용하여 kmsuser가 소유 또는 공유하는 모든 키

317

Page 326: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드찾기 CMKs 주요 재료

의 키 핸들을 찾습니다. 로그인하지 않은 경우 kmsuser 이외의 키를 AWS KMS, 모든 키는 kmsuser 소유권은 AWS KMS CMKs.

클러스터의 CO(Crypto Officer)는 사용자 지정 키 스토어의 연결을 해제하지 않고도 이 명령을 실행할 수 있습니다.

1. cloudhsm_mgmt_util 실행 준비 주제에 설명된 절차를 사용하여 cloudhsm_mgmt_util을 시작합니다.2. CO(Crypto Officer) 계정을 사용해 cloudhsm_mgmt_util에 로그인합니다.3. listUsers 명령을 사용해 kmsuser CU(Crypto User)의 사용자 ID를 찾습니다.

이 예제에서 kmsuser의 사용자 ID는 3입니다.

aws-cloudhsm> listUsersUsers on server 0(10.0.0.1):Number of users found:3

User Id User Type User Name MofnPubKey LoginFailureCnt 2FA 1 PCO admin NO 0 NO 2 AU app_user NO 0 NO 3 CU kmsuser NO 0 NO

4. findAllKeys 명령을 사용해 kmsuser가 소유 또는 공유하는 모든 키의 키 핸들을 찾습니다. 예제 사용자ID를 클러스터에 있는 kmsuser의 실제 사용자 ID로 바꿉니다.

예제 출력은 클러스터의 두 HSM 모두에서 kmsuser가 키 핸들이 8, 9 및 262162인 키를 소유하고 있음을 보여줍니다.

aws-cloudhsm> findAllKeys 3 0Keys on server 0(10.0.0.1):Number of keys found 3number of keys matched from start index 0::68,9,262162findAllKeys success on server 0(10.0.0.1)

Keys on server 1(10.0.0.2):Number of keys found 6number of keys matched from start index 0::68,9,262162findAllKeys success on server 1(10.0.0.2)

찾기 CMK 핵심적인핵심 핸들을 알고 있는 경우 kmsuser 클러스터에서 소유하는 경우, CMK 사용자 지정 키 스토어에서.

언제 AWS KMS 주요 재질을 CMK 여러분의 AWS CloudHSM 클러스터를 사용하여 CMK 키 라벨 에서. 라벨값을 변경하지 않은 경우 getattribute key_mgmt_util 또는 cloudhsm_mgmt_util 명령을 사용하여 키를 CMK.

이 절차를 실행하려면 kmsuser CU로 로그인할 수 있도록 사용자 지정 키 스토어를 임시로 연결 해제해야합니다.

Note

사용자 지정 키 스토어의 연결이 해제된 상태에서는 사용자 지정 키 스토어에서 고객 마스터 키(CMK)를 생성하거나, 암호화 작업을 위해 기존 CMK를 사용하려는 모든 시도가 실패합니다. 이 작업은 사용자가 기밀 데이터를 저장하거나 액세스하지 못하도록 차단합니다.

318

Page 327: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드찾기 CMKs 주요 재료

1. 이미 연결이 해제되지 않은 경우에는 사용자 지정 키 스토어의 연결을 해제한 다음, kmsuser로key_mgmt_util에 로그인합니다(연결 해제 및 로그인 방법 (p. 326) 설명 참조).

2. key_mgmt_util 또는 cloudhsm_mgmt_util에서 getAttribute 명령을 사용해 특정 키 핸들의 라벨 속성(OBJ_ATTR_LABEL, 속성 3)을 확인합니다.

예를 들어, 이 명령은 getAttribute cloudhsm_mgmt_util에서 레이블 애트리뷰트를 가져옵니다(애트리뷰트) 3키 핸들 포함 키 262162. 출력에 키 표시 262162 이 기능은 CMK ARN 포함arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab.이 명령을 실행하기 전에 예제 키 핸들을 유효한 1로 교체합니다.

주요 속성 목록을 보려면 리제트리트 명령 또는 주요 특성 참조 in the AWS CloudHSM User Guide.

aws-cloudhsm> getAttribute 262162 3

Attribute Value on server 0(10.0.1.10):OBJ_ATTR_LABELarn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

Attribute Value on server 1(10.0.1.12):OBJ_ATTR_EXTRACTABLEarn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

3. key_mgmt_util 또는 cloudhsm_mgmt_util을 로그아웃하고 사용자 지정 키 스토어의 연결을 해제합니다(로그아웃 및 재연결 방법 (p. 327) 참조).

의 키 찾기 CMK귀하는 CMK ID CMK 사용자 정의 키 스토어에서 핵심 재료 역할을 하는 클러스터의 키를 식별합니다. 그런다음, 키 핸들을 사용해 AWS CloudHSM 클라이언트 명령에서 키를 식별할 수 있습니다.

언제 AWS KMS 주요 재질을 CMK 여러분의 AWS CloudHSM 클러스터를 사용하여 CMK 키 라벨 에서. 라벨값을 변경하지 않은 경우 핀키 key_mgmt_util 명령을 사용하여 키 재질의 키 핸들을 CMK. 이 절차를 실행하려면 kmsuser CU로 로그인할 수 있도록 사용자 지정 키 스토어를 임시로 연결 해제해야 합니다.

Note

사용자 지정 키 스토어의 연결이 해제된 상태에서는 사용자 지정 키 스토어에서 고객 마스터 키(CMK)를 생성하거나, 암호화 작업을 위해 기존 CMK를 사용하려는 모든 시도가 실패합니다. 이 작업은 사용자가 기밀 데이터를 저장하거나 액세스하지 못하도록 차단합니다.

1. 이미 연결이 해제되지 않은 경우에는 사용자 지정 키 스토어의 연결을 해제한 다음, kmsuser로key_mgmt_util에 로그인합니다(연결 해제 및 로그인 방법 (p. 326) 설명 참조).

2. 사용 핀키 key_mgmt_util에서 명령을 검색하여 CMK 사용자 지정 키 스토어에서. 예 대체 CMK ARN의가치 -l 유효한 ('라벨') 매개 변수에 유효한 CMK ARN.

예를 들어, 이 명령은 예를 일치하는 레이블의 키를 찾습니다. CMK ARN, arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab. 예제 출력에 키 핸들이 있는 키가 표시됩니다. 262162 님이 CMK ARN의 라벨. 이제 다른 key_mgmt_util 명령에서 이 키 핸들을 사용할 수 있습니다.

Command: findKey -l arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890abTotal number of keys present 1

number of keys matched from start index 0::1262162

Cluster Error Status Node id 1 and err state 0x00000000 : HSM Return: SUCCESS

319

Page 328: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드삭제 일정 CMKs 맞춤형 키 스토어에서

Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

Cfm3FindKey returned: 0x00 : HSM Return: SUCCESS

3. key_mgmt_util에서 로그아웃하고 사용자 지정 키 스토어를 다시 연결합니다(로그아웃 및 재연결 방법 (p. 327) 설명 참조).

삭제 일정 CMKs 맞춤형 키 스토어에서귀하가 고객 마스터 키 (CMK) 삭제 일정 CMK (p. 266). 삭제하는 데 사용할 동일한 절차를 사용합니다. CMK출처 AWS KMS. 뿐만 아니라 대기 시간이 만료되면 AWS KMS가 연결 AWS CloudHSM 클러스터에서 해당되는 키 구성 요소를 삭제할 수 있도록 사용자 지정 키 스토어의 연결을 유지합니다.

Warning

삭제 CMK 데이터 암호화, 보안, 보안, 보안, 보안, 보안, 보안, 보안 및 CMK. 일정 삭제 전에 CMK,과거 사용 검사 (p. 274) of the CMK and 만들기 Amazon CloudWatch 알람 (p. 271) 다른 사람이CMK 삭제 대기 중입니다. 가능한 경우 비활성화 CMK (p. 47)을(를) 삭제하는 대신 를 클릭합니다.

일정 삭제 시 CMK 맞춤형 키 스토어에서 주요 상태 (p. 175) 변경 사항 삭제 대기 중. The CMK 여전히 삭제대기 중 대기 기간에 걸쳐 CMK 이(가) 사용자 지정 키 저장소를 분리합니다. (p. 304). 이렇게 하면 CMK 대기 기간 중 언제든지.

대기 기간이 만료되면 AWS KMS 삭제 CMK AWS KMS. 그런 다음 AWS KMS는 연결 AWS CloudHSM 클러스터에서 키 구성 요소를 삭제하기 위해 최선의 노력을 다합니다. AWS KMS에서 키 스토어의 연결이 해제된경우처럼 AWS KMS가 키 구성 요소를 삭제할 수 없는 경우에는 클러스터에서 수동으로 불필요한 키 구성 요소를 삭제 (p. 324)해야 할 수 있습니다.

AWS KMS는 클러스터 백업에서 키 구성 요소를 삭제하지 않습니다. 삭제하더라도 CMK 출처 AWS KMS 주요 자료를 삭제하고 AWS CloudHSM 클러스터에서 생성된 클러스터에는 삭제된 키 재료 가 포함될 수 있습니다. 키 자료를 영구적으로 삭제하려면 생성 날짜 보기 (p. 314) of the CMK. 그런 다음, 키 구성 요소가 포함되어 있을 수 있는 모든 클러스터 백업을 삭제합니다.

사용자 지정 키 스토어 문제 해결사용자 지정 키 스토어는 가용성 및 복원력을 갖추도록 설계되었습니다. 하지만 사용자 지정 키 스토어가 계속 작동하도록 몇 가지 오류 조건을 복구해야 할 수도 있습니다.

주제• 사용 불가능한 픽스 CMKs (p. 320)• 실패 해결 방법 CMK (p. 321)• 연결 오류를 수정하는 방법 (p. 321)• 유효하지 않은 kmsuser 자격 증명을 수정하는 방법 (p. 323)• 불필요한 키 구성 요소를 삭제하는 방법 (p. 324)• 삭제된 키 자료를 복구하는 방법 CMK (p. 324)• kmsuser로 로그인하는 방법 (p. 325)

사용 불가능한 픽스 CMKsThe 주요 상태 (p. 175) of 고객 마스터 키 (CMKs)는 일반적으로 Enabled. 마찬가지로 CMKs의 주요 상태는CMKs 사용자 지정 키 스토어에서 삭제하거나 삭제하도록 예약합니다. 하지만 다른 CMKs, CMKs 맞춤형 키스토어에서 주요 상태 (p. 175) of Unavailable.

320

Page 329: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드실패 해결 방법 CMK

의 주요 상태 Unavailable 이는 CMK 맞춤형 키 스토어에서 해제된 AWS CloudHSM 클러스터 (p. 304)다시 연결하려고 시도합니다. a CMK 을(를) 볼 수 없습니다. CMK을(를) 사용할 수 없습니다. 암호화 작업 (p. 315).

의 주요 상태를 찾으려면 CMK, 고객 관리 키 페이지, 보기 상태 필드 CMK. 또는 DescribeKey 작업을 사용해응답의 KeyState 요소를 확인합니다. 자세한 내용은 키 보기 (p. 27) 단원을 참조하십시오.

The CMKs 연결되지 않은 사용자 지정 키 스토어에서 주요 상태 Unavailable 또는 PendingDeletion.CMKs 사용자 지정 키 저장소에서 삭제할 예정인 Pending Deletion 사용자 지정 키 스토어가 연결되지않은 경우에도 키 상태가 AWS CloudHSM 클러스터. 따라서 사용자 지정 키 스토어를 재연결하지 않고도 예약된 키 삭제를 취소할 수 있습니다.

사용할 수 없는 문제를 해결하려면 CMK, 사용자 지정 키 스토어를 다시 연결합니다. (p. 304). 사용자 지정 키 저장소가 다시 연결되면 CMKs 사용자 지정 키 스토어는 다음과 같은 이전 상태로 자동 복원됩니다.Enabled 또는 Disabled. CMKs 보류 중인 삭제가 PendingDeletion 상태. 그러나 문제가 지속되지만 사용 불가 설정 및 비활성화 CMK (p. 47) 은(는) 키 상태를 변경하지 않습니다. 이러한 활성화 또는 비활성화 작업은 키가 사용 가능한 상태가 될 때만 효과가 있습니다.

연결 실패에 대한 도움말은 연결 오류를 수정하는 방법 (p. 321) 단원을 참조하십시오.

실패 해결 방법 CMK생성 및 사용에 대한 문제 CMKs 사용자 지정 키 저장소의 문제로 인해 사용자 지정 키 저장소에서 AWSCloudHSM 클러스터, CMK, 또는 키 재료.

사용자 지정 키 저장소가 AWS CloudHSM 클러스터, 주요 상태 CMKs 사용자 지정 키 스토어에서 Unavailable. 생성 요청 모두 CMKs 연결되지 않은 사용자 지정 키 스토어에서CustomKeyStoreInvalidStateException 예외. 데이터 키를 암호화, 해독 또는 생성하라는 모든 요청은 KMSInvalidStateException 예외 메시지를 반환합니다. 이 문제를 수정하려면 사용자 지정 키 스토어를 재연결합니다 (p. 304).

그러나 사용자 지정 키 스토어를 사용하려는 시도 CMK for 암호화 작업 (p. 315) 주요 상태가 Enabled 사용자 지정 키 저장소의 연결 상태는 Connected. 이는 다음 조건 중 하나로 인해 발생할 수 있습니다.

• 이 브랜드의 주요 재질은 CMK 이(가) 관련 목록에서 삭제되었을 수 있습니다. AWS CloudHSM 클러스터.조사하려면 키 핸들 찾기 (p. 314) 중요한 요소가 CMK 필요한 경우, 핵심 재료 복구 (p. 324).

• 사용자 지정 키 스토어에 연결된 AWS CloudHSM 클러스터에서 모든 HSM이 삭제되었습니다. 사용 방법CMK 암호화 작업의 사용자 지정 키 저장소에서 AWS CloudHSM 클러스터는 하나 이상의 활성 HSM을 포함해야 합니다. AWS CloudHSM 클러스터에서 HSM의 수와 상태를 확인하려면 AWS CloudHSM 콘솔을사용하거나 DescribeClusters 작업을 사용합니다. 클러스터에 HSM을 추가하려면 AWS CloudHSM 콘솔또는 CreateHsm 작업을 사용합니다.

• 사용자 지정 키 스토어에 연결된 AWS CloudHSM 클러스터가 삭제되었습니다. 이 문제를 수정하려면 원래 클러스터와 관련된 백업에서 클러스터를 생성합니다(예: 원래 클러스터의 백업이나 원래 클러스터를생성하는 데 사용된 백업). 그런 다음, 사용자 지정 키 스토어 설정에서 클러스터 ID를 편집 (p. 302)합니다. 지침은 삭제된 키 자료를 복구하는 방법 CMK (p. 324)을 참조하십시오.

연결 오류를 수정하는 방법시도하는 경우 사용자 지정 키 스토어 연결 (p. 304) to its AWS CloudHSM 클러스터를 사용하지만 작업이실패합니다. 사용자 지정 키 저장소의 연결 상태가 FAILED. 사용자 정의 키 저장소의 상태를 확인하려면 상태 사용자 정의 키 저장소의 열 AWS Management 콘솔 또는 ConnectionState 요소 설명서류저장소 응답.

또는, 일부 연결 시도가 쉽게 감지되는 클러스터 구성 오류로 인해 빠르게 실패합니다. 이 경우 상태 또는ConnectionState 여전히 DISCONNECTED. 오류 메시지가 나타나거나 예외 시도가 실패한 이유를 설명합

321

Page 330: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드연결 오류를 수정하는 방법

니다. 예외 설명과 클러스터 요구 사항 (p. 297)을 검토하고, 문제를 해결하고, 필요한 경우 사용자 지정 키스토어를 업데이트 (p. 302)한 후 다시 연결을 시도하십시오.

연결 상태가 FAILED인 경우 DescribeCustomKeyStores 작업을 실행하고 응답에서ConnectionErrorCode 요소를 확인하십시오.

Note

사용자 지정 키 스토어의 연결 상태가 FAILED이면 재연결을 시도하기에 앞서 사용자 지정 키 스토어의 연결을 해제 (p. 304)해야 합니다. 연결 상태가 FAILED이면 사용자 지정 키 스토어를 연결할수 없습니다.

• CLUSTER_NOT_FOUND는 AWS KMS가 지정된 클러스터 ID로 AWS CloudHSM 클러스터를 찾을 수 없음을 나타냅니다. 잘못된 클러스터 ID가 API 작업에 제공되었거나 클러스터가 삭제되었지만 대체되지않았기 때문에 이런 문제가 발생할 수 있습니다. 이러한 오류를 확인하려면 AWS CloudHSM 콘솔 또는DescribeClusters 작업을 사용하여 클러스터 ID를 확인합니다. 클러스터가 삭제된 경우에는 원래 클러스터의 최신 백업에서 클러스터를 생성합니다. 그런 다음, 사용자 지정 키 스토어의 연결을 해제 (p. 304)하고, 사용자 지정 키 스토어 (p. 302) 클러스터 ID 설정을 편집하고, 클러스터에 사용자 지정 키 스토어를다시 연결 (p. 304)합니다.

• INSUFFICIENT_CLOUDHSM_HSMS는 연결 AWS CloudHSM 클러스터에 어떤 HSM도 포함되어 있지 않음을 나타냅니다. 연결을 하려면 클러스터에 최소 하나의 HSM이 포함되어 있어야 합니다. 클러스터에서HSM의 수를 확인하려면 DescribeClusters 작업을 사용합니다. 이 오류를 해결하려면 클러스터에 최소 하나의 HSM을 추가합니다. 여러 개의 HSM을 추가하는 경우에는 서로 다른 가용 영역에서 이들을 생성하는것이 가장 좋습니다.

• INTERNAL_ERROR는 AWS KMS가 내부 오류로 인해 요청을 완료하지 못했음을 나타냅니다. 요청을 다시시도하십시오. ConnectCustomKeyStore 요청의 경우, 사용자 지정 키 스토어를 연결 해제한 후 다시 연결을 시도하십시오.

• INVALID_CREDENTIALS는 kmsuser 계정 암호가 올바르지 않기 때문에 AWS KMS가 연결 AWSCloudHSM 클러스터에 로그인할 수 없음을 나타냅니다. 이러한 오류에 대한 도움말은 유효하지 않은kmsuser 자격 증명을 수정하는 방법 (p. 323) 단원을 참조하십시오.

• NETWORK_ERRORS는 일반적으로 일시적인 네트워크 문제를 나타냅니다. 사용자 지정 키 스토어의 연결을해제 (p. 304)하고 몇 분 기다렸다가 다시 연결을 시도합니다.

• SUBNET_NOT_FOUND는 AWS CloudHSM 클러스터 구성에서 하나 이상의 서브넷이 삭제되었음을 나타냅니다. AWS KMS가 클러스터 구성에서 서브넷을 모두 찾을 수 없는 경우, 사용자 지정 키 스토어를 AWSCloudHSM 클러스터에 연결하려는 시도가 실패합니다.

이 오류를 수정하려면 동일한 AWS CloudHSM 클러스터의 최근 백업에서 클러스터를 만듭니다. 이 프로세스는 VPC 및 전용 서브넷을 사용하여 새 클러스터 구성을 생성합니다. 새 클러스터가 사용자 지정 키 저장소에 대한 요구 사항 (p. 297)새 클러스터 ID를 참조하십시오. 그런 다음 새 클러스터를 사용자 지정 키스토어와 연결하려면 사용자 지정 키 스토어를 연결 해제 (p. 304)하고, 사용자 지정 키 스토어의 클러스터 ID를 새 클러스터의 ID로 변경 (p. 302)한 후, 다시 연결을 시도합니다.

Tip

kmsuser 암호를 재설정 (p. 323)하지 않으려면 AWS CloudHSM 클러스터의 최신 백업을 사용합니다.

• USER_LOCKED_OUT은 너무 많은 암호 시도의 실패로 인해 kmsuser CU(Crypto User) 계정 (p. 294)이연결된 AWS CloudHSM 클러스터에 액세스할 수 없도록 잠겨 있음을 나타냅니다. 이러한 오류에 대한 도움말은 유효하지 않은 kmsuser 자격 증명을 수정하는 방법 (p. 323) 단원을 참조하십시오.

이러한 오류를 수정하려면 사용자 지정 키 스토어의 연결을 해제 (p. 304)하고, cloudhsm_mgmt_util의 changePswd 명령을 사용해 kmsuser 계정 암호를 변경합니다. 그런 다음, 사용자 지정 키 스토어의kmsuser 암호 설정을 편집 (p. 302)하고 다시 연결을 시도합니다. 도움말은 유효하지 않은 kmsuser 자격 증명을 수정하는 방법 (p. 323) 주제에 설명되어 있는 절차를 참조하십시오.

• USER_LOGGED_IN은 kmsuser CU 계정이 연결된 AWS CloudHSM 클러스터에 로그인되었음을 나타냅니다. 이렇게 하면 AWS KMS가 kmsuser 계정 암호를 교체하고 클러스터에 로그인할 수 없습니다. 이 오류를 해결하려면 클러스터에서 kmsuser CU를 로그아웃합니다. 클러스터에 로그인하기 위해 kmsuser

322

Page 331: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드유효하지 않은 kmsuser 자격 증명을 수정하는 방법

암호를 변경한 경우 사용자 지정 키 스토어에 대한 키 스토어 암호 값도 업데이트해야 합니다. 도움말은 로그아웃 및 재연결 방법 (p. 327)를 참조하십시오.

• USER_NOT_FOUND는 AWS KMS가 연결된 AWS CloudHSM 클러스터에서 kmsuser CU 계정을 찾을 수없음을 나타냅니다. 이 오류를 해결하려면 클러스터에 kmsuser CU 계정을 만든 (p. 298) 다음 사용자 지정 키 스토어에 대한 키 스토어 암호 값을 업데이트 (p. 302)합니다. 도움말은 유효하지 않은 kmsuser자격 증명을 수정하는 방법 (p. 323)를 참조하십시오.

유효하지 않은 kmsuser 자격 증명을 수정하는 방법사용자 지정 키 스토어를 연결 (p. 304)하면 AWS KMS가 연결 AWS CloudHSM 클러스터에 kmsuserCU(Crypto User) (p. 294)로 로그인합니다. 사용자 지정 키 스토어의 연결이 해제되어 있는 한, 로그인 상태를 유지합니다. DescribeCustomKeyStores 응답에서는 ConnectionState의 값이 FAILED,ConnectionErrorCode 값이 INVALID_CREDENTIALS로 표시됩니다(아래 예제 참조).

사용자 지정 키 스토어의 연결을 해제하고 kmsuser 암호를 변경한 경우, AWS KMS는 kmsuser CU 계정의자격 증명으로 AWS CloudHSM 클러스터에 로그인할 수 없습니다. 따라서 사용자 지정 키 스토어를 연결하려는 모든 시도가 실패합니다. 다음 예와 같이 DescribeCustomKeyStores 응답은 ConnectionState값을 FAILED로 표시하고 ConnectionErrorCode 값을 INVALID_CREDENTIALS로 표시합니다.

$ aws kms describe-custom-key-stores --custom-key-store-name ExampleKeyStore{ "CustomKeyStores": [ "CloudHsmClusterId": "cluster-1a23b4cdefg", "ConnectionErrorCode": "INVALID_CREDENTIALS" "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "TrustAnchorCertificate": "<certificate string appears here>", "CreationDate": "1.499288695918E9", "ConnectionState": "FAILED" ],}

또한 올바르지 않은 암호로 클러스터에 로그인하려는 시도가 5번 실패하면 AWS CloudHSM이 사용자 계정을 잠급니다. 클러스터에 로그인하려면 계정 암호를 변경해야 합니다.

kmsuser CU로 클러스터에 로그인하려고 할 때 AWS KMS가 잠금 응답을 수신하면 사용자 지정 키 스토어를 연결하라는 요청이 실패합니다. DescribeCustomKeyStores 응답에서 ConnectionState의 값은FAILED, ConnectionErrorCode의 값은 USER_LOCKED_OUT입니다(아래 예제 참조).

$ aws kms describe-custom-key-stores --custom-key-store-name ExampleKeyStore{ "CustomKeyStores": [ "CloudHsmClusterId": "cluster-1a23b4cdefg", "ConnectionErrorCode": "USER_LOCKED_OUT" "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "TrustAnchorCertificate": "<certificate string appears here>", "CreationDate": "1.499288695918E9", "ConnectionState": "FAILED" ],}

이러한 조건 중 하나를 복구하려면 다음 절차를 따르십시오.

1. 사용자 지정 키 스토어의 연결을 해제합니다 (p. 304).2. DescribeCustomKeyStores 작업을 실행하고 응답에서 ConnectionErrorCode 요소의 값을 확인합니

다.

323

Page 332: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드불필요한 키 구성 요소를 삭제하는 방법

• ConnectionErrorCode 값이 INVALID_CREDENTIALS인 경우에는 kmsuser 계정의 현재 암호를확인합니다. 필요한 경우, cloudhsm_mgmt_util에서 changePswd 명령을 사용하여 알려진 값으로 암호를 설정합니다.

• ConnectionErrorCode 값이 USER_LOCKED_OUT인 경우, cloudhsm_mgmt_util의 changePswd 명령을 사용하여 kmsuser 암호를 변경해야 합니다.

3. 클러스터의 현재 kmsuser 암호에 일치하도록 kmsuser 암호 설정을 편집 (p. 302)합니다. 이 작업은AWS KMS에 클러스터에 로그인하기 위해 사용하는 암호를 알려줍니다. 클러스터의 kmsuser 암호는변경되지 않습니다.

4. 사용자 지정 키 스토어를 연결합니다 (p. 304).

불필요한 키 구성 요소를 삭제하는 방법일정 삭제 후 CMK 사용자 지정 키 스토어에서 관련 키 자료를 관련 클러스터에서 수동으로 삭제해야 할 수있습니다.

여러분이 CMK 맞춤형 키 스토어에서 AWS KMS 생성 CMK 메타데이터 AWS KMS 관련된 핵심 자료를AWS CloudHSM 클러스터. 일정 삭제 시 CMK 사용자정의 키 스토어에서, 대기 기간 후 AWS KMS 삭제CMK 메타데이터. 그런 다음 AWS KMS는 해당되는 키 구성 요소를 클러스터에서 삭제하기 위해 최선의 노력을 다합니다. AWS KMS는 클러스터 백업에서 키 구성 요소를 삭제하려는 시도를 하지 않습니다.

AWS KMS가 키 구성 요소를 삭제할 수 없으면(예: 사용자 지정 키 스토어의 연결이 해제되어 있을 때) AWSKMS는 AWS CloudTrail 로그에 항목을 작성합니다. 항목에는 다음이 포함됩니다. CMK ID, AWS CloudHSM클러스터 ID 및 키 재료 키 핸들.

연결 AWS CloudHSM 클러스터에서 키 구성 요소를 삭제하려면 다음과 같은 절차를 사용하십시오. 이 예제에서는 AWS CLI 및 AWS CloudHSM 명령줄 도구를 사용하고 있지만, CLI 대신 AWS Management 콘솔을사용할 수 있습니다.

1. 아직 연결이 해제되지 않은 경우에는 사용자 지정 키 스토어의 연결을 해제한 다음, key_mgmt_util에 로그인합니다(연결 해제 및 로그인 방법 (p. 326) 설명 참조).

2. key_mgmt_util의 deleteKey 명령을 사용하여 클러스터의 HSM에서 키를 삭제합니다.

예를 들어 이 명령은 클러스터의 HSM에서 키 262162를 삭제합니다. 키 핸들은 CloudTrail 로그 항목에나열됩니다.

Command: deleteKey -k 262162

Cfm3DeleteKey returned: 0x00 : HSM Return: SUCCESS

Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

3. key_mgmt_util에서 로그아웃되고 사용자 지정 키 스토어를 다시 연결합니다(로그아웃 및 재연결 방법 (p. 327) 설명 참조).

삭제된 키 자료를 복구하는 방법 CMKA에 대한 핵심 자료가 고객 마스터 키 삭제됩니다. CMK 사용 불가 및 암호화를 위해 암호화된 모든ciphertext CMK 은(는) 해독할 수 없습니다. 이는 CMK 사용자 지정 키 저장소에서 삭제된 AWS CloudHSM클러스터. 하지만 키 구성 요소를 복구하는 것이 가능할 수 있습니다.

여러분이 고객 마스터 키 (CMK)에서 AWS KMS 관련 로그에 로그인 AWS CloudHSM 클러스터를 만들고CMK. 또한 자신만 알고 있는 값으로 암호를 변경하고 사용자 지정 키 스토어가 연결되어 있는 한 로그인 상

324

Page 333: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드kmsuser로 로그인하는 방법

태를 유지합니다. 키 소유자이자 키를 생성한 CU만 키를 삭제할 수 있기 때문에 HSM에서 실수로 키가 삭제될 일이 없습니다.

하지만 CMK 클러스터의 hsm에서 삭제됩니다. CMK 주요 상태는 결국 UNAVAILABLE. 사용하려는 경우CMK 암호화 작업을 위해 작업이 kmsinvalidstateexception 예외. 가장 중요한 것은, CMK 은(는) 해독할 수없습니다.

특정 상황에서 키 구성 요소가 포함된 백업에서 클러스터를 생성하여 삭제된 키 구성 요소를 복구할 수 있습니다. 이 전략은 삭제 전 키가 존재한 동안 최소 하나의 백업이 생성되었을 때만 효과가 있습니다.

다음 프로세스를 이용해 키 구성 요소를 복구합니다.

1. 키 구성 요소가 포함된 클러스터 백업을 찾습니다. 백업에는 클러스터와 암호화된 데이터를 지원하는 데필요한 모든 사용자와 키도 포함되어 있어야 합니다.

DescribeBackups 작업을 사용해 클러스터의 백업을 나열합니다. 그런 다음, 백업을 선택하는 데 도움이 되는 백업 타임스탬프를 사용합니다. 사용자 지정 키 스토어에 연결된 클러스터로 출력을 제한하려면Filters 파라미터를 사용합니다(아래 예제 참조).

$ aws cloudhsmv2 describe-backups --filters clusterIds=<cluster ID>{ "Backups": [ { "ClusterId": "cluster-1a23b4cdefg", "BackupId": "backup-9g87f6edcba", "CreateTimestamp": 1536667238.328, "BackupState": "READY" }, ... ]}

2. 선택한 백업에서 클러스터를 생성합니다. 백업에 삭제된 키와 기타 사용자 및 클러스터에서 필요한 키가포함되어 있는지 확인합니다.

3. 속성을 편집할 수 있도록 사용자 지정 키 스토어의 연결을 해제 (p. 304)합니다.4. 사용자 지정 키 스토어의 클러스터 ID를 편집 (p. 302)합니다. 백업에서 생성한 클러스터의 클러스터 ID

를 입력합니다. 클러스터가 원래 클러스터와 백업 기록을 공유하기 때문에 새 클러스터 ID는 유효해야 합니다.

5. 사용자 지정 키 스토어를 다시 연결합니다. (p. 304)

kmsuser로 로그인하는 방법사용자 지정 키 스토어에서 AWS CloudHSM 클러스터의 키 구성 요소를 생성 및 관리하기 위해 AWSKMS는 kmsuser CU(Crypto User) 계정 (p. 294)을 사용합니다. 클러스터에서 kmsuser CU 계정을 생성 (p. 297)하고 사용자 지정 키 스토어를 생성할 때 AWS KMS에 암호를 제공합니다.

일반적으로 AWS KMS는 kmsuser 계정을 관리합니다. 하지만 일부 작업에서는 사용자 지정 키 스토어의 연결을 해제하고, kmsuser CU로 클러스터에 로그인하고, cloudhsm_mgmt_util 및 key_mgmt_util 명령줄 도구를 사용해야 합니다.

Note

사용자 지정 키 스토어의 연결이 해제된 상태에서는 사용자 지정 키 스토어에서 고객 마스터 키(CMK)를 생성하거나, 암호화 작업을 위해 기존 CMK를 사용하려는 모든 시도가 실패합니다. 이 작업은 사용자가 기밀 데이터를 저장하거나 액세스하지 못하도록 차단합니다.

이 주제에서는 사용자 지정 키 스토어의 연결을 해제하고 (p. 326) kmsuser로 로그인을 하고, AWSCloudHSM 명령줄 도구를 실행하고, 사용자 지정 키 스토어를 로그아웃한 후 다시 연결 (p. 327)하는 방법을 설명합니다.

325

Page 334: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드kmsuser로 로그인하는 방법

주제• 연결 해제 및 로그인 방법 (p. 326)• 로그아웃 및 재연결 방법 (p. 327)

연결 해제 및 로그인 방법연결 클러스터에 kmsuser CU로 로그인해야 할 때마다 다음 절차를 따릅니다.

1. 아직 연결이 해제되지 않은 경우에는 사용자 지정 키 스토어의 연결을 해제합니다. AWS Management콘솔 또는 AWS KMS API를 사용할 수 있습니다.

사용자 지정 키가 연결된 경우 AWS KMS 은(는) kmsuser. 이렇게 하면 로그인하지 못하게 됩니다.kmsuser 또는 kmsuser 비밀번호.

예를 들어 이 명령은 DisconnectCustomKeyStore를 사용해 예제 키 스토어의 연결을 해제합니다. 예제에 나온 사용자 지정 키 스토어 ID를 유효한 ID로 바꿉니다.

$ aws kms disconnect-custom-key-store --custom-key-store-id cks-1234567890abcdef0

2. cloudhsm_mgmt_util을 시작합니다. 에 설명된 절차를 사용합니다. cloudhsm_mgmt_util 실행 준비 섹션AWS CloudHSM User Guide.

3. AWS CloudHSM 클러스터의 cloudhsm_mgmt_util에 CO(Crypto Officer)로 로그인합니다.

예를 들어 이 명령은 admin이라는 CO로 로그인합니다. 예제에 나온 CO 사용자 이름 및 암호를 유효한이름과 암호로 바꿉니다.

aws-cloudhsm>loginHSM CO admin <password>loginHSM success on server 0(10.0.2.9)loginHSM success on server 1(10.0.3.11)loginHSM success on server 2(10.0.1.12)

4. 사용 창체병 명령을 사용하여 kmsuser 계정을 만드십시오. (AWS KMS 사용자 지정 키 저장소를 연결할 때 암호를 회전합니다.) 암호는 7-32자 영숫자로 구성되어야 합니다. 대소문자가 구분되며 어떤 특수문자도 포함해서는 안 됩니다.

예를 들어 이 명령은 kmsuser 암호를 tempPassword로 변경합니다.

aws-cloudhsm>changePswd CU kmsuser tempPassword

*************************CAUTION********************************This is a CRITICAL operation, should be done on all nodes in thecluster. Cav server does NOT synchronize these changes with thenodes on which this operation is not executed or failed, pleaseensure this operation is executed on all nodes in the cluster.****************************************************************

Do you want to continue(y/n)?yChanging password for kmsuser(CU) on 3 nodes

5. 설정한 암호를 사용해 kmsuser로 key_mgmt_util 또는 cloudhsm_mgmt_util에 로그인합니다. 자세한 지침은 cloudhsm_mgmt_util 시작하기 및 key_mgmt_util 시작하기를 참조하십시오. 사용하는 도구는 작업마다 다릅니다.

예를 들어 이 명령은 key_mgmt_util에 로그인합니다.

Command: loginHSM -u CU -s kmsuser -p tempPasswordCfm3LoginHSM returned: 0x00 : HSM Return: SUCCESS

326

Page 335: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드kmsuser로 로그인하는 방법

Cluster Error StatusNode id 0 and err state 0x00000000 : HSM Return: SUCCESSNode id 1 and err state 0x00000000 : HSM Return: SUCCESSNode id 2 and err state 0x00000000 : HSM Return: SUCCESS

로그아웃 및 재연결 방법1. 작업을 수행한 다음, 명령줄 도구를 로그아웃합니다. 로그아웃을 하지 않으면 사용자 지정 키 스토어를

재시도하려는 연결이 실패합니다.

Command: logoutHSMCfm3LogoutHSM returned: 0x00 : HSM Return: SUCCESS

Cluster Error StatusNode id 0 and err state 0x00000000 : HSM Return: SUCCESSNode id 1 and err state 0x00000000 : HSM Return: SUCCESS

2. 사용자 지정 키 스토어에 대한 kmsuser 암호 설정 (p. 302)을 편집합니다.

AWS KMS에 클러스터의 kmsuser의 현재 암호를 알려줍니다. 이 단계를 생략하면 AWS KMS가kmsuser로 클러스터에 로그인할 수 없으며, 사용자 지정 키 스토어를 재연결하려는 모든 시도가 실패합니다. UpdateCustomKeyStore 작업의 AWS Management 콘솔 또는 KeyStorePassword 파라미터를 사용할 수 있습니다.

예를 들어, 이 명령은 AWS KMS 현재 암호가 tempPassword. 예제 암호를 실제 암호로 교체합니다.

$ aws kms update-custom-key-store --custom-key-store-id cks-1234567890abcdef0 --key-store-password tempPassword

3. 사용자 지정 키 스토어를 AWS KMS에 다시 연결합니다. 예제에 나온 사용자 지정 키 스토어 ID를 유효한 ID로 바꿉니다. 연결 프로세스 동안 AWS KMS는 kmsuser 암호를 자신만 알고 있는 값으로 변경합니다.

ConnectCustomKeyStore 작업이 신속하게 값을 반환하지만, 연결 프로세스의 소요 시간이 연장될 수 있습니다. 하지만 이러한 초기 응답은 연결 프로세스가 성공했음을 의미하지는 않습니다.

$ aws kms connect-custom-key-store --custom-key-store-id cks-1234567890abcdef0

4. DescribeCustomKeyStores 작업을 사용해 사용자 지정 키 스토어가 연결되어 있는지 확인합니다. 예제에 나온 사용자 지정 키 스토어 ID를 유효한 ID로 바꿉니다.

이 예제에서 연결 상태 필드는 사용자 지정 키 스토어가 현재 연결되어 있음을 나타냅니다.

$ aws kms describe-custom-key-stores --custom-key-store-id cks-1234567890abcdef0{ "CustomKeyStores": [ "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "CloudHsmClusterId": "cluster-1a23b4cdefg", "TrustAnchorCertificate": "<certificate string appears here>", "CreationDate": "1.499288695918E9", "ConnectionState": "CONNECTED" ],}

327

Page 336: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS VPC 엔드포인트 고려 사항

VPC 엔드포인트를 통해 AWS KMS에연결

인터넷을 통해 연결하지 않고 VPC의 프라이빗 엔드포인트를 통해 AWS KMS에 직접 연결할 수 있습니다.VPC 엔드포인트를 사용하는 경우 VPC와 AWS KMS 사이의 통신은 모두 AWS 네트워크에서 수행됩니다.

AWS KMS는 Amazon Virtual Private Cloud() Amazon VPC인터페이스 엔드포인트를 지원하며, 이는 AWSPrivateLink에서 제공합니다. 각 VPC 엔드포인트는 하나 이상의 탄력적 네트워크 인터페이스(ENI) 및 VPC서브넷의 프라이빗 IP 주소로 표현됩니다.

VPC 인터페이스 엔드포인트는 인터넷 게이트웨이, NAT 디바이스, VPN 연결 또는 연결 없이 VPC를 직접 에연결합니다. VPC의 인스턴스는 AWS KMS와 통신하는 데 퍼블릭 IP 주소를 필요로 하지 않습니다.

지원되는 AWS 리전

AWS KMS는 Amazon VPC 및 AWS KMS를 모두 사용할 수 있는 모든 AWS 리전의 VPC 엔드포인트를 지원합니다.

주제• AWS KMS VPC 엔드포인트 고려 사항 (p. 328)• AWS KMS용 VPC 엔드포인트 생성 (p. 328)• AWS KMS VPC 엔드포인트에 연결 (p. 329)• VPC 엔드포인트에 대한 액세스 제어 (p. 329)• 정책 설명에 VPC 엔드포인트 사용 (p. 332)• VPC 엔드포인트 로깅 (p. 334)

AWS KMS VPC 엔드포인트 고려 사항용 인터페이스 VPC 엔드포인트를 설정하기 전에 AWS KMShttps://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#vpce-interface-limitations에서 인터페이스 엔드포인트 속성 및 제한AmazonVPC 사용 설명서 주제를 검토하십시오.

VPC 엔드포인트에 대한 AWS KMS의 기능 지원은 다음과 같습니다.

• VPC 인터페이스 엔드포인트를 사용하여 VPC에서 모든 AWS KMS API 작업을 호출할 수 있습니다.• AWS KMS에서는 AWS KMS FIPS 엔드포인트에 대한 VPC 인터페이스 엔드포인트 생성을 지원하지 않습

니다.• 로그를 사용하여 VPC 엔드포인트를 통해 AWS CloudTrail AWS KMS(고객 마스터 키) 사용을 감사할 수

있습니다.CMKs 자세한 내용은 VPC 엔드포인트 로깅 (p. 334) 단원을 참조하십시오.

AWS KMS용 VPC 엔드포인트 생성Amazon VPC 콘솔 또는 Amazon VPC API를 사용하여 AWS KMS용 VPC 엔드포인트를 생성할 수 있습니다. 자세한 내용은 https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#create-interface-endpoint의 인터페이스 엔드포인트 생성Amazon VPC 사용 설명서을 참조하십시오.

328

Page 337: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드VPC 엔드포인트에 연결

AWS KMS용 VPC 엔드포인트를 생성하려면 다음 서비스 이름을 사용합니다.

com.amazonaws.region.kms

예를 들어 미국 서부(오레곤) 리전(us-west-2)에서 서비스 이름은 다음과 같습니다.

com.amazonaws.us-west-2.kms

VPC 엔드포인트를 더 쉽게 사용하려면 VPC 엔드포인트에 프라이빗 DNS 호스트 이름을 사용하도록 설정합니다. 프라이빗 DNS 이름 활성화 옵션을 선택하면 표준 AWS KMS VPC 호스트 이름(https://kms.<region>.amazonaws.com)이 VPC 엔드포인트로 확인됩니다.

이 옵션을 선택하면 VPC 엔드포인트를 더 쉽게 사용할 수 있습니다. AWS 및 SDKs는 기본적으로 표준 AWSCLI DNS 호스트 이름을 사용하므로 애플리케이션 및 명령에 VPC 엔드포인트 URL을 지정할 필요가 없습니다.AWS KMS

자세한 내용은 https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#access-service-though-endpoint의 인터페이스 엔드포인트를 통해 서비스 액세스Amazon VPC 사용 설명서를 참조하십시오.

AWS KMS VPC 엔드포인트에 연결AWS SDK, AWS CLI 또는 PowerShell용 AWS 도구을 사용하여 VPC 엔드포인트를 통해 AWS KMS에 연결할 수 있습니다. VPC 엔드포인트를 지정하려면 해당 DNS 이름을 사용합니다.

예를 들어 이 list-keys 명령은 endpoint-url 파라미터를 사용해 VPC 엔드포인트를 지정합니다. 이러한 명령을 사용하려면 VPC 엔드포인트 ID 예제를 본인 계정의 ID로 바꿉니다.

$ aws kms list-keys --endpoint-url https://vpce-1234abcdf5678c90a-09p7654s-us-east-1a.ec2.us-east-1.vpce.amazonaws.com

VPC 엔드포인트를 만들 때 프라이빗 호스트 이름을 사용하도록 설정한 경우 CLI 명령 또는 애플리케이션 구성에 VPC 엔드포인트 URL을 지정할 필요가 없습니다. 표준 AWS KMS DNS 호스트 이름(https://kms.<region>.amazonaws.com)가 VPC 엔드포인트로 확인됩니다. 및 AWS CLI는 기본적으로 이 호스트이름을 사용하므로 스크립트 및 애플리케이션의 내용을 변경하지 않고 VPC 엔드포인트를 사용할 수 있습니다.SDKs

프라이빗 호스트 이름을 사용하려면 VPC의 enableDnsHostnames 및 enableDnsSupport 속성을 true로 설정해야 합니다. 이러한 속성을 설정하려면 ModifyVpcAttribute 작업을 사용합니다.

VPC 엔드포인트에 대한 액세스 제어의 VPC 엔드포인트에 대한 액세스를 제어하려면 AWS KMSVPC 엔드포인트 정책을 VPC 엔드포인트에연결합니다. 엔드포인트 정책은 보안 주체가 VPC 엔드포인트를 사용하여 AWS KMS 리소스에 대한 AWSKMS 작업을 호출할 수 있는지 여부를 결정합니다.

엔드포인트를 생성할 때 VPC 엔드포인트 정책을 생성할 수 있으며, 언제든지 VPC 엔드포인트 정책을 변경할 수 있습니다. VPC 관리 콘솔이나 CreateVpcEndpoint 또는 ModifyVpcEndpoint 작업을 사용합니다. 템플릿을 사용하여 VPC 엔드포인트 정책을 생성하고 변경할 수도 있습니다.AWS CloudFormation VPC 관리콘솔 사용에 대한 도움말은 의 인터페이스 엔드포인트 생성 및 인터페이스 엔드포인트 수정을 참조하십시오.Amazon VPC 사용 설명서

329

Page 338: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드VPC 엔드포인트 정책 정보

Note

AWS KMS는 2020년 7월부터 VPC 엔드포인트 정책을 지원합니다. 해당 날짜 이전에 생성된 AWSKMS의 VPC 엔드포인트에는 기본 VPC 엔드포인트 정책 (p. 330)이 있지만, 언제든지 변경할 수있습니다.

JSON 정책 문서 작성 및 서식 지정에 대한 도움말은 IAM 사용 설명서의 IAM JSON 정책 참조를 참조하세요.

주제• VPC 엔드포인트 정책 정보 (p. 330)• 기본 VPC 엔드포인트 정책 (p. 330)• VPC 엔드포인트 정책 생성 (p. 331)• VPC 엔드포인트 정책 보기 (p. 332)

VPC 엔드포인트 정책 정보VPC 엔드포인트를 사용하는 AWS KMS 요청이 성공하려면 보안 주체는 다음 두 소스의 권한이 필요합니다.

• 키 정책, (p. 65) 정책IAM 또는 (p. 82)권한 부여는 보안 주체에게 리소스에 대한 작업( (p. 136) 또는 별칭)을 호출할 수 있는 권한을 부여해야 합니다.CMK

• VPC 엔드포인트 정책은 보안 주체에 엔드포인트를 사용하여 요청할 수 있는 권한을 부여해야 합니다.

예를 들어, 키 정책은 보안 주체에게 특정 CMK에 대해 Decrypt를 호출할 수 있는 권한을 부여할 수 있습니다. 그러나 VPC 엔드포인트 정책은 엔드포인트를 사용하여 해당 Decrypt에서 해당 보안 주체가 CMK를 호출하도록 허용하지 않을 수 있습니다.

또는 VPC 엔드포인트 정책이 보안 주체가 엔드포인트를 사용하여 특정 에 대해 DisableKeyCMKs를 호출하도록 허용할 수 있습니다. 하지만 보안 주체에게 키 정책, IAM 정책 또는 권한의 권한이 없으면 요청이 실패합니다.

기본 VPC 엔드포인트 정책모든 VPC 엔드포인트에는 VPC 엔드포인트 정책이 있지만, 정책을 지정할 필요는 없습니다. 정책을 지정하지 않으면 기본 엔드포인트 정책이 엔드포인트의 모든 리소스에 대해 모든 보안 주체의 모든 작업을 허용합니다.

그러나 AWS KMS 리소스의 경우 보안 주체는 키 정책 (p. 65), IAM 정책 (p. 82) 또는 권한 부여 (p. 136)에서작업을 호출할 수 있는 권한도 가지고 있어야 합니다. 따라서 실제로 기본 정책은 보안 주체가 리소스에서 작업을 호출할 권한이 있는 경우 엔드포인트를 사용하여 해당 작업을 호출할 수도 있다고 규정합니다.

{ "Statement": [ { "Action": "*", "Effect": "Allow", "Principal": "*", "Resource": "*" } ]}

보안 주체가 허용된 작업의 하위 집합에만 VPC 엔드포인트를 사용하도록 허용하려면 VPC 엔드포인트 정책을 생성하거나 수정 (p. 331)하십시오.

330

Page 339: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드VPC 엔드포인트 정책 생성

VPC 엔드포인트 정책 생성VPC 엔드포인트 정책은 보안 주체가 VPC 엔드포인트를 사용하여 리소스에서 작업을 수행할 수 있는 권한이 있는지 여부를 결정합니다. 리소스의 경우 보안 주체는 AWS KMS키 정책, (p. 65) 정책IAM 또는 (p. 82)권한 부여에서 작업을 수행할 수 있는 권한이 있어야 합니다. (p. 136)

각 VPC 엔드포인트 정책 문에는 다음 요소가 필요합니다.

• 작업을 수행할 수 있는 보안 주체• 수행할 수 있는 작업• 작업을 수행할 수 있는 리소스

정책 문은 VPC 엔드포인트를 지정하지 않습니다. 대신 정책이 연결된 VPC 엔드포인트에 적용됩니다. 자세한 내용은 Amazon VPC 사용 설명서의 VPC 엔드포인트를 통해 서비스에 대한 액세스 제어를 참조하십시오.

다음은 AWS KMS에 대한 VPC 엔드포인트 정책의 예제입니다. VPC 엔드포인트에 연결된 경우 이 정책은ExampleUser가 VPC 엔드포인트를 사용하여 지정된 CMK에서 지정된 작업을 호출하도록 허용합니다. 이와 같은 정책을 사용하기 전에 예제 보안 주체 및 키 ARN (p. 12)을 계정의 유효한 값으로 바꿉니다.

{ "Statement":[ { "Sid": "AllowDecryptAndView", "Principal": {"AWS": "arn:aws:iam::111122223333:user/ExampleUser"}, "Effect":"Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:ListAliases", "kms:ListKeys" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ]}

AWS CloudTrail는 VPC 엔드포인트를 사용하는 모든 작업을 기록합니다. 그러나 CloudTrail 로그에는 보안주체가 요청한 다른 계정의 작업이나 다른 계정의 CMKs에 대한 작업은 포함되지 않습니다.

따라서 외부 계정의 보안 주체가 VPC 엔드포인트를 사용하여 로컬 계정의 키에 대한 KMS 작업을 호출하지못하도록 하는 VPC 엔드포인트 정책을 생성할 수 있습니다.

다음 예제에서는 aws:PrincipalAccount 전역 조건 키를 사용하여 보안 주체가 로컬 계정에 없으면 모든CMKs의 모든 작업에 대한 모든 보안 주체에 대한 액세스를 거부합니다. 이와 같은 정책을 사용하기 전에 예제 계정 ID를 유효한 ID로 바꿉니다.

{ "Statement": [ { "Sid": "AccessForASpecificAccount", "Principal": {"AWS": "*"}, "Action": "kms:*", "Effect": "Deny", "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "StringNotEquals": { "aws:PrincipalAccount": "111122223333"

331

Page 340: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드VPC 엔드포인트 정책 보기

} } } ]}

VPC 엔드포인트 정책 보기엔드포인트에 대한 VPC 엔드포인트 정책을 보려면 VPC 관리 콘솔 또는 DescribeVpcEndpoints 작업을 사용합니다.

다음 AWS CLI 명령은 지정된 VPC 엔드포인트 ID를 가진 엔드포인트에 대한 정책을 가져옵니다.

이 명령을 사용하기 전에 예제에 나온 엔드포인트 ID를 계정의 유효한 엔드포인트 ID로 바꿉니다.

$ aws ec2 describe-vpc-endpoints \--query 'VpcEndpoints[?VpcEndpointId==`vpce-1234abcdf5678c90a`].[PolicyDocument]'--output text

정책 설명에 VPC 엔드포인트 사용요청이 VPC에서 나오거나 VPC 엔드포인트를 사용하는 경우 AWS KMS 리소스 및 작업에 대한 액세스를 제어할 수 있습니다. 이렇게 하려면 키 정책 또는 ??? (p. 65) 정책에서 다음 IAM전역 조건 키 (p. 82) 중 하나를사용합니다.

• 조건 키를 사용하여 VPC 엔드포인트를 기반으로 액세스를 부여하거나 제한합니다.aws:sourceVpce• 조건 키를 사용하여 프라이빗 엔드포인트를 호스팅하는 VPC를 기반으로 액세스를 부여하거나 제한합니

다.aws:sourceVpc

Note

VPC 엔드포인트를 기반으로 키 정책 및 IAM 정책을 생성할 때 주의하십시오. 정책 설명에서 특정 VPC 또는 VPC 엔드포인트의 요청을 요구하는 경우, 사용자를 대신하여 AWS 리소스를 사용하는 통합 AWS KMS 서비스의 요청은 실패할 수 있습니다. 도움말은 AWS KMS 권한으로 정책에서VPC 엔드포인트 조건 사용 (p. 108)를 참조하십시오.또한 요청이 Amazon VPC 엔드포인트에서 이루어지는 경우 aws:sourceIP 조건 키는 유효하지않습니다. 요청을 VPC 엔드포인트로 제한하려면 aws:sourceVpce 또는 aws:sourceVpc 조건키를 사용합니다. 자세한 내용은 Amazon VPC 사용 설명서의 VPC 엔드포인트 - 엔드포인트 사용제어를 참조하십시오.

이러한 전역 조건 키를 사용하여 특정 리소스에 의존하지 않는 고객 마스터 키(CMKs), 별칭 및 CreateKey 같은 작업에 대한 액세스를 제어할 수 있습니다.

예를 들어 다음 샘플 키 정책은 요청이 지정된 VPC 엔드포인트를 사용하는 경우에만 사용자가 CMK에서 일부 암호화 작업을 수행할 수 있도록 허용합니다. 사용자가 AWS KMS에 요청하면 요청의 VPC 엔드포인트ID가 정책의 aws:sourceVpce 조건 키 값과 비교됩니다. 두 값이 일치하지 않으면 요청이 거부됩니다.

이와 같은 정책을 사용하려면 자리 표시자 AWS 계정 ID 및 VPC 엔드포인트 IDs를 계정에 유효한 값으로 바꿉니다.

{ "Id": "example-key-1", "Version": "2012-10-17", "Statement": [ {

332

Page 341: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드정책 설명에 VPC 엔드포인트 사용

"Sid": "Enable IAM user permissions", "Effect": "Allow", "Principal": {"AWS":["111122223333"]}, "Action": ["kms:*"], "Resource": "*" }, { "Sid": "Restrict usage to my VPC endpoint", "Effect": "Deny", "Principal": "*", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1234abcdf5678c90a" } } }

]}

또한 aws:sourceVpc 조건 키를 사용하여 VPC 엔드포인트가 있는 VPC를 기반으로 CMKs에 대한 액세스를 제한할 수 있습니다.

다음 샘플 키 정책은 CMK에서 이루어진 경우에만 vpc-12345678를 관리하는 명령을 허용합니다. 또한CMK에서 이루어진 경우에만 암호화 작업에 vpc-2b2b2b2b를 사용하는 명령을 허용합니다. 애플리케이션이 하나의 VPC에서 실행 중이지만 관리 기능에 두 번째 격리된 VPC를 사용하는 경우 이와 같은 정책을 사용할 수 있습니다.

이와 같은 정책을 사용하려면 자리 표시자 AWS 계정 ID 및 VPC 엔드포인트 IDs를 계정에 유효한 값으로 바꿉니다.

{ "Id": "example-key-2", "Version": "2012-10-17", "Statement": [ { "Sid": "Allow administrative actions from vpc-12345678", "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": [ "kms:Create*","kms:Enable*","kms:Put*","kms:Update*", "kms:Revoke*","kms:Disable*","kms:Delete*", "kms:TagResource", "kms:UntagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpc": "vpc-12345678" } } }, { "Sid": "Allow key usage from vpc-2b2b2b2b", "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": [ "kms:Encrypt","kms:Decrypt","kms:GenerateDataKey*"

333

Page 342: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드VPC 엔드포인트 로깅

], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpc": "vpc-2b2b2b2b" } } }, { "Sid": "Allow read actions from everywhere", "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": [ "kms:Describe*","kms:List*","kms:Get*" ], "Resource": "*", } ]}

VPC 엔드포인트 로깅AWS CloudTrail는 VPC 엔드포인트를 사용하는 모든 작업을 기록합니다. AWS KMS 요청에 VPC 엔드포인트를 사용하면 요청을 기록하는 AWS CloudTrail 로그 (p. 181) 항목에 VPC 엔드포인트 ID가 표시됩니다. 엔드포인트 ID를 사용하여 AWS KMS VPC 엔드포인트의 사용을 감사할 수 있습니다.

그러나 CloudTrail 로그에는 다른 계정의 보안 주체가 요청한 작업이나 AWS KMS의 CMKs 작업 및 다른 계정의 별칭에 대한 요청은 포함되지 않습니다. 또한 VPC를 보호하기 위해 VPC 엔드포인트 정책 (p. 329)에의해 거부되었지만 다른 방식으로는 허용된 요청은 AWS CloudTrail (p. 181)에 기록되지 않습니다.

예를 들어, 이 샘플 로그 항목은 VPC 엔드포인트를 사용한 GenerateDataKey 요청을 기록합니다. 로그 항목끝에 vpcEndpointId 필드가 나타납니다.

{ "eventVersion":"1.05", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accessKeyId": "EXAMPLE_KEY_ID", "accountId": "111122223333", "userName": "Alice" }, "eventTime":"2018-01-16T05:46:57Z", "eventSource":"kms.amazonaws.com", "eventName":"GenerateDataKey", "awsRegion":"eu-west-1", "sourceIPAddress":"172.01.01.001", "userAgent":"aws-cli/1.14.23 Python/2.7.12 Linux/4.9.75-25.55.amzn1.x86_64 botocore/1.8.27", "requestParameters":{ "keyId":"1234abcd-12ab-34cd-56ef-1234567890ab", "numberOfBytes":128 }, "responseElements":null, "requestID":"a9fff0bf-fa80-11e7-a13c-afcabff2f04c", "eventID":"77274901-88bc-4e3f-9bb6-acf1c16f6a7c", "readOnly":true, "resources":[{ "ARN":"arn:aws:kms:eu-west-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId":"111122223333",

334

Page 343: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드VPC 엔드포인트 로깅

"type":"AWS::KMS::Key" }], "eventType":"AwsApiCall", "recipientAccountId":"111122223333", "vpcEndpointId": "vpce-1234abcdf5678c90a"}

335

Page 344: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드

AWS KMS와 함께 하이브리드 포스트양자 TLS 사용

이제 AWS Key Management Service(AWS KMS)에서는 TLS(전송 계층 보안) 네트워크 암호화 프로토콜에대한 하이브리드 포스트 양자 키 교환 옵션을 지원합니다. KMS API 엔드포인트에 연결할 때 이 TLS 옵션을사용할 수 있습니다. 포스트 양자 알고리즘이 표준화되기 전에 이 기능을 제공하므로 이러한 키 교환 프로토콜이 AWS KMS 호출에 미치는 영향을 테스트할 수 있습니다. 선택 사항인 이 하이브리드 포스트 양자 키 교환 기능은 적어도 우리가 현재 사용하는 TLS 암호화만큼 안전하며 보안 이점을 추가로 제공할 수도 있습니다. 그러나 현재 사용 중인 클래식 키 교환 프로토콜과 달리 지연 시간 및 처리량에 영향을 미칩니다.

사용자가 AWS Key Management Service(AWS KMS)로 전송하는 데이터는 전송 중에 TLS(전송 계층 보안)연결에서 제공하는 암호화로 보호됩니다. AWS KMS가 TLS 세션에 대해 지원하는 클래식 암호 제품군으로인해 현재 기술로는 키 교환 메커니즘에 대한 무차별 암호 대입 공격이 불가능합니다. 그러나 앞으로 대규모양자 컴퓨팅이 실용화된다면 TLS 키 교환 메커니즘에 사용되는 클래식 암호 제품군은 이러한 공격에 취약해질 것입니다. TLS 연결을 통해 전달되는 데이터의 장기 기밀성에 의존하는 애플리케이션을 개발 중인 경우대규모 양자 컴퓨터가 실용화되기 전에 포스트 양자 암호로 마이그레이션할 계획을 고려해야 합니다. 이러한미래를 준비하기 위해 노력하고 있는 AWS는 고객님도 이에 대비하시기를 바랍니다.

미래에 있을 수 있는 공격으로부터 오늘날 암호화된 데이터를 보호하기 위해 AWS는 암호화 커뮤니티와 함께 양자 내성 또는 포스트 양자 알고리즘 개발에 참여하고 있습니다. AWS는 AWS KMS 엔드포인트에 하이브리드 포스트 양자 키 교환 암호 제품군을 구현했습니다. 클래식 및 포스트 양자 요소를 결합한 이 하이브리드 암호 제품군을 통해 TLS 연결은 적어도 클래식 암호 제품군과 동등한 수준으로 강력해집니다.

이러한 하이브리드 암호 제품군은 대부분의 AWS 리전 (p. 336)에서 프로덕션 워크로드에 사용할 수 있습니다. 그러나 하이브리드 암호 제품군의 성능 특성 및 대역폭 요구 사항은 클래식 키 교환 메커니즘의해당 요구 사항과 다르기 때문에 여러 조건에서 AWS KMS API 호출에 대해 이 제품군을 테스트 (p. 339)하는 것이좋습니다.

피드백

AWS는 오픈 소스 리포지토리에 대한 여러분의 피드백과 참여를 언제나 환영합니다. 특히 인프라가 이 새로운 TLS 트래픽 변형과 어떻게 상호 작용하는지에 관한 여러분의 의견을 듣고 싶습니다.

• 이 주제에 대한 피드백을 제공하려면 이 페이지의 오른쪽 아래 모서리에 있는 피드백 링크를 사용하십시오. 또한 문제 생성 또는 aws-kms-개발자-docs github의 저장소.

• AWS는 GitHub의 s2n 리포지토리에서 이러한 하이브리드 암호 제품군을 오픈 소스로 개발하고 있습니다.암호 제품군의 사용성에 대한 피드백을 제공하거나 새로운 테스트 조건 또는 결과를 공유하려면 s2n 리포지토리에서 문제를 생성하십시오.

• AWS는 aws-kms-pq-tls-example GitHub 리포지토리에서 AWS KMS와 함께 하이브리드 포스트 양자 TLS를 사용하기 위한 코드 샘플을 작성하고 있습니다. 하이브리드 암호 제품군을 사용하도록 HTTP 클라이언트 또는 AWS KMS 클라이언트를 구성하는 방법에 대한 질문을 하거나 아이디어를 공유하려면 aws-kms-pq-tls-example 리포지토리에서 문제를 생성하십시오.

지원되는 AWS 리전

AWS KMS용 포스트 양자 TLS는 AWS GovCloud(미국 동부), AWS GovCloud(미국 서부), 중국(베이징) 및중국(닝샤)을 제외한 모든 AWS 리전에서 사용할 수 있습니다.

각 AWS 리전의 AWS KMS 엔드포인트 목록은 Amazon Web Services 일반 참조의 AWS Key ManagementService 엔드포인트 및 할당량 단원을 참조하십시오. FIPS 엔드포인트에 대한 자세한 정보는 Amazon WebServices 일반 참조에서 AWS 서비스 엔드포인트를 참조하십시오..

336

Page 345: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드포스트 양자 TLS 소개

TLS의 하이브리드 포스트 양자 키 교환 소개AWS KMS는 하이브리드 포스트 양자 키 교환 암호 제품군을 지원합니다. Java 2.x용 AWS SDK 및 AWS 공통 런타임을 사용하여 HTTP 클라이언트가 이 암호화 제품군을 사용하도록 구성할 수 있습니다. 이렇게 하면HTTP 클라이언트를 사용하여 AWS KMS 엔드포인트에 연결할 때마다 하이브리드 암호 제품군이 사용됩니다.

이 HTTP 클라이언트는 TLS 프로토콜의 오픈 소스 구현인 s2n을 사용합니다. s2n에는 pq-crypto 모듈이 포함되어 있고, 이 모듈은 전송 중 암호화를 위한 하이브리드 포스트 양자 알고리즘 구현을 포함합니다.

s2n의 하이브리드 암호 제품군은 직접 데이터 암호화가 아닌 키 교환을 위해서만 구현됩니다. 키 교환 중 클라이언트와 서버는 유선상의 데이터를 암호화하고 암호화 해독하는 데 사용할 키를 계산합니다.

이 알고리즘을 사용하는 알고리즘은 하이브리드 다양한 타원형 곡선 Diffie-Hellman (ECDH), 오늘날 TLS에서 사용되는 클래식 키 교환 알고리즘인 비트 Flipping 키 캡슐화 (바이크), 제안된 후자 후 알고리즘입니다.이 메커니즘에서는 각 알고리즘을 독립적으로 사용하여 키를 생성합니다. 그런 다음 두 키를 암호화 방식으로 결합합니다. s2n을 사용하면 선호도 목록에서 ECDH와 BIKE를 첫 번째로 배치하는 암호 선호도 설정을사용하여 HTTP 클라이언트를 구성할 수 있습니다. 클래식 키 교환 알고리즘은 호환성을 보장하기 위해 선호도 목록에 포함되어 있지만 선호도 순위는 낮습니다.

진행 중인 연구에 따르면 BIKE 알고리즘이 예상 포스트 양자 강도가 부족하다는 것이 밝혀진다 해도 하이브리드 키는 적어도 현재 사용 중인 단일 ECDH 키만큼 강력합니다. 미국 국립 표준 기술 연구소(NIST)는 포스트 양자 알고리즘을 아직 표준화하지 않았습니다. NIST는 여전히 후보에 든 접근법을 평가하는 과정에 있습니다. 이 과정이 완료될 때까지는 포스트 양자 알고리즘만 사용하는 대신 하이브리드 알고리즘을 사용하는것이 좋습니다.

AWS KMS와 함께 하이브리드 포스트 양자 TLS 사용

AWS KMS에 대한 호출에 하이브리드 포스트 양자 TLS를 사용할 수 있습니다. HTTP 클라이언트 테스트 환경을 설정할 때 다음 정보에 유의하십시오.

전송 중 데이터 암호화

s2n의 하이브리드 암호 제품군은 전송 중 암호화에만 사용됩니다. 고객이 고객으로부터 이동하는 동안 데이터를 보호합니다. AWS KMS 끝점. AWS KMS 이 암호 스위트를 사용하여 데이터를 암호화하지 않습니다. 고객 마스터 키 (CMKs) ).

대신 AWS KMS 데이터 암호화 CMKs은(는) 256비트 키로 대칭 암호화를 사용하며, 이미 quantum 저항성인AES-GCM(Galois Counter Mode) 알고리즘의 고급 암호화 표준을 사용합니다. 256비트 AES-GCM 키로 생성된 암호화 텍스트에 대한 이론적인 미래의 대규모 양자 컴퓨팅 공격은 키의 효과적 보안을 128비트로 감소시킵니다. 이 보안 수준으로도 충분히 AWS KMS 암호 텍스트에 대한 무차별 암호 대입 공격을 불가능하게만들 수 있습니다.

지원되는 시스템

s2n의 하이브리드 암호 제품군을 사용하는 것은 현재 Linux 시스템에서만 지원됩니다. 또한 이러한 암호 제품군은 Java 2.x용 AWS SDK와 같은 AWS 공통 런타임을 지원하는 SDK에서만 지원됩니다. 관련 예제는 하이브리드 포스트 양자 TLS를 구성하는 방법 (p. 338) 단원을 참조하십시오.

AWS KMS 엔드포인트

하이브리드 암호 제품군을 사용할 때는 표준 AWS KMS 엔드포인트를 사용하십시오. s2n의 하이브리드 암호 제품군은 AWS KMS용 FIPS 140-2 검증 엔드포인트와 호환되지 않습니다. 검증된 암호화 모듈에서는 포스트 양자 알고리즘이 허용되지 않습니다.

337

Page 346: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드구성 방법

s2n에서 하이브리드 포스트 양자 암호 선호도를 사용하여 HTTP 클라이언트를 구성할 경우 포스트 양자 암호는 암호 선호도 목록에서 1순위입니다. 그러나 선호도 목록에는 호환성에 대한 선호도 순위가 더 낮은 클래식 비하이브리드 암호가 포함됩니다. AWS KMS FIPS 140-2 검증 엔드포인트와 함께 이 암호 선호도를 사용하려는 경우 s2n은 클래식 비하이브리드 키 교환 암호를 협상합니다.

각 AWS 리전의 AWS KMS 엔드포인트 목록은 Amazon Web Services 일반 참조의 AWS Key ManagementService 엔드포인트 및 할당량 단원을 참조하십시오. FIPS 엔드포인트에 대한 자세한 정보는 Amazon WebServices 일반 참조에서 AWS 서비스 엔드포인트를 참조하십시오.

예상 성능

초기 벤치마크 테스트에 따르면 s2n의 하이브리드 암호 제품군이 클래식 TLS 암호 제품군보다 더 느립니다. 효과는 네트워크 프로필, CPU 속도, 코어 수 및 호출 속도에 따라 달라집니다. 성능 테스트 결과는 Post-quantum TLS now supported in AWS KMS 단원을 참조하십시오.

하이브리드 포스트 양자 TLS를 구성하는 방법이 절차에서는 GitHub 리포지토리에서 Java 2.x용 AWS SDK의 aws-crt-dev-preview(개발자 미리 보기) 브랜치를 가져옵니다. 그런 다음 AWS 공통 런타임 클라이언트를 빌드하고 AWS 공통 런타임을 종속성에 추가합니다. 그런 다음 하이브리드 포스트 양자 암호 선호도를 사용하는 HTTP 클라이언트를 구성하고HTTP 클라이언트를 사용하는 AWS KMS 클라이언트를 생성할 수 있습니다.

AWS KMS에서 하이브리드 포스트 양자 TLS를 구성하고 사용하는 방법의 전체 작업 예시를 보려면 aws-kms-pq-tls-example 리포지토리를 참조하십시오.

1. Java 2.x용 AWS SDK의 개발자 미리 보기 브랜치(aws-crt-dev-preview)를 복제합니다.

Java 2.x용 AWS SDK는 aws-sdk-java-v2 GitHub 리포지토리에서 개발되고 있습니다.Note

aws-crt-dev-preview 브랜치는 베타 릴리스입니다. 이 라이브러리의 사용에는 AWS 서비스 약관의 섹션 1.10(“베타 서비스 참여”)이 적용됩니다.

$ git clone [email protected]:aws/aws-sdk-java-v2.git --branch aws-crt-dev-preview

2. AWS 공통 런타임 클라이언트(aws-crt-client) JAR을 설치하고 빌드합니다.

$ cd aws-sdk-java-v2$ mvn install -Pquick

3. Maven 종속성에 AWS 공통 런타임 클라이언트를 추가하십시오. 사용 가능한 최신 버전을 사용하는 것이 좋습니다.

예를 들어 이 문은 AWS 공통 런타임 클라이언트의 2.10.7-SNAPSHOT 버전을 Maven 종속성에 추가합니다.

<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>aws-crt-client</artifactId> <version>2.10.7-SNAPSHOT</version></dependency>

4. 하이브리드 포스트 양자 암호 제품군을 활성화하려면 Java 2.x용 AWS SDK를 프로젝트에 추가한 후 초기화하십시오. 이어서 다음 예와 같이 하이브리드 암호 제품군을 활성화합니다.

이 코드는 사용자가 하이브리드 암호 제품군을 지원하는 시스템에서 작업 중인지 확인합니다. 그런 다음 이 코드는 BIKE 하이브리드 암호 제품군과 함께 ECDH를 우선적으로 처리하는

338

Page 347: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드테스트 방법

TLS_CIPHER_KMS_PQ_TLSv1_0_2019_06 암호 선호도를 사용하여 HTTP 클라이언트를 생성합니다.마지막으로 데이터 전송을 위해 HTTP 클라이언트를 사용하는 AWS KMS 클라이언트를 생성합니다.

이 코드에서는 AWS KMS를 비동기식으로 호출하는 AWS KMS 비동기 클라이언트인KmsAsyncClient를 사용합니다. 이 클라이언트에 대한 자세한 내용은 KmsAsyncClient Javadoc을 참조하십시오.

이 코드가 완료되면 AWS KMS 비동기 클라이언트의 AWS KMS API 요청은 TLS용 하이브리드 암호 제품군을 사용합니다.

// Check platform supportif(!TLS_CIPHER_KMS_PQ_TLSv1_0_2019_06.isSupported()){ throw new RuntimeException("Hybrid post-quantum cipher suites are not supported on this platform");}

// Configure HTTP client SdkAsyncHttpClient awsCrtHttpClient = AwsCrtAsyncHttpClient.builder() .tlsCipherPreference(TLS_CIPHER_KMS_PQ_TLSv1_0_2019_06) .build();

// Create the KMS async clientKmsAsyncClient kmsAsync = KmsAsyncClient.builder() .httpClient(awsCrtHttpClient) .build();

5. 포스트 양자 TLS를 사용하여 KMS 호출을 테스트합니다.

구성된 AWS KMS 클라이언트에서 AWS KMS API 작업을 호출하면 호출은 하이브리드 포스트 양자TLS를 사용하여 AWS KMS 엔드포인트로 전송됩니다. 구성을 테스트하려면 간단한 KMS API 호출(예:ListKeys)을 실행하십시오.

ListKeysReponse keys = kmsAsync.listKeys().get();

AWS KMS에서 하이브리드 포스트 양자 TLS 테스트AWS KMS를 호출하는 애플리케이션에서 하이브리드 암호 제품군을 사용하여 다음 테스트를 실행하는 것을고려하십시오.

• 로드 테스트 및 벤치마크를 실행합니다. 하이브리드 암호 제품군은 기존 키 교환 알고리즘과 다르게 작동합니다. 핸드셰이크 시간이 길어지도록 연결 제한 시간을 조정해야 할 수도 있습니다. AWS Lambda 함수내에서 실행 중인 경우 실행 제한 시간 설정 값을 늘리십시오.

• 다른 위치에서 연결해 보십시오. 요청이 지나는 네트워크 경로에 따라 DPI(심층 패킷 검사)가 있는 중간 호스트, 프록시 또는 방화벽으로 인해 요청이 차단됨을 알 수 있습니다. TLS 핸드셰이크의 ClientHello 부분에서 새 암호 제품군을 사용하는 것 또는 키 교환 메시지가 더 큰 것이 원인일 수 있습니다. 이러한 문제를해결하는 데 문제가 있는 경우 보안 팀 또는 IT 관리자와 협력하여 관련 구성을 업데이트하고 새 TLS 암호제품군을 차단 해제하십시오.

AWS KMS의 포스트 양자 TLS에 대해 자세히 알아보기

AWS KMS에서 하이브리드 포스트 양자 TLS 사용하는 방법에 대한 자세한 내용은 다음 리소스를 참조하십시오.

339

Page 348: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드자세히 알아보기

• 성능 데이터를 포함하여 AWS KMS에서 하이브리드 포스트 양자 TLS 암호 제품군을 사용하는 방법에 대한 자세한 내용은 Post-quantum TLS now supported in AWS KMS 단원을 참조하십시오.

• Java 2.x용 AWS SDK에 대한 자세한 내용은 Java 2.x용 AWS SDK 개발자 안내서 및 Java 2.x용 AWSSDK 릴리스 블로그 게시물을 참조하십시오.

• s2n에 대한 자세한 내용은 새 오픈 소스 TLS 구현, 즉 s2n 소개 및 Using s2n을 참조하십시오.• 국립 표준 기술 연구소(NIST)의 포스트 양자 암호화 프로젝트에 대한 자세한 내용은 포스트 양자 암호화를

참조하십시오.• TLS에서 하이브리드 포스트 양자 키 교환을 사용하는 방법에 대한 기술 정보는 TLS(전송 계층 보안) 1.2에

대한 PQ KEM(하이브리드 포스트 양자 키 캡슐화 방법)을 참조하십시오.

340

Page 349: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS CloudTrail

AWS 서비스의 AWS KMS 활용 방식많은 AWS 서비스가 AWS KMS를 사용하여 고객 데이터의 암호화를 지원합니다. AWS 서비스가 AWS KMS와 통합되면 고객 마스터 키 (CMKs을(를) 통해 서비스가 수신하거나 저장하거나 관리하는 데이터를 보호할수 있습니다. AWS KMS와 통합된 AWS 서비스의 전체 목록은 AWS 서비스 통합을 참조하십시오.

다음 항목들은 특정 서비스의 사용 방법에 대해 자세히 설명합니다. AWS KMS, CMKs 데이터 키 관리 방법,데이터 키 관리 방법, 각 서비스의 사용 방법 추적 방법 CMKs 계정에서.

Important

AWS KMS와 통합되는 AWS 서비스는 대칭 CMK를 사용하여 데이터를 암호화합니다. 이러한 서비스는 비대칭 CMK를 사용한 암호화를 지원하지 않습니다. CMK가 대칭 또는 비대칭인지 여부를 확인하는 방법은 대칭 및 비대칭 CMKs 식별 (p. 40) 단원을 참조하십시오.

AWS CloudTrail의 AWS KMS 활용 방식AWS CloudTrail를 이용해 AWS API 호출 및 기타 AWS 계정에 대한 활동을 기록하고, 선택한 AmazonSimple Storage Service(Amazon S3) 버킷의 로그 파일에 기록된 정보를 저장할 수 있습니다. 기본적으로CloudTrail가 S3 버킷에 제공하는 로그 파일은 Amazon S3–관리형 암호화 키(SSE-S3)를 사용하는 서버 측암호화로 암호화됩니다. 하지만 AWS KMS–관리형 키(SSE-KMS)를 사용하는 서버 측 암호화를 선택할 수도있습니다. 암호화하는 방법을 알아보려면 CloudTrail 로그 파일 AWS KMS, 참조: 암호화 CloudTrail 로그 파일 AWS KMS–관리 키(SSE-KMS) in the AWS CloudTrail User Guide.

Important

AWS CloudTrail and Amazon S3 지원 대칭 고객 마스터 키 (p. 158) (CMKs) ). 귀하는 메트릭CMK (p. 158) 암호화하려면 CloudTrail 로그. CMK가 대칭 또는 비대칭인지 여부를 확인하는 방법은 대칭 및 비대칭 CMKs 식별 (p. 40) 단원을 참조하십시오.

주제• 귀하의 CMK 사용됨 (p. 341)• 얼마나 자주 CMK 사용됨 (p. 345)

귀하의 CMK 사용됨로 로그 파일을 암호화하는 것은 관리형 키(SSE-KMS)를 이용한 서버 측 암호화라는 기능을 기반으로 합니다. SSE-KMS에 대해 자세히 알아보려면 Amazon Simple Storage Service(Amazon S3)의 AWS KMS 활용방식 (p. 375) 이 가이드에서는 서버 측 암호화를 사용하여 데이터 보호 AWS KMS–관리 키(SSE-KMS) inthe Amazon Simple Storage Service 개발자 가이드.

구성 시 AWS CloudTrail SSE-KMS를 사용하여 로그 파일을 암호화합니다. CloudTrail and Amazon S3 KMS사용 고객 마스터 키 (CMK)을(를) 통해 특정 조치를 수행할 때. 다음 섹션에서는 이러한 서비스를 어떻게 사용할 수 있는지 설명합니다. CMK을(를) 사용하여 이 설명을 검증하는 데 사용할 수 있는 추가 정보를 제공합니다.

일어나는 행동 CloudTrail and Amazon S3 사용하기 위해 CMK• 구성 CloudTrail 로그 파일을 암호화하려면 고객 마스터 키 (CMK) (p. 342)

341

Page 350: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드귀하의 CMK 사용됨

• CloudTrail이 S3 버킷에 로그 파일 저장 (p. 343)• S3 버킷에서 암호화된 로그 파일 가져오기 (p. 344)

구성 CloudTrail 로그 파일을 암호화하려면 고객 마스터 키 (CMK)귀하가 업데이트 CloudTrail 사용자를 위한 CMK, CloudTrail 전송 GenerateDataKey 요청 AWS KMS 확인하기 위해 CMK 존재하며 CloudTrail 암호화에 사용할 권한이 있습니다. CloudTrail 은(는) 결과 데이터 키를사용하지 않습니다.

GenerateDataKey 요청에는 암호화 컨텍스트 (p. 16)에 대한 다음 정보가 포함됩니다.

• CloudTrail 추적의 Amazon 리소스 이름(ARN)• S3 버킷의 ARN 및 CloudTrail 로그 파일이 전달되는 경로

GenerateDataKey 요청의 결과, CloudTrail 로그에 다음 예와 비슷한 항목이 생성됩니다. 이와 같은 로

그 항목을 볼 때, CloudTrail ( ) AWS KMS ( ) ) GenerateDataKey 작동( 특정 트레일을 위

한 ) ) ). AWS KMS 특정 데이터 키를 CMK ( ).

Note

You might need to scroll to the right to see some of the callouts in the following example log entry.

{ "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE",

"arn": "arn:aws:iam::086441151436:user/AWSCloudTrail", "accountId": "086441151436", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "userName": "AWSCloudTrail", "sessionContext": {"attributes": { "mfaAuthenticated": "false", "creationDate": "2015-11-11T21:15:33Z" }}, "invokedBy": "internal.amazonaws.com" }, "eventTime": "2015-11-11T21:15:33Z",

"eventSource": "kms.amazonaws.com",

"eventName": "GenerateDataKey", "awsRegion": "us-west-2", "sourceIPAddress": "internal.amazonaws.com", "userAgent": "internal.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-west-2:111122223333:alias/ExampleAliasForCloudTrailCMK", "encryptionContext": {

"aws:cloudtrail:arn": "arn:aws:cloudtrail:us-west-2:111122223333:trail/Default", "aws:s3:arn": "arn:aws:s3:::example-bucket-for-CT-logs/AWSLogs/111122223333/" }, "keySpec": "AES_256" }, "responseElements": null, "requestID": "581f1f11-88b9-11e5-9c9c-595a1fb59ac0", "eventID": "3cdb2457-c035-4890-93b6-181832b9e766", "readOnly": true, "resources": [{

342

Page 351: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드귀하의 CMK 사용됨

"ARN": "arn:aws:kms:us-

west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }], "eventType": "AwsServiceEvent", "recipientAccountId": "111122223333"}

CloudTrail이 S3 버킷에 로그 파일 저장CloudTrail가 S3 버킷에 로그 파일을 저장하면 Amazon S3가 CloudTrail 대신 AWS KMS로GenerateDataKey 요청을 보냅니다. 이 요청에 응답하여 AWS KMS 고유한 데이터 키를 생성하여Amazon S3 데이터 키 사본 2개, 일반 텍스트 1개, 지정된 데이터로 암호화 CMK. Amazon S3 일반 텍스트데이터 키를 사용하여 CloudTrail 로그 파일을 선택한 후 사용 후 가능한 한 빨리 메모리에서 일반 텍스트데이터 키를 제거합니다. Amazon S3 암호화된 데이터 키를 암호화를 사용하여 메타데이터로 저장합니다.CloudTrail 로그 파일.

GenerateDataKey 요청에는 암호화 컨텍스트 (p. 16)에 대한 다음 정보가 포함됩니다.

• CloudTrail 추적의 Amazon 리소스 이름(ARN)• S3 객체의 ARN(CloudTrail 로그 파일)

각 GenerateDataKey 요청의 결과, CloudTrail 로그에 다음 예와 비슷한 항목이 생성됩니다. 이와 같은

로그 항목을 볼 때, CloudTrail ( ) AWS KMS ( ) ) GenerateDataKey 작동( 특정 트레일을 위

한 ) 특정 로그 파일()을 ) ). AWS KMS 지정된 데이터 키를 CMK ( )는 동일한 로그 항목 에 두 번표시됩니다.

Note

You might need to scroll to the right to see some of the callouts in the following example log entry.

{ "eventVersion": "1.02", "userIdentity": { "type": "AssumedRole", "principalId": "AROACKCEVSQ6C2EXAMPLE:i-34755b85",

"arn": "arn:aws:sts::086441151436:assumed-role/AWSCloudTrail/i-34755b85", "accountId": "086441151436", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2015-11-11T20:45:25Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::086441151436:role/AWSCloudTrail", "accountId": "086441151436", "userName": "AWSCloudTrail" } }, "invokedBy": "internal.amazonaws.com" }, "eventTime": "2015-11-11T21:15:58Z",

"eventSource": "kms.amazonaws.com",

"eventName": "GenerateDataKey",

343

Page 352: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드귀하의 CMK 사용됨

"awsRegion": "us-west-2", "sourceIPAddress": "internal.amazonaws.com", "userAgent": "internal.amazonaws.com", "requestParameters": { "encryptionContext": {

"aws:cloudtrail:arn": "arn:aws:cloudtrail:us-west-2:111122223333:trail/Default", "aws:s3:arn": "arn:aws:s3:::example-bucket-for-CT-logs/AWSLogs/111122223333/CloudTrail/us-west-2/2015/11/11/111122223333_CloudTrail_us-

west-2_20151111T2115Z_7JREEBimdK8d2nC9.json.gz" }, "keyId": "arn:aws:kms:us-

west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "keySpec": "AES_256" }, "responseElements": null, "requestID": "66f3f74a-88b9-11e5-b7fb-63d925c72ffe", "eventID": "7738554f-92ab-4e27-83e3-03354b1aa898", "readOnly": true, "resources": [{ "ARN": "arn:aws:kms:us-

west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }], "eventType": "AwsServiceEvent", "recipientAccountId": "111122223333"}

S3 버킷에서 암호화된 로그 파일 가져오기S3 버킷에서 암호화된 CloudTrail 로그 파일을 가져올 때마다 Amazon S3가 자동으로 AWS KMS로Decrypt 요청을 보내 로그 파일의 암호화된 데이터 키를 해독합니다. 이 요청에 응답하여 AWS KMS 사용CMK 데이터 키를 해독하고 일반 텍스트 데이터 키를 Amazon S3. Amazon S3 일반 텍스트 데이터 키를 사용하여 CloudTrail 로그 파일을 선택한 후 사용 후 가능한 한 빨리 메모리에서 일반 텍스트 데이터 키를 제거합니다.

Decrypt 요청에는 암호화 컨텍스트 (p. 16)에 대한 다음 정보가 포함됩니다.

• CloudTrail 추적의 Amazon 리소스 이름(ARN)• S3 객체의 ARN(CloudTrail 로그 파일)

각 Decrypt 요청의 결과, CloudTrail 로그에 다음 예와 비슷한 항목이 생성됩니다. 이와 같은 로그 항목이 표

시되면 IAM 사용자 AWS 계정( ) AWS KMS ( ) ) Decrypt 작동( 특정 트레일을 위한 ) ) 및 특

정 로그 파일( ) ). AWS KMS 특정 데이터 키를 CMK ( ).

Note

You might need to scroll to the right to see some of the callouts in the following example log entry.

{ "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE",

"arn": "arn:aws:iam::111122223333:user/cloudtrail-admin", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE",

344

Page 353: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드얼마나 자주 CMK 사용됨

"userName": "cloudtrail-admin", "sessionContext": {"attributes": { "mfaAuthenticated": "false", "creationDate": "2015-11-11T20:48:04Z" }}, "invokedBy": "signin.amazonaws.com" }, "eventTime": "2015-11-11T21:20:52Z",

"eventSource": "kms.amazonaws.com",

"eventName": "Decrypt", "awsRegion": "us-west-2", "sourceIPAddress": "internal.amazonaws.com", "userAgent": "internal.amazonaws.com", "requestParameters": { "encryptionContext": {

"aws:cloudtrail:arn": "arn:aws:cloudtrail:us-west-2:111122223333:trail/Default", "aws:s3:arn": "arn:aws:s3:::example-bucket-for-CT-logs/AWSLogs/111122223333/CloudTrail/us-west-2/2015/11/11/111122223333_CloudTrail_us-

west-2_20151111T2115Z_7JREEBimdK8d2nC9.json.gz" } }, "responseElements": null, "requestID": "16a0590a-88ba-11e5-b406-436f15c3ac01", "eventID": "9525bee7-5145-42b0-bed5-ab7196a16daa", "readOnly": true, "resources": [{ "ARN": "arn:aws:kms:us-

west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

얼마나 자주 CMK 사용됨비용을 예측하고 AWS 청구 CloudTrail 사용 CMK. AWS KMS 무료 계층을 초과하는 서비스에 대한 모든 API요청에 대한 요금. 정확한 요금 제도는 AWS Key Management Service 요금을 참조하십시오.

관리형 키(SSE-KMS)로 로그 파일을 암호화하면 CloudTrail가 S3 버킷에 로그 파일을 저장 (p. 343)할 때마다 AWS KMS API 요청이 이루어집니다. 일반적으로 CloudTrail는 5분마다 한 번씩 S3 버킷에 로그 파일을저장합니다. 그러면 일일 리전당, 계정당 약 288개의 API 요청이 이루어집니다. 예: .

• 하나의 AWS 계정에서 두 개 리전에 이 기능을 활성화하면 일일 약 576개(2 x 288)의 AWS KMS API 요청을 예상할 수 있습니다.

• 세 개의 AWS 계정 각각에서 두 개 리전에 이 기능을 활성화하면 일일 약 1,728개(6 x 288)의 AWS KMSAPI 요청을 예상할 수 있습니다.

이러한 숫자는 PUT 요청에서 발생하는 AWS KMS 호출만을 나타냅니다. S3 버킷에서 암호화된 로그 파일을가져올 때 GET 요청에서 발생하는 AWS KMS에 대한 암호화 해제 요청은 계산되지 않습니다.

Amazon DynamoDB의 AWS KMS 활용 방식Amazon DynamoDB은 확장이 가능한 완전 관리형 NoSQL 데이터베이스 서비스입니다. DynamoDB는 AWSKey Management Service(AWS KMS)와 통합되어 영구 암호화 서버 측 암호화 기능을 지원합니다.

345

Page 354: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드DynamoDB의 클라이언트측 암호화

영구 암호화 기능을 통해 DynamoDB는 테이블이 디스크에 있을 때마다 DynamoDB 테이블에 있는 모든 고객 데이터를 투명하게 암호화합니다(보조 인덱스 포함). (테이블에 정렬 키가 있는 경우 범위를 표시하는 일부 정렬 키는 테이블 메타데이터에 일반 텍스트로 저장됩니다.) 테이블에 액세스할 때 DynamoDB 테이블 데이터를 투명하게 해독합니다. 암호화된 테이블을 사용 또는 관리하기 위해 애플리케이션을 변경할 필요가 없습니다.

또한 DynamoDB 스트림, 전역 테이블 및 백업이 내구성 있는 미디어에 저장될 때마다 영구 암호화가 이들 객체를 보호합니다. 이 주제에서 테이블에 대한 설명은 이들 객체에도 적용됩니다.

모든 DynamoDB 테이블은 암호화됩니다. 신규 또는 기존 테이블에 대해 암호화를 활성화 또는 비활성화하는 옵션은 없습니다. 기본적으로 모든 테이블은 AWS 소유 고객 마스터 키 (p. 4) (CMK) DynamoDB 서비스계정. 그러나, 귀하는 고객 관리 CMK (p. 4) 또는 AWS 관리 CMK (p. 4) for DynamoDB 계정에서.

Note

2018년 11월 이전, 저장된 암호화 기능은 AWS 관리 CMK for DynamoDB. 사용자가 암호화를 설정한 경우 DynamoDB 테이블을 사용하여 AWS 관리 CMK 사용하지 않는 한 AWS Management 콘솔또는 업데이트 가능 고객 관리를 위한 운영 CMK 또는 AWS 소유 CMK.

DynamoDB의 클라이언트측 암호화서버 측 암호화 기능인 영구 암호화 외에 AWS에는 Amazon DynamoDB 암호화 클라이언트 기능도 있습니다. 이 클라이언트 측 암호화 라이브러리를 통해 DynamoDB로 제출되기 전의 테이블 데이터를 보호할 수 있습니다. 사용자의 데이터는 서버 측 암호화를 사용하여 HTTPS 연결 시 일시적으로 암호화되고 DynamoDB엔드포인트에서 해독되었다가 DynamoDB에 저장되기 전에 다시 암호화됩니다. 클라이언트 측 암호화는 소스에서 DynamoDB의 스토리지까지 데이터를 완벽하게 보호합니다.

DynamoDB 암호화 클라이언트를 영구 암호화와 함께 사용할 수 있습니다. 이 전략이 귀하에게 적합한지결정하는 데 도움이 됩니다. DynamoDB 데이터, 참조 클라이언트 측 또는 서버 측 암호화? in the AmazonDynamoDB 암호화 클라이언트 개발자 가이드.

주제• 사용 CMKs 데이터 키 (p. 346)• 사용자 권한 부여 CMK (p. 348)• DynamoDB 암호화 컨텍스트 (p. 351)• DynamoDB와 AWS KMS의 상호작용 모니터링 (p. 352)

사용 CMKs 데이터 키The DynamoDB 저장 시 암호화는 AWS KMS 고객 마스터 키 (CMK)와 데이터 키 계층을 사용하여 테이블 데이터를 보호합니다. DynamoDB 동일한 키 계층을 사용하여 DynamoDB 스트림, 글로벌 테이블 및 백업이 내구성 미디어에 기록됩니다.

고객 마스터 키 (CMK)

저장 시 암호화를 통해 DynamoDB 테이블에 AWS KMS 고객 마스터 키 (CMK) ). 기본적으로 AWS 소유CMK (p. 4)에서 생성되고 관리되는 멀티 테넌트 키 DynamoDB 서비스 계정. 그러나 DynamoDB 일부 또는 모든 테이블을 암호화하는 옵션을 고객 관리 CMKs (p. 4) 또는 AWS 관리 CMK (p. 4) for DynamoDB(aws/dynamodb) AWS 계정. 선택할 수 있습니다. CMK 테이블을 만들거나 업데이트할 때 테이블을 사용할 경우 각 테이블에 대해 다른 선택을 할 수 있습니다.

Important

DynamoDB 지원 대칭 CMKs (p. 158). 귀하는 메트릭 CMK (p. 158) 암호화하려면 DynamoDB표. CMK가 대칭 또는 비대칭인지 여부를 확인하는 방법은 대칭 및 비대칭 CMKs 식별 (p. 40)단원을 참조하십시오.

346

Page 355: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사용 CMKs 데이터 키

선택할 수 있습니다. CMK in the DynamoDB 콘솔 또는 DynamoDB API 을(를) 선택하면 CMK 테이블의경우 로컬 및 글로벌 2차 인덱스, 스트림 및 백업은 CMK. 그러나 고객은 CMK 암호화하려면 DynamoDB글로벌 테이블 복제본. 복제본을 암호화하려면 AWS 소유 CMK 또는 AWS 관리 CMK.

변경 사항을 CMK 어느 때든 DynamoDB 콘솔 또는 업데이트 가능 작업. 키 전환 프로세스는 원활하며가동 중지 시간 또는 서비스 저하가 발생하지 않습니다.

고객 관리 CMK 다음 기능을 제공합니다.• 귀하는 CMK, 주요 정책 (p. 65), IAM 정책 (p. 82) and 보조금 (p. 136) 액세스 권한을 CMK. 여러

분은 활성화 및 비활성화 (p. 47) the CMK, 활성화 및 비활성화 자동 키 회전 (p. 170), 그리고 삭제CMK (p. 266) 더 이상 사용하지 않습니다.

• 고객이 관리하는 CMK with 가져온 키 재료 (p. 277) 고객이 관리하는 CMK 에서 맞춤형 키 스토어 (p. 291) 을(를) 소유하고 관리합니다.

• AWS CloudTrail 로그 (p. 352)에서 AWS KMS에 대한 DynamoDB API 호출을 검사하여 DynamoDB테이블 암호화 및 복호화를 감사할 수 있습니다.

사용 AWS 관리 CMK 다음 기능이 필요한 경우:• 여러분은 보기 CMK (p. 27) and 주요 정책 보기 (p. 76). 키 정책을 변경할 수 없습니다.• AWS CloudTrail 로그 (p. 352)에서 AWS KMS에 대한 DynamoDB API 호출을 검사하여 DynamoDB

테이블 암호화 및 복호화를 감사할 수 있습니다.

하지만, AWS 소유 CMK 무료이며, 그 사용은 AWS KMS 리소스 또는 요청 할당량 (p. 396). 고객 관리CMKs and AWS 관리 CMKs 충전 각 API 호출 및 AWS KMS 할당량은 이러한 CMKs.

테이블 키

DynamoDB 사용 CMK 테이블을 사용하여 고유한 데이터 키 (p. 5) 테이블에 대해 테이블 키. 테이블 키는 암호화된 테이블의 수명 기간 동안 존속합니다.

테이블 키는 키 암호화 키로 사용됩니다. DynamoDB는 이 테이블 키를 사용하여 테이블 데이터를 암호화하는 데 사용되는 데이터 암호화 키를 보호합니다. DynamoDB는 테이블에 있는 각 기본 구조마다 고유한 데이터 암호화 키를 생성하지만, 동일한 데이터 암호화 키로 여러 테이블 항목이 보호될 수 있습니다.

암호화된 테이블에 처음 액세스하는 경우 DynamoDB 요청 전송 AWS KMS 사용하기 위해 CMK 표 키를복호화합니다. 그런 다음 일반 텍스트 테이블 키를 사용하여 데이터 암호화 키를 해독하고, 일반 텍스트데이터 암호화 키를 사용하여 테이블 데이터를 해독합니다.

347

Page 356: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사용자 권한 부여 CMK

DynamoDB는 AWS KMS 밖에서 테이블 키와 데이터 암호화 키를 생성하고, 사용하고, 저장합니다. 고급 암호화 표준(AES) 암호화 및 256비트 암호화 키로 모든 키를 보호합니다. 그런 다음 필요에 따라 테이블 데이터를 해독할 때 사용할 수 있도록 암호화된 데이터로 암호화된 키를 저장합니다.

변경 사항을 CMK 테이블에 DynamoDB 새 테이블 키를 생성합니다. 그런 다음 새 테이블 키를 사용하여데이터 암호화 키를 다시 암호화합니다.

테이블 키 캐싱

각 DynamoDB 작업마다 AWS KMS를 호출하지 않도록 DynamoDB는 메모리에 있는 각 연결의 일반 텍스트 테이블 키를 캐싱합니다. 5분의 비활성 시간이 경과하여 DynamoDB가 캐싱된 테이블 키를 요청할경우 테이블 키를 해독하라는 새로운 요청을 AWS KMS에 보냅니다. 이 통화는 CMK 에서 AWS KMS 또는 AWS Identity and Access Management (IAM)를 클릭합니다.

사용자 권한 부여 CMK귀하가 고객 관리 CMK (p. 4) 또는 AWS 관리 CMK (p. 4) 귀하의 계정에서 DynamoDB 테이블에 있는 CMK반드시 DynamoDB 을(를) 대신하여 사용할 수 있습니다. 에 대한 권한 부여 컨텍스트 AWS 관리 CMK forDynamoDB 에 사용할 권한을 위임하는 주요 정책 및 보조금을 포함합니다.

고객이 관리하는 정책 및 보조금을 완전히 통제합니다. CMK. 왜냐하면 AWS 관리 CMK 은(는) 해당 정책 및보조금을 볼 수 있습니다. 하지만 정책은 AWS에 의해 관리되므로 사용자가 정책을 변경할 수는 없습니다.

DynamoDB 기본 사용에 대한 추가 승인이 필요하지 않습니다. AWS 소유 CMK (p. 3) 보호하기 위해DynamoDB 테이블 AWS 계정.

주제• AWS 관리 CMK 주요 정책 (p. 348)• 고객 관리 CMK 주요 정책 (p. 349)• 권한 부여를 사용하여 DynamoDB 승인 (p. 351)

AWS 관리 CMK 주요 정책언제 DynamoDB 사용 AWS 관리 CMK (p. 4) for DynamoDB (aws/dynamodb) 암호화 작업에 있어서DynamoDB 자원. 에 대한 주요 정책 AWS 관리 CMK 계정의 모든 사용자에게 AWS 관리 CMK 지정된 작업그러나 DynamoDB가 사용자 대신 요청할 때만 권한이 부여됩니다. The viaservice condition, 비자제 (p. 130)키 정책에서 사용자는 AWS 관리 CMK 요청이 DynamoDB 서비스.

이 키 정책은 모든 AWS 관리형 키의 정책처럼 AWS에 의해 설정됩니다. 변경은 할 수 없지만 언제든 보는 것은 가능합니다. 자세한 내용은 키 정책 보기 (p. 76) 단원을 참조하십시오.

키 정책의 정책 설명문은 다음 효과를 갖습니다.

• 계정의 사용자에게 AWS 관리 CMK for DynamoDB 암호화 작업에서 DynamoDB 을(를) 대신하여 을(를)대신하여 을 또한 이 정책은 교부금 생성 (p. 351) for the CMK.

• 허용 AWS 계정 루트 사용자가 AWS 관리 CMK for DynamoDB 그리고 교부금 취소 이를 통해 DynamoDB사용하기 위해 CMK. DynamoDB 사용 보조금 (p. 351) 유지 보수 작업을 수행합니다.

• 허용 DynamoDB 읽기 전용 작업을 수행하여 AWS 관리 CMK for DynamoDB 계정에서.

{ "Version" : "2012-10-17", "Id" : "auto-dynamodb-1", "Statement" : [ {

348

Page 357: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사용자 권한 부여 CMK

"Sid" : "Allow access through Amazon DynamoDB for all principals in the account that are authorized to use Amazon DynamoDB", "Effect" : "Allow", "Principal" : { "AWS" : "*" }, "Action" : [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource" : "*", "Condition" : { "StringEquals" : { "kms:CallerAccount" : "111122223333", "kms:ViaService" : "dynamodb.us-west-2.amazonaws.com" } } }, { "Sid" : "Allow direct access to key metadata to the account", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ], "Resource" : "*" }, { "Sid" : "Allow DynamoDB Service with service principal name dynamodb.amazonaws.com to describe the key directly", "Effect" : "Allow", "Principal" : { "Service" : "dynamodb.amazonaws.com" }, "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*" ], "Resource" : "*" } ]}

고객 관리 CMK 주요 정책을(를) 선택하면 고객 관리 CMK (p. 4) 보호하기 위해 DynamoDB 표 DynamoDB 사용 권한을 CMK 을(를) 선택합니다. 이 주, 사용자 또는 역할은 CMK that DynamoDB 필요합니다. 키 정책 (p. 65), IAM 정책 (p. 82) 또는 권한 부여 (p. 136)에 이러한 권한을 제공할 수 있습니다.

최소한 DynamoDB 고객 관리를 위해 다음 권한이 필요합니다. CMK:

• kms:Encrypt• kms:Decrypt• kms:ReEncrypt*(kms:ReEncryptFrom and kms:ReEncryptTo용)• kms:GenerateDataKey*(kms:GenerateDataKey 및 kms:GenerateDataKeyWithoutPlaintext용)• kms:DescribeKey• kms:CreateGrant

예를 들어 다음 예제 키 정책은 필요한 권한만 제공합니다. 이 정책에는 다음과 같은 효과가 있습니다.

• 허용 DynamoDB 사용하기 위해 CMK 암호 작성 및 보조금 작성, 그러나 사용 허가를 받은 계좌의 주장을대신하여 활동하는 경우에만 DynamoDB. 정책 문에 지정된 보안 주체가 DynamoDB를 사용할 권한이 없는 경우 DynamoDB 서비스에서 오는 경우에도 호출이 실패합니다.

• kms:ViaService (p. 130) 조건 키는 DynamoDB가 정책 문에 나열된 보안 주체를 대신하여 요청을 보낸 경우에만 사용 권한을 허용합니다. 이러한 보안 주체는 이러한 작업을 직접 호출 할 수 없습니다.kms:ViaService 값 dynamodb.*.amazonaws.com은 리전 위치에 별표(*)가 있습니다. DynamoDB는

349

Page 358: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사용자 권한 부여 CMK

DynamoDB 전역 테이블을 지원하기 위해 교차 리전 호출을 할 수 있도록 특정 AWS 리전과 독립적인 권한이 필요합니다.

• 고객에게 CMK 관리자(사용자가 db-team 역할) 읽기 전용 액세스 CMK 및 보조금을 DynamoDB 필요한 (p. 351) 표 를 보호합니다.

• 기부 DynamoDB 읽기 전용 액세스 CMK. 이 경우 DynamoDB는 이러한 작업을 직접 호출할 수 있습니다.계정 보안 주체를 대신하여 동작할 필요는 없습니다.

예제 키 정책을 사용하기 전에 예제 보안 주체를 AWS 계정의 실제 보안 주체로 바꿉니다.

{ "Id": "key-policy-dynamodb", "Version":"2012-10-17", "Statement": [ { "Sid" : "Allow access through Amazon DynamoDB for all principals in the account that are authorized to use Amazon DynamoDB", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/db-lead"}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService" : "dynamodb.*.amazonaws.com" } } }, { "Sid": "Allow administrators to view the CMK and revoke grants", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/db-team" }, "Action": [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ], "Resource": "*" }, { "Sid": "Allow DynamoDB to get information about the CMK", "Effect": "Allow", "Principal": { "Service":["dynamodb.amazonaws.com"] }, "Action": [ "kms:Describe*", "kms:Get*", "kms:List*" ], "Resource": "*" } ]}

350

Page 359: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드DynamoDB 암호화 컨텍스트

권한 부여를 사용하여 DynamoDB 승인주요 정책 외에도 DynamoDB 고객이 관리하는 고객에 대한 권한을 설정하는 데 사용 CMK 또는 AWS 관리CMK for DynamoDB (aws/dynamodb). 에서 보조금을 보려면 CMK 계정에서 청취 작업. DynamoDB 사용할보조금 또는 추가 권한이 필요하지 않습니다. AWS 소유 CMK (p. 4) 을(를) 보호합니다.

DynamoDB는 배경 시스템 유지 관리 및 연속 데이터 보호 작업을 수행할 때 권한 부여 권한을 사용합니다.권한 부여를 사용하여 테이블 키 (p. 346)도 생성합니다.

각 권한 부여는 테이블마다 다릅니다. 계정에 여러 개의 테이블이 동일한 경우 CMK각 테이블에 대한 각 유형의 보조금이 있습니다. 권한 부여는 DynamoDB 암호화 컨텍스트 (p. 351)의 제한을 받는데, 여기에는 테이블 이름과 AWS 계정 ID가 포함되며, 더 이상 필요 없을 경우 권한 부여 제거 권한도 포함됩니다.

권한 부여를 생성하려면 DynamoDB가 암호화된 테이블을 생성한 사용자를 대신하여 CreateGrant를 호출할 수 있는 권한이 있어야 합니다. 대상 AWS 관리 CMKs, DynamoDB 받습니다 kms:CreateGrant 승인 주요 정책 (p. 348), 계정 사용자가 전화를 걸 수 있습니다. Creategrant on the CMK 경우에 따라서만DynamoDB 권한을 위임받은 사용자를 대신하여 요청을 합니다.

주요 정책은 또한 교부금 취소 on the CMK. 단, 활성 암호화 테이블에서 권한 부여를 취소할 경우에는DynamoDB가 테이블을 보호하고 유지하지 못합니다.

DynamoDB 암호화 컨텍스트암호화 컨텍스트 (p. 16)는 보안되지 않은 임의의 데이터를 포함하는 키-값 페어 세트입니다. 데이터 암호화요청에 암호화 컨텍스트를 포함하는 경우, AWS KMS는 암호화된 데이터에 암호화 컨텍스트를 암호 방식으로 바인딩합니다. 따라서 동일한 암호화 컨텍스트로 전달해야 이 데이터를 해독할 수 있습니다.

DynamoDB는 모든 AWS KMS 암호화 작업에서 동일한 암호화 컨텍스트를 사용합니다. 귀하가 고객 관리CMK (p. 4) 또는 AWS 관리 CMK (p. 4) 고객의 DynamoDB 암호화 컨텍스트를 사용하여 CMK 감사 기록 및로그. 또한 AWS CloudTrail 및 Amazon CloudWatch Logs 같은 로그에서 일반 텍스트에 나타나기도 합니다.

암호화 컨텍스트는 정책 및 보조금의 권한 부여를 위한 조건으로 사용될 수도 있습니다. DynamoDB 암호화컨텍스트를 사용하여 보조금 (p. 351) 고객이 관리하는 CMK 또는 AWS 관리 CMK 귀하의 계정과 지역에서.

AWS KMS에 요청할 때 DynamoDB는 두 개의 키–값 쌍이 있는 암호화 컨텍스트를 사용합니다.

"encryptionContextSubset": { "aws:dynamodb:tableName": "Books" "aws:dynamodb:subscriberId": "111122223333"}

• 테이블 – 첫 번째 키–값 쌍은 DynamoDB가 암호화 중인 테이블을 나타냅니다. 핵심은aws:dynamodb:tableName. 값은 표의 이름입니다.

"aws:dynamodb:tableName": "<table-name>"

예: .

"aws:dynamodb:tableName": "Books"

• 계정 – 두 번째 키–값 쌍은 AWS 계정을 나타냅니다. 핵심은 aws:dynamodb:subscriberId. 값은 계정ID입니다.

"aws:dynamodb:subscriberId": "<account-id>"

예: .

351

Page 360: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드DynamoDB와 AWS KMS의 상호작용 모니터링

"aws:dynamodb:subscriberId": "111122223333"

DynamoDB와 AWS KMS의 상호작용 모니터링귀하가 고객 관리 CMK (p. 4) 또는 AWS 관리 CMK (p. 4) 고객의 DynamoDB 테이블을 사용하여 AWSCloudTrail 로그를 추적하는 로그를 DynamoDB 다음으로 전송 AWS KMS 을(를) 대신하여 을(를) 대신하여을

GenerateDataKey, Decrypt 및 CreateGrant 요청은 이 섹션에서 다룹니다. 또한 DynamoDB 사용 설명작동하기 위한 CMK 계정과 지역에서 존재하셨습니다. 그리고 RetireGrant 작업을 사용하여 사용자가 테이블을 삭제할 때 권한 부여를 제거합니다.

GenerateDataKey

사용자가 테이블에서 영구 암호화를 활성화하면 DynamoDB가 고유한 테이블 키를 생성합니다. 이는generatedatakey 요청 AWS KMS 이는 CMK 테이블에 대한 의 경우.

GenerateDataKey 작업을 기록하는 이벤트는 다음 예제 이벤트와 유사합니다. 사용자는 DynamoDB서비스 계정입니다. 매개 변수에는 CMK256비트 키 및 암호화 컨텍스트 (p. 351) 테이블과 AWS 계정.

{ "eventVersion": "1.05", "userIdentity": { "type": "AWSService", "invokedBy": "dynamodb.amazonaws.com" }, "eventTime": "2018-02-14T00:15:17Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-west-2", "sourceIPAddress": "dynamodb.amazonaws.com", "userAgent": "dynamodb.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:dynamodb:tableName": "Services", "aws:dynamodb:subscriberId": "111122223333" }, "keySpec": "AES_256", "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, "responseElements": null, "requestID": "229386c1-111c-11e8-9e21-c11ed5a52190", "eventID": "e3c436e9-ebca-494e-9457-8123a1f5e979", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333", "sharedEventID": "bf915fa6-6ceb-4659-8912-e36b69846aad"}

352

Page 361: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드DynamoDB와 AWS KMS의 상호작용 모니터링

암호화 해제

암호화된 DynamoDB 테이블에 액세스하면 DynamoDB가 테이블 키를 해독해야만 계층에서 그 아래에 있는 키를 해독할 수 있습니다. 이후 테이블에 있는 데이터를 해독합니다. 테이블 키를 해독하려면DynamoDB 전송 해독 요청 AWS KMS 이는 CMK 테이블에 대한 의 경우.

Decrypt 작업을 기록하는 이벤트는 다음 예제 이벤트와 유사합니다. 사용자는 테이블에 액세스 중인 AWS 계정에 있는 주체입니다. 매개 변수에는 암호화된 테이블 키(ciphertext blob)와 암호화 컨텍스트 (p. 351) 테이블과 AWS 계정. AWS KMS ID의 ID를 CMK ciphertext 에서.

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:user01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-02-14T16:42:15Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROAIGDT3HGFQZX4RY6RU", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" } }, "invokedBy": "dynamodb.amazonaws.com" }, "eventTime": "2018-02-14T16:42:39Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-west-2", "sourceIPAddress": "dynamodb.amazonaws.com", "userAgent": "dynamodb.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:dynamodb:tableName": "Books", "aws:dynamodb:subscriberId": "111122223333" } }, "responseElements": null, "requestID": "11cab293-11a6-11e8-8386-13160d3e5db5", "eventID": "b7d16574-e887-4b5b-a064-bf92f8ec9ad3", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

353

Page 362: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드DynamoDB와 AWS KMS의 상호작용 모니터링

CreateGrant

귀하가 고객 관리 CMK (p. 4) 또는 AWS 관리 CMK (p. 4) 고객의 DynamoDB 표 DynamoDB 사용 보조금 (p. 351) 서비스를 통해 지속적인 데이터 보호 및 유지 보수 작업 수행 이 교부금은 다음에 대해 필요하지 않습니다. AWS 소유 CMKs (p. 4).

DynamoDB가 생성하는 권한 부여는 테이블마다 다릅니다. CreateGrant 요청에 있는 주체는 테이블을생성한 사용자입니다.

CreateGrant 작업을 기록하는 이벤트는 다음 예제 이벤트와 유사합니다. 매개 변수에는 CMK 원칙에따라 DynamoDB 서비스) 및 보조금 커버가 제공하는 운영. 모든 암호화 작업에서 지정된 암호화 컨텍스트 (p. 351)를 사용할 것을 요구하는 제한도 포함됩니다.

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:user01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-02-14T00:12:02Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROAIGDTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" } }, "invokedBy": "dynamodb.amazonaws.com" }, "eventTime": "2018-02-14T00:15:15Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-west-2", "sourceIPAddress": "dynamodb.amazonaws.com", "userAgent": "dynamodb.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "retiringPrincipal": "dynamodb.us-west-2.amazonaws.com", "constraints": { "encryptionContextSubset": { "aws:dynamodb:tableName": "Books", "aws:dynamodb:subscriberId": "111122223333" } }, "granteePrincipal": "dynamodb.us-west-2.amazonaws.com", "operations": [ "DescribeKey", "GenerateDataKey", "Decrypt", "Encrypt", "ReEncryptFrom", "ReEncryptTo", "RetireGrant" ] },

354

Page 363: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드Amazon Elastic Block Store (Amazon EBS)

"responseElements": { "grantId": "5c5cd4a3d68e65e77795f5ccc2516dff057308172b0cd107c85b5215c6e48bde" }, "requestID": "2192b82a-111c-11e8-a528-f398979205d8", "eventID": "a03d65c3-9fee-4111-9816-8bf96b73df01", "readOnly": false, "resources": [ { "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

Amazon Elastic Block Store(Amazon EBS)의 AWSKMS 활용 방식

이 주제는 Amazon Elastic Block Store(Amazon EBS)가 AWS KMS를 이용해 볼륨과 스냅샷을 암호화하는방법을 자세히 살펴봅니다. Amazon EBS 볼륨을 암호화하는 방법에 대한 기본 지침은 Amazon EBS 암호화를 참조하십시오.

주제• Amazon EBS 암호화 (p. 355)• 사용 CMKs 데이터 키 (p. 356)• Amazon EBS 암호화 컨텍스트 (p. 356)• Amazon EBS 오류 감지 (p. 356)• AWS CloudFormation을 이용해 암호화된 Amazon EBS 볼륨 생성하기 (p. 357)

Amazon EBS 암호화암호화된 Amazon EBS 볼륨을 지원되는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스 유형에 연결하면 볼륨, I/O, 그리고 볼륨에서 생성된 스냅샷에 저장된 데이터가 모두 암호화됩니다. 암호화는 AmazonEC2 인스턴스를 호스팅하는 서버에서 이루어집니다.

이 기능은 모든 Amazon EBS 볼륨 유형에 지원됩니다. 암호화된 볼륨에 액세스하는 방법은 다른 볼륨의 경우와 동일합니다. 암호화 및 암호 해독은 중단 없이 처리되므로 사용자, EC2 인스턴스 또는 애플리케이션에서 별도로 조치할 부분은 없습니다. 암호화된 볼륨의 스냅샷은 자동으로 암호화되며, 암호화된 스냅샷으로생성한 볼륨도 자동으로 암호화됩니다.

EBS 볼륨의 암호화 상태는 볼륨을 생성할 때 결정됩니다. 기존 볼륨의 암호화 상태는 변경할 수 없습니다.그러나 암호화된 볼륨과 암호화되지 않은 볼륨 사이에서 데이터를 마이그레이션하고 스냅샷을 복사하는 동안 새 암호화 상태를 적용할 수 있습니다.

Amazon EBS 는 기본적으로 선택적인 암호화를 지원합니다. 모든 새 EBS 볼륨과 스냅샷 복제본에서 암호화를 자동으로 설정할 수 있습니다. AWS 계정 및 지역. 이 구성 설정은 기존 볼륨 또는 스냅샷에 영향을주지 않습니다. 자세한 내용은 기본적으로 암호화 in the Linux 인스턴스용 Amazon EC2 사용 설명서 또는Windows 인스턴스용 Amazon EC2 사용 설명서.

355

Page 364: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사용 CMKs 데이터 키

사용 CMKs 데이터 키귀하가 암호화 생성 Amazon EBS 볼륨을(를) 지정합니다. AWS KMS 고객 마스터 키 (CMK) ). 기본적으로 Amazon EBS 사용 AWS 관리 CMK (p. 4) for Amazon EBS 계정에서aws/ebs) ). 하지만 고객 관리CMK (p. 4) 을(를) 만들고 관리합니다.

고객 관리 CMK님, Amazon EBS 사용 권한 CMK 을(를) 대신하여 을(를) 대신하여 을 필요한 권한 목록은다음을 참조하십시오. IAM 사용자에 대한 권한 in the Linux 인스턴스용 Amazon EC2 사용 설명서 또는Windows 인스턴스용 Amazon EC2 사용 설명서.

Important

Amazon EBS 지원 대칭 CMKs (p. 158). 귀하는 메트릭 CMK (p. 158) 암호화를 Amazon EBS 볼륨.CMK가 대칭 또는 비대칭인지 여부를 확인하는 방법은 대칭 및 비대칭 CMKs 식별 (p. 40) 단원을참조하십시오.

각 볼륨에 대해 Amazon EBS 질문한다 AWS KMS 고유한 데이터 키를 생성하여 CMK 을(를) 지정합니다.Amazon EBS 암호화된 데이터 키를 볼륨으로 저장합니다. 그 후 볼륨을 Amazon EC2 인스턴스, AmazonEBS 통화 AWS KMS 데이터 키를 해독합니다. Amazon EBS 는 하이퍼바이저 메모리에 있는 일반 텍스트 데이터 키를 사용하여 모든 디스크 입출력을 볼륨에 암호화합니다. 자세한 내용은 EBS 암호화 작동 방식 in theLinux 인스턴스용 Amazon EC2 사용 설명서 또는 Windows 인스턴스용 Amazon EC2 사용 설명서.

Amazon EBS 암호화 컨텍스트AWS KMS에 대한 GenerateDataKeyWithoutPlaintext 및 Decrypt 요청 시 Amazon EBS는 요청에서 볼륨 또는 스냅샷을 식별하는 이름-값 페어와 함께 암호화 컨텍스트를 사용합니다. 암호화 컨텍스트의 이름은 달라지지 않습니다.

암호화 컨텍스트 (p. 16)는 보안되지 않은 임의의 데이터를 포함하는 키-값 페어 세트입니다. 데이터 암호화요청에 암호화 컨텍스트를 포함하는 경우, AWS KMS는 암호화된 데이터에 암호화 컨텍스트를 암호 방식으로 바인딩합니다. 따라서 동일한 암호화 컨텍스트로 전달해야 이 데이터를 해독할 수 있습니다.

Amazon EBS CreateSnapshot 작업을 통해 생성된 모든 볼륨과 암호화된 스냅샷에서 Amazon EBS가 볼륨ID를 암호화 컨텍스트 값으로 사용합니다. CloudTrail 로그 항목의 requestParameters 필드에서 암호화컨텍스트는 다음과 비슷하게 표시됩니다.

"encryptionContext": { "aws:ebs:id": "vol-0cfb133e847d28be9"}

Amazon EC2 CopySnapshot 작업을 통해 생성된 암호화된 스냅샷에서 Amazon EBS는 스냅샷 ID를 암호화컨텍스트 값으로 사용합니다. CloudTrail 로그 항목의 requestParameters 필드에서 암호화 컨텍스트는다음과 비슷하게 표시됩니다.

"encryptionContext": { "aws:ebs:id": "snap-069a655b568de654f"}

Amazon EBS 오류 감지암호화된 EBS 볼륨을 생성하거나 EC2 인스턴스에 볼륨을 첨부하려면, Amazon EBS 그리고 Amazon EC2인프라스트럭처를 사용하여 CMK EBS 볼륨 암호화를 위해 지정되었습니다. 언제 CMK 사용할 수 없음—예를 들어, 주요 상태 (p. 175) 이(가) Enabled —볼륨 생성 또는 볼륨 첨부 파일에 장애가 발생합니다.

이 경우 Amazon EBS는 Amazon CloudWatch Events로 이벤트를 보내 실패 사실을 알립니다. CloudWatch이벤트에서는 이러한 이벤트에 대한 응답으로 자동 작업을 트리거하는 규칙을 수립할 수 있습니다. 자세한

356

Page 365: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS CloudFormation을 이용해 암호화된 Amazon EBS 볼륨 생성하기

내용은 Amazon CloudWatch 이벤트 Amazon EBS in the Linux 인스턴스용 Amazon EC2 사용 설명서, 특히다음 섹션이 있습니다.

• 볼륨 연결 또는 다시 연결에 유효하지 않은 암호화 키• 볼륨 생성에 유효하지 않은 암호화 키

이러한 장애를 해결하려면 CMK EBS 볼륨 암호화를 위해 지정한 경우 이를 위해 먼저 보기 CMK (p. 27) 현재 키 상태를 상태 열 AWS Management 콘솔) ). 그리고 다음 링크 중 하나에서 정보를 참조합니다.

• 만약 CMK의 키 상태가 비활성화되었습니다. 활성화 (p. 47).• 만약 CMK의 키 상태가 가져오기 보류 중입니다. 키 재료 가져오기 (p. 279).• 만약 CMK의 키 상태가 삭제 대기 중입니다. 키 삭제 취소 (p. 268).

AWS CloudFormation을 이용해 암호화된 AmazonEBS 볼륨 생성하기AWS CloudFormation을 이용해 암호화된 Amazon EBS 볼륨을 생성할 수 있습니다. 자세한 내용은AWS::EC2::볼륨 in the AWS CloudFormation 사용 설명서.

Amazon Elastic Transcoder의 AWS KMS 활용 방식Amazon Elastic Transcoder를 이용해 Amazon S3 버킷에 저장된 미디어 파일을 소비자 재생 디바이스에 필요한 형식으로 변환할 수 있습니다. 입력 및 출력 파일을 모두 암호화하고 해독할 수 있습니다. 다음 섹션에서는 두 프로세스에 AWS KMS가 사용되는 방식을 논의합니다.

주제• 입력 파일 암호화 (p. 357)• 입력 파일 해독 (p. 358)• 출력 파일 암호화 (p. 359)• HLS 콘텐츠 보호 (p. 360)• Elastic Transcoder 암호화 컨텍스트 (p. 360)

입력 파일 암호화Elastic Transcoder를 사용하기 전에 Amazon S3 버킷을 생성하고 거기에 미디어 파일을 업로드해야 합니다.AES 클라이언트 측 암호화를 사용해 업로드하기 전 또는 Amazon S3 서버 측 암호화를 사용해 업로드하기전에 파일을 암호화해야 합니다.

AES를 이용한 클라이언트 측 암호화를 선택하면 Amazon S3에 업로드하기 전에 파일을 암호화해야 하고,암호화 키에 Elastic Transcoder 액세스를 제공해야 합니다. 이를 사용하여 대칭 (p. 158) AWS KMS 고객 마스터 키 (p. 3) (CMK)를 사용하여 미디어 파일을 암호화하는 데 사용한 AES 암호화 키를 보호합니다.

서버 측 암호화를 선택하는 경우 Amazon S3 을(를) 대신하여 모든 파일을 암호화하고 복호화합니다. 구성할수 있습니다. Amazon S3 세 가지 다른 마스터 키 파일을 암호화하는 데 사용되는 고유한 데이터 키를 보호하려면

• An Amazon S3 키, 암호화 키, Amazon S3 소유 및 관리. 이는 귀하의 AWS 계정.• The AWS 관리 CMK (p. 4) for Amazon S3, a CMK 계정으로 구성되어 있지만 AWS

357

Page 366: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드입력 파일 해독

• 임의 대칭 (p. 158) 고객 관리 CMK (p. 4) 사용해 AWS KMS

Important

클라이언트 측 암호화와 서버 측 암호화 Elastic Transcoder 지원 대칭 CMKs (p. 158). 귀하는 메트릭 CMK (p. 158) 암호화하려면 Elastic Transcoder 파일. CMK가 대칭 또는 비대칭인지 여부를 확인하는 방법은 대칭 및 비대칭 CMKs 식별 (p. 40) 단원을 참조하십시오.

암호화를 설정하고 키를 사용하여 키를 지정할 수 있습니다. Amazon S3 콘솔 또는 적절한 Amazon S3 청구. 자세한 정보를 보려면 Amazon S3 암호화를 수행합니다. 서버 측 암호화를 사용하여 데이터 보호 in theAmazon Simple Storage Service 개발자 가이드.

입력을 사용하여 입력 파일을 보호하면 AWS 관리 CMK for Amazon S3 고객 또는 고객이 관리하는 CMK,Amazon S3 and AWS KMS 다음과 같은 방식으로 상호 작용합니다.

1. Amazon S3 일반 텍스트 데이터 키와 지정된 데이터 키 사본을 CMK.2. AWS KMS 데이터 키를 생성하고 지정된 데이터로 암호화합니다. CMK, 그리고 나서 일반 텍스트 데이터

키와 암호화된 데이터 키를 모두 보냅니다. Amazon S3.3. Amazon S3는 일반 텍스트 데이터 키를 이용해 미디어 파일을 암호화한 후 지정된 Amazon S3 버킷에 파

일을 저장합니다.4. Amazon S3는 암호화한 미디어 파일과 함께 암호화한 데이터 키를 저장합니다.

입력 파일 해독Amazon S3 서버 측 암호화를 이용해 입력 파일을 암호화하기로 선택하면 Elastic Transcoder가 파일을 해독하지 않습니다. 대신 Elastic Transcoder는 작업을 생성할 때 지정한 설정 및 파이프라인에 따라 Amazon S3가 해독을 수행하는 데 의존합니다.

다음 설정 조합을 사용할 수 있습니다.

암호화 모드 AWS KMS 키 의미

S3 기본 값: Amazon S3는 미디어 파일을 암호화하고 해독하는 데 사용되는키를 생성하고 관리합니다. 이 프로세스는 사용자가 볼 수 없습니다.

S3-AWS-KMS 기본 값: Amazon S3 기본값으로 암호화된데이터 키를 사용합니다. AWS 관리 CMK for Amazon S3 를 사용하여 미디어 파일을 암호화합니다.

S3-AWS-KMS 사용자 지정(ARN 이용) Amazon S3 지정된 고객이 암호화된 데이터 키를 사용합니다.CMK 미디어 파일을 암호화합니다.

[S3-AWS-KMS]가 지정되면 Amazon S3와 AWS KMS가 다음과 같이 상호 작용하여 해독을 수행합니다.

1. Amazon S3는 AWS KMS로 암호화된 데이터 키를 보냅니다.2. AWS KMS 적절한 데이터를 사용하여 데이터 키를 해독합니다. CMK를 선택한 다음 일반 텍스트 데이터

키를 Amazon S3.3. Amazon S3는 일반 텍스트 데이터 키를 이용해 암호화 텍스트를 해독합니다.

358

Page 367: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드출력 파일 암호화

AES 키를 사용하여 클라이언트 측 암호화를 선택하는 경우, Elastic Transcoder 에서 암호화된 파일을 검색합니다. Amazon S3 버킷과 복호화합니다. Elastic Transcoder 사용 CMK AES 키를 해독하기 위해 파이프라인을 만든 다음 AES 키를 사용하여 미디어 파일을 복호화합니다.

출력 파일 암호화Elastic Transcoder는 작업과 파이프라인을 생성할 때 암호화 설정을 지정하는 방식에 따라 출력 파일을 암호화합니다. 다음과 같은 옵션을 사용할 수 있습니다.

암호화 모드 AWS KMS 키 의미

S3 기본 값: Amazon S3는 출력 파일을 암호화하는 데 사용되는 키를 생성하고 관리합니다.

S3-AWS-KMS 기본 값: Amazon S3 생성된 데이터 키 사용 AWS KMS 암호화 및 AWS 관리 CMK for Amazon S3 계정에서.

S3-AWS-KMS 사용자 지정(ARN 이용) Amazon S3 고객 관리를 통해 암호화된 데이터 키 사용 CMK 미디어 파일을 암호화하기 위해 ARN에 의해 지정됩니다.

AES 기본 값: Elastic Transcoder 사용 AWS 관리 CMK for Amazon S3 을(를)통해 사용자가 제공하는 지정된AES 키를 해독하고 해당 키를 사용하여 출력 파일을 암호화합니다.

AES 사용자 지정(ARN 이용) Elastic Transcoder 고객이 관리하는 CMK ARN에서 지정한 AES 키를 해독하고 해당 키를 사용하여출력 파일을 암호화합니다.

사용자가 AWS 관리 CMK for Amazon S3 고객 또는 고객이 관리하는 CMK 출력 파일을 암호화하는 데 사용됩니다. Amazon S3 and AWS KMS 다음과 같은 방식으로 상호 작용합니다.

1. Amazon S3 일반 텍스트 데이터 키와 지정된 데이터 키 사본을 CMK.2. AWS KMS 데이터 키를 생성하여 CMK일반 텍스트 데이터 키와 암호화된 데이터 키를 모두 전송하여

Amazon S3.3. Amazon S3는 데이터 키를 이용해 미디어를 암호화하고 지정된 Amazon S3 버킷에 저장합니다.4. Amazon S3는 암호화한 미디어 파일과 함께 암호화한 데이터 키를 저장합니다.

제공된 AES 키를 사용하여 출력 파일을 암호화하는 데 사용할 경우 AES 키를 사용하여 CMK 에서 AWSKMS. Elastic Transcoder, AWS KMS다음 방법으로 상호 작용합니다.

1. AES 키를 암호화하여 암호화 작업 AWS KMS API AWS KMS 지정된 키를 사용하여 키를 암호화합니다.CMK. 다음 항목을 지정합니다. CMK 파이프라인을 만들 때 사용할 수 있습니다.

2. Elastic Transcoder 작업을 생성할 때 암호화한 AES 키가 포함된 파일을 지정합니다.3. Elastic Transcoder는 AWS KMS API에서 해독 작업을 호출하고 암호화된 키를 암호화 텍스트로 전달하여

키를 해독합니다.

359

Page 368: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드HLS 콘텐츠 보호

4. Elastic Transcoder는 해독한 AES 키를 이용해 출력 미디어 파일을 암호화한 후 메모리에서 해독된 AES키를 삭제합니다. 작업에 원래 정의된, 암호화한 사본만 디스크에 저장됩니다.

5. 암호화한 출력 파일을 다운로드하고 원래 정의한 AES 키를 사용해 로컬에서 해독할 수 있습니다.

Important

AWS는 절대로 프라이빗 암호화 키를 저장하지 않습니다. 따라서 키를 안전하게 보호하고 관리하는것이 중요합니다. 암호화 키를 잃어버릴 경우 데이터의 암호를 해독할 수 없습니다.

HLS 콘텐츠 보호HLS(HTTP Live Streaming)는 가변 스트리밍 프로토콜입니다. Elastic Transcoder는 입력 파일을 미디어 세그먼트라는 작은 개별 파일로 분할하여 HLS를 지원합니다. 해당하는 개별 미디어 세그먼트 집합에는 서로다른 비트 속도로 인코딩된 동일한 구성 요소가 포함되기 때문에 플레이어는 가용 대역폭에 가장 잘 맞는 스트림을 선택할 수 있습니다. Elastic Transcoder는 스트리밍할 수 있는 다양한 세그먼트에 대한 메타데이터를포함하는 재생 목록도 생성합니다.

HLS 콘텐츠 보호를 활성화하면 각 미디어 세그먼트는 128비트 AES 암호화 키를 이용해 암호화됩니다. 사용자가 콘텐츠를 시청하면 플레이어가 재생 프로세스 중에 키를 다운로드하고 미디어 세그먼트를 해독합니다.

두 가지 유형의 키가 사용됩니다. AWS KMS CMK 데이터 키. 귀하는 CMK 를 사용하여 데이터 키를 암호화하고 해독합니다. Elastic Transcoder 은(는) 데이터 키를 사용하여 미디어 세그먼트를 암호화하고 해독합니다. 데이터 키는 AES-128이어야 합니다. 동일한 콘텐츠의 모든 변형 버전과 세그먼트가 동일한 데이터 키를이용해 암호화됩니다. 직접 데이터 키를 제공하거나 Elastic Transcoder가 자동으로 생성할 수 있습니다.

The CMK 은(는) 다음 포인트에서 데이터 키를 암호화하는 데 사용할 수 있습니다.

• 고유한 데이터 키를 입력하려면 Elastic Transcoder로 전달하기 전에 암호화해야 합니다.• Elastic Transcoder가 데이터 키를 생성하도록 요청하면 Elastic Transcoder가 자동으로 데이터 키를 암호

화합니다.

The CMK 은(는) 다음 포인트에서 데이터 키를 해독하는 데 사용할 수 있습니다.

• Elastic Transcoder는 데이터 키를 이용해 출력 파일을 암호화하거나 입력 파일을 해독해야 할 때 입력된데이터 키를 해독합니다.

• Elastic Transcoder가 생성한 데이터 키를 해독하고 이를 이용해 출력 파일을 해독합니다.

자세한 내용은 HLS 콘텐츠 보호 in the Amazon Elastic Transcoder Developer Guide.

Elastic Transcoder 암호화 컨텍스트암호화 컨텍스트 (p. 16)는 보안되지 않은 임의의 데이터를 포함하는 키-값 페어 세트입니다. 데이터 암호화요청에 암호화 컨텍스트를 포함하는 경우, AWS KMS는 암호화된 데이터에 암호화 컨텍스트를 암호 방식으로 바인딩합니다. 따라서 동일한 암호화 컨텍스트로 전달해야 이 데이터를 해독할 수 있습니다.

Elastic Transcoder는 모든 AWS KMS API 요청에서 동일한 암호화 컨텍스트를 사용하여 데이터 키를 생성하고 암호화 및 해독합니다.

"service" : "elastictranscoder.amazonaws.com"

암호화 컨텍스트는 CloudTrail 제공된 방법을 이해할 수 있도록 AWS KMS CMK 을(를) 사용하였습니다. 로그 파일의 필드에서 암호화 컨텍스트는 다음과 비슷하게 표시됩니다.

"encryptionContext": { "service" : "elastictranscoder.amazonaws.com"

360

Page 369: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드Amazon EMR

}

구성 방법에 대한 자세한 내용은 Elastic Transcoder 지원되는 암호화 옵션 중 하나를 사용할 작업, 참조 데이터 암호화 옵션 in the Amazon Elastic Transcoder Developer Guide.

Amazon EMR의 AWS KMS 활용 방식Amazon EMR 클러스터를 사용하는 경우에는 영구 스토리지 위치에 저장하기 전에 저장된 데이터를 암호화하도록 클러스터를 구성할 수 있습니다. EMR 파일 시스템(EMRFS), 클러스터 노드의 스토리지 볼륨 또는두 곳에 저장된 데이터를 모두 암호화할 수 있습니다. 저장된 데이터를 암호화하려면 고객 마스터 키 (CMK)AWS KMS. 다음 항목에서는 Amazon EMR 클러스터는 CMK 저장 시 데이터를 암호화합니다.

Important

Amazon EMR 지원 대칭 CMKs (p. 158). 귀하는 메트릭 CMK (p. 158) 저장하려면 Amazon EMR 클러스터. CMK가 대칭 또는 비대칭인지 여부를 확인하는 방법은 대칭 및 비대칭 CMKs 식별 (p. 40)단원을 참조하십시오.

Amazon EMR 클러스터는 전송 중인 데이터도 암호화할 수 있습니다. 그러면 클러스터가 네트워크를 통해데이터를 보내기 전에 암호화합니다. 귀하는 CMK 에서 데이터를 암호화합니다. 자세한 내용은 인스턴트 데이터 암호화 in the Amazon EMR 관리 안내서.

사용 가능한 모든 암호화 옵션에 대한 자세한 내용은 Amazon EMR, 참조: 암호화 옵션 in the Amazon EMR관리 안내서.

주제• EMR 파일 시스템(EMRFS)에서 데이터 암호화 (p. 361)• 클러스터 노드의 스토리지 볼륨에서 데이터 암호화 (p. 363)• 암호화 컨텍스트 (p. 363)

EMR 파일 시스템(EMRFS)에서 데이터 암호화Amazon EMR 클러스터는 배포된 두 파일 시스템을 사용합니다.

• 하둡 분산 파일 시스템(HDFS). HDFS 암호화는 CMK 에서 AWS KMS.• EMR 파일 시스템(EMRFS). EMRFS는 Amazon EMR 클러스터가 Amazon Simple Storage

Service(Amazon S3)에 데이터를 저장할 수 있도록 하는 HDFS 구현입니다. EMRFS는 4개의 암호화 옵션을 지원하며, 그 중 2개는 CMK 에서 AWS KMS. EMRFS 암호화 옵션에 대한 자세한 내용은 암호화 옵션in the Amazon EMR 관리 안내서.

A를 사용하는 두 개의 EMRFS 암호화 옵션 CMK 다음 암호화 기능을 사용하여 제공되는 암호화 기능을 사용합니다. Amazon S3:

• AWS KMS 관리형 키를 사용한 서버 측 암호화(SSE-KMS). SSE-KMS를 통해 Amazon EMR 클러스터는데이터를 Amazon S3, 그리고 Amazon S3 사용 CMK S3 버킷에 저장하기 전에 데이터를 암호화합니다.이 작업이 이루어지는 과정에 대한 자세한 내용은 SSE-KMS를 통해 EMRFS에 데이터를 암호화하는 프로세스 (p. 362) 단원을 참조하십시오.

• AWS KMS 관리형 키를 사용한 클라이언트 측 암호화. CSE-KMS를 통해 Amazon EMR 클러스터는 CMK데이터를 암호화하려면 Amazon S3 보관용. 이 작업이 이루어지는 과정에 대한 자세한 내용은 CSE-KMS를 통해 EMRFS에 데이터를 암호화하는 프로세스 (p. 362) 단원을 참조하십시오.

사용자가 Amazon EMR SSE-KMS 또는 CSE-KMS와 함께 EMRFS에서 데이터를 암호화하려면 CMK 에서 AWS KMS 원하는 것을 Amazon S3 또는 Amazon EMR 사용할 클러스터입니다. SSE-KMS를 사용하면AWS 관리 CMK for Amazon S3 별칭으로 aws/s3또는 대칭 고객 관리 CMK 을(를) 만듭니다. CSE-KMS를 사

361

Page 370: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드EMR 파일 시스템(EMRFS)에서 데이터 암호화

용하면 대칭형 고객을 선택해야 합니다. CMK 을(를) 만듭니다. 고객을 관리하는 경우 CMK님, Amazon EMR클러스터는 CMK. 자세한 내용은 사용 AWS KMS 고객 마스터 키 (CMKs) 암호화 in the Amazon EMR 관리안내서.

SSE-KMS 및 CSE-KMS 모두 CMK 선택하셨습니다 마스터 키 in an 봉투 암호화 (p. 15) 워크플로. 데이터는고유한 데이터 암호화 키(또는 데이터 키이 데이터 키는 CMK 에서 AWS KMS. 암호화된 데이터와 그 데이터키의 암호화된 사본이 S3 버킷에서 암호화된 단일 객체로 저장됩니다. 이 과정에 대한 자세한 내용은 다음주제를 참조하십시오.

주제• SSE-KMS를 통해 EMRFS에 데이터를 암호화하는 프로세스 (p. 362)• CSE-KMS를 통해 EMRFS에 데이터를 암호화하는 프로세스 (p. 362)

SSE-KMS를 통해 EMRFS에 데이터를 암호화하는 프로세스Amazon EMR 클러스터가 SSE-KMS를 사용하도록 구성하면 암호화 프로세스가 다음과 같이 작동합니다.

1. 클러스터는 S3 버킷에 저장하기 위해 Amazon S3로 데이터를 보냅니다.2. Amazon S3 전송 generatedatakey 요청 AWS KMS의 키 ID를 지정합니다. CMK SSE-KMS를 사용하도록

클러스터를 구성한 경우 선택합니다. 요청에는 암호화 컨텍스트가 포함됩니다. 자세한 내용은 암호화 컨텍스트 (p. 363) 단원을 참조하십시오.

3. AWS KMS는 고유한 데이터 암호화 키(데이터 키)를 생성한 후 이 데이터 키의 사본 두 개를 Amazon S3로 보냅니다. 사본 한 부는 암호화되지 않고(일반 텍스트), 다른 사본은 CMK.

4. Amazon S3는 일반 텍스트 데이터 키를 사용해 1단계에 받은 데이터를 암호화하고, 사용 후 가급적 빨리메모리에서 일반 텍스트 데이터 키를 제거합니다.

5. Amazon S3는 암호화된 데이터와 그 데이터 키의 암호화된 사본을 S3 버킷에서 암호화된 단일 객체로 저장합니다.

해독 프로세스는 다음과 같습니다.

1. 클러스터가 S3 버킷에서 암호화된 데이터 객체를 요청합니다.2. Amazon S3가 S3 객체에서 암호화된 데이터 키를 추출한 후, 해독 요청을 통해 암호화된 데이터 키를

AWS KMS에 보냅니다. 이 요청은 암호화 컨텍스트 (p. 16)를 포함합니다.3. AWS KMS 암호화를 사용하여 암호화된 데이터 키를 CMK 암호화를 위해 사용한 다음 암호화된(일반 텍

스트) 데이터 키를 Amazon S3.4. Amazon S3는 일반 텍스트 데이터 키를 사용해 암호화된 데이터를 해독하고, 사용 후 가급적 빨리 메모리

에서 일반 텍스트 데이터 키를 제거합니다.5. Amazon S3는 해독한 데이터를 클러스터로 보냅니다.

CSE-KMS를 통해 EMRFS에 데이터를 암호화하는 프로세스Amazon EMR 클러스터가 CSE-KMS를 사용하도록 구성하면 암호화 프로세스가 다음과 같이 작동합니다.

1. 데이터를 저장할 준비가 되면 Amazon S3클러스터는 generatedatakey 요청 AWS KMS의 키 ID를 지정합니다. CMK CSE-KMS를 사용하도록 클러스터를 구성한 경우 선택합니다. 요청에는 암호화 컨텍스트가 포함됩니다. 자세한 내용은 암호화 컨텍스트 (p. 363) 단원을 참조하십시오.

2. AWS KMS는 고유한 데이터 암호화 키(데이터 키)를 생성한 후 이 데이터 키의 사본 두 개를 클러스터로보냅니다. 사본 한 부는 암호화되지 않고(일반 텍스트), 다른 사본은 CMK.

3. 클러스터는 일반 텍스트 데이터 키를 사용해 데이터를 암호화하고, 사용 후 가급적 빨리 메모리에서 일반텍스트 데이터 키를 제거합니다.

4. 클러스터는 암호화된 데이터와 그 데이터 키의 암호화된 사본을 암호화된 단일 객체로 결합합니다.5. 클러스터는 저장을 위해 Amazon S3로 암호화된 객체를 보냅니다.

362

Page 371: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드클러스터 노드의 스토리지 볼륨에서 데이터 암호화

해독 프로세스는 다음과 같습니다.

1. 클러스터가 S3 버킷에서 암호화된 데이터 객체를 요청합니다.2. Amazon S3는 클러스터로 암호화된 객체를 보냅니다.3. 클러스터가 암호화된 객체에서 암호화된 데이터 키를 추출한 후, 해독 요청을 통해 암호화된 데이터 키를

AWS KMS에 보냅니다. 이 요청은 암호화 컨텍스트 (p. 16)를 포함합니다.4. AWS KMS 암호화를 사용하여 암호화된 데이터 키를 CMK 암호화를 위해 사용된 다음 암호화된(일반 텍

스트) 데이터 키를 클러스터에 전송합니다.5. 클러스터는 일반 텍스트 데이터 키를 사용해 암호화된 데이터를 해독하고, 사용 후 가급적 빨리 메모리에

서 일반 텍스트 데이터 키를 제거합니다.

클러스터 노드의 스토리지 볼륨에서 데이터 암호화Amazon EMR 클러스터는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스의 모음입니다. 클러스터에 있는 각 인스턴스를 클러스터 노드 또는 노드라고 합니다. 각 노드에는 인스턴스 스토어 볼륨과 AmazonElastic Block Store(Amazon EBS) 볼륨 등 두 가지 유형의 스토리지 볼륨이 있을 수 있습니다. LUKS(LinuxUnified Key Setup)를 사용해 노드에서 두 가지 유형의 스토리지 볼륨을 모두 암호화하도록(각 노드의 부팅볼륨은 제외) 클러스터를 구성할 수 있습니다. 이를 로컬 디스크 암호화라고 합니다.

클러스터에 대해 로컬 디스크 암호화를 설정하면 LUKS 마스터 키 함께 CMK 에서 AWS KMS. 다음을 선택해야 합니다. 고객 관리 CMK (p. 4) 생성할 수 있습니다. AWS 관리 CMK (p. 4). 고객을 관리하는 경우 CMK님, Amazon EMR 클러스터는 CMK. 자세한 내용은 사용 AWS KMS 고객 마스터 키 (CMKs) 암호화 in theAmazon EMR 관리 안내서.

로컬 디스크 암호화를 사용하여 로컬 디스크 암호화를 CMK암호화 프로세스는 다음과 같이 작동합니다.

1. 클러스터 노드가 시작될 때마다 generatedatakey 요청 AWS KMS의 키 ID를 지정합니다. CMK 클러스터에 대해 로컬 디스크 암호화를 설정할 때 선택합니다.

2. AWS KMS는 고유한 데이터 암호화 키(데이터 키)를 생성한 후 이 데이터 키의 사본 두 개를 노드로 보냅니다. 사본 한 부는 암호화되지 않고(일반 텍스트), 다른 사본은 CMK.

3. 노드는 기본 텍스트 데이터 키의 base64 인코딩된 버전을 암호를 보호하는 암호로 사용합니다. LUKS 마스터 키. 노드는 부팅 볼륨에 데이터 키의 암호화된 사본을 저장합니다.

4. 노드가 재부팅되면 재부팅된 노드가 해독 요청을 통해 암호화된 데이터 키를 AWS KMS에 보냅니다.5. AWS KMS 암호화를 사용하여 암호화된 데이터 키를 CMK 암호화를 위해 사용된 다음 암호화된(일반 텍

스트) 데이터 키를 노드로 전송합니다.6. 노드는 기본 텍스트 데이터 키의 base64 인코딩된 버전을 암호로 사용하여 LUKS 마스터 키.

암호화 컨텍스트AWS KMS와 통합된 각 AWS 서비스는 AWS KMS를 사용해 데이터 키를 생성하거나 데이터를 암호화 또는 해독할 때 암호화 컨텍스트 (p. 16)를 지정할 수 있습니다. 암호화 컨텍스트는 데이터 무결성 확인을 위해AWS KMS에서 사용하는 추가적인 인증 정보입니다. 서비스가 암호화 작업에 대해 암호화 컨텍스트를 지정할 때 해당 해독 작업에 대해서 동일한 암호화 컨텍스트를 지정해야 합니다. 그렇지 않으면 해독이 실패합니다. 암호화 컨텍스트도 AWS CloudTrail 로그 파일을 사용하여 CMK 을(를) 사용하였습니다.

다음 섹션에서는 각각에 사용되는 암호화 컨텍스트를 설명합니다. Amazon EMR 암호화 시나리오를 CMK.

SSE-KMS를 이용한 EMRFS 암호화를 위한 암호화 컨텍스트SSE-KMS를 통해 Amazon EMR 클러스터는 데이터를 Amazon S3, 그리고 Amazon S3 사용 CMK S3 버킷에 저장하기 전에 데이터를 암호화합니다. 이 경우, Amazon S3는 AWS KMS로 보내는 GenerateDataKey및 Decrypt 요청과 함께 S3 객체의 Amazon 리소스 이름(ARN)을 암호화 컨텍스트로 사용합니다. 다음 예는Amazon S3가 사용하는 암호화 컨텍스트의 JSON 표시를 보여줍니다.

363

Page 372: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드Amazon Redshift

{ "aws:s3:arn" : "arn:aws:s3:::S3_bucket_name/S3_object_key" }

CSE-KMS를 이용한 EMRFS 암호화를 위한 암호화 컨텍스트CSE-KMS를 통해 Amazon EMR 클러스터는 CMK 데이터를 암호화하려면 Amazon S3 보관용. 이 경우 클러스터는 CMK 암호화 컨텍스트로서 generatedatakey and 해독 요청하도록 요청할 수 AWS KMS. 다음 예는클러스터가 사용하는 암호화 컨텍스트의 JSON 표시를 보여줍니다.

{ "kms_cmk_id" : "arn:aws:kms:us-east-2:111122223333:key/0987ab65-43cd-21ef-09ab-87654321cdef" }

LUKS를 이용한 로컬 디스크 암호화를 위한 암호화 컨텍스트Amazon EMR 클러스터가 LUKS를 통한 로컬 디스크 암호화를 사용하는 경우, 클러스터 노드는 AWS KMS로 보내는 GenerateDataKey 및 Decrypt 요청과 함께 암호화 컨텍스트를 지정하지 않습니다.

Amazon Redshift의 AWS KMS 활용 방식이 주제는 Amazon Redshift가 AWS KMS를 이용해 데이터를 암호화하는 방식을 논의합니다.

주제• Amazon Redshift 암호화 (p. 364)• 암호화 컨텍스트 (p. 365)

Amazon Redshift 암호화Amazon Redshift 데이터 웨어하우스는 노드라고 하는 컴퓨팅 리소스의 모음으로, 노드는 클러스터라고 하는 그룹을 구성합니다. 각 클러스터는 Amazon Redshift 엔진을 실행하며, 하나 이상의 데이터베이스를 포함합니다.

Amazon Redshift는 암호화를 위해 4개 티어, 키 기반 계층 구조를 사용합니다. 아키텍처는 데이터 암호화 키,데이터베이스 키, 클러스터 키 및 마스터 키.

데이터 암호화 키는 클러스터의 데이터 블록을 암호화합니다. 각 데이터 블록은 임의로 생성된 AES-256에할당됩니다. 이러한 키는 클러스터에 대한 데이터베이스 키를 사용해 암호화됩니다.

데이터베이스 키는 클러스터의 데이터 암호화 키를 암호화합니다. 데이터베이스 키는 임의로 생성된AES-256 키입니다. 이 키는 Amazon Redshift 클러스터와 분리된 네트워크의 디스크에 저장되며 보안 채널을 통해 클러스터로 전달됩니다.

클러스터 키는 Amazon Redshift 클러스터에 대한 데이터베이스 키를 암호화합니다. AWS KMS, AWSCloudHSM 또는 외부 하드웨어 보안 모듈(HSM)을 이용해 클러스터 키를 관리할 수 있습니다. 자세한 내용은Amazon Redshift 데이터베이스 암호화 문서를 참조하십시오.

The 마스터 키 클러스터 키를 암호화합니다. 귀하는 AWS KMS 고객 마스터 키 (p. 3) (CMK) 마스터 키 forAmazon Redshift. Amazon Redshift 콘솔에서 해당 확인란을 선택하여 암호화를 요청할 수 있습니다. 다음을지정할 수 있습니다. 고객 관리 CMK (p. 4) 을(를) 사용하여 암호화 상자 아래에 나타나는 목록 중 하나를 선택합니다. 고객 관리를 지정하지 않는 경우 CMK, Amazon Redshift 사용 AWS 관리 CMK (p. 4) for AmazonRedshift 귀하의 계정에서.

Important

Amazon Redshift 대칭만 지원 CMKs. 차트 메트릭을 사용할 수 없습니다. CMK 현재 마스터 키 inan Amazon Redshift 암호화 워크플로 CMK가 대칭 또는 비대칭인지 여부를 확인하는 방법은 대칭및 비대칭 CMKs 식별 (p. 40) 단원을 참조하십시오.

364

Page 373: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드암호화 컨텍스트

암호화 컨텍스트AWS KMS와 통합된 각 서비스는 데이터 키 요청, 암호화, 암호화 해제 시 암호화 컨텍스트 (p. 16)를 지정합니다. 암호화 컨텍스트는 데이터 무결성 확인을 위해 AWS KMS에서 사용하는 추가 인증 정보(AAD)입니다.즉 암호화 작업에 대해 암호화 컨텍스트가 지정되면 서비스가 해독 작업에 대해서도 이를 지정합니다. 그렇지 않으면 해독이 실패하게 됩니다. Amazon Redshift에서는 암호화 컨텍스트로 클러스터 ID와 생성 시간을사용합니다. CloudTrail 로그 파일의 requestParameters 필드에 암호화 컨텍스트가 이와 비슷하게 표시됩니다.

"encryptionContext": { "aws:redshift:arn": "arn:aws:redshift:region:account_ID:cluster:cluster_name", "aws:redshift:createtime": "20150206T1832Z"},

클러스터의 이름을 검색할 수 있습니다. CloudTrail 로그를 사용하여 어떤 작업을 수행했는지 고객 마스터 키(CMK) ). 이러한 작업으로는 클러스터 암호화, 클러스터 해독, 데이터 키 생성 등이 있습니다.

Amazon Relational Database Service(AmazonRDS)의 AWS KMS 활용 방식

Amazon Relational Database Service(Amazon RDS)를 이용해 클라우드에서 관계형 데이터베이스를 설치,운영 및 확장할 수 있습니다. 선택적으로, 귀하는 귀하가 귀하의 Amazon RDS DB 인스턴스 a 고객 마스터키 (p. 3) (CMK) AWS KMS. 암호화하는 방법을 알아보려면 Amazon RDS 자원 AWS KMS CMK, 참조: 암호화 Amazon RDS 자원 in the Amazon RDS 사용 설명서.

Important

Amazon RDS 지원 대칭 CMKs (p. 158). 귀하는 메트릭 CMK (p. 158) 암호화를 위해 Amazon RDS데이터베이스. CMK가 대칭 또는 비대칭인지 여부를 확인하는 방법은 대칭 및 비대칭 CMKs 식별 (p. 40) 단원을 참조하십시오.

Amazon RDS는 Amazon Elastic Block Store(Amazon EBS) 암호화를 기반으로 구축되어 데이터베이스 볼륨에 필요한 완전한 디스크 암호화를 제공합니다. Amazon EBS가 어떻게 AWS KMS를 이용해 볼륨을 암호화하는지 자세히 알아보려면 Amazon Elastic Block Store(Amazon EBS)의 AWS KMS 활용 방식 (p. 355) 단원을 참조하십시오.

Amazon RDS로 암호화된 DB 인스턴스를 생성하면 Amazon RDS가 자동으로 암호화된 EBS 볼륨을 생성해데이터베이스를 저장합니다. 볼륨, 데이터베이스 스냅샷, 자동 백업 및 읽기 복제본에 저장된 데이터는 모두KMS 아래에 암호화됨 CMK DB 인스턴스를 만들 때 지정했습니다.

Amazon RDS 암호화 컨텍스트언제 Amazon RDS KMS 사용 CMK, 또는 Amazon EBS 이를 대신하여 Amazon RDS서비스는 암호화 컨텍스트 (p. 16). 암호화 컨텍스트는 데이터 무결성 확인을 위해 AWS KMS에서 사용하는 추가 인증 정보(AAD)입니다. 암호화 작업에 대해 암호화 컨텍스트가 지정되면 서비스가 암호화 해제 작업에 대해 동일한 암호화컨텍스트를 지정해야 합니다. 그렇지 않으면 암호화 해제가 실패합니다. 암호화 컨텍스트는 AWS CloudTrail주어진 이유를 이해할 수 있도록 CMK 을(를) 사용하였습니다. 귀하의 CloudTrail 로그는 CMK각 로그 항목의암호화 컨텍스트는 특정 사용 이유를 결정하는 데 도움이 될 수 있습니다.

최소한, 다음 JSON 형식 예에서 보듯이 Amazon RDS는 항상 암호화 컨텍스트에 DB 인스턴스 ID를 사용합니다.

{ "aws:rds:db-id": "db-CQYSMDPBRZ7BPMH7Y3RTDG5QY" }

365

Page 374: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS Secrets Manager

이 암호화 컨텍스트는 CMK 을(를) 사용하였습니다.

귀하가 CMK 특정 DB 인스턴스와 특정 EBS 볼륨에 사용됩니다. 이 경우 DB 인스턴스 ID와 EBS 볼륨 ID는암호화 컨텍스트에 사용됩니다. 다음 JSON 형식의 예제와 같이

{ "aws:rds:db-id": "db-BRG7VYS3SVIFQW7234EJQOM5RQ", "aws:ebs:id": "vol-ad8c6542"}

AWS Secrets Manager의 AWS KMS 활용 방식AWS Secrets Manager는 암호를 암호화 및 저장하고 투명하게 해독한 다음 일반 텍스트로 반환하는 AWS서비스입니다. 이 서비스는 애플리케이션에서 일반 텍스트로 저장되거나 하드 코딩되지 않아야 하며 정기적변경되는 로그인 자격 증명과 같은 애플리케이션 암호를 저장하기 위해 특별히 설계되었습니다. 애플리케이션에서는 하드 코딩된 자격 증명이나 테이블 조회 대신에 Secrets Manager를 호출합니다.

Secrets Manager에서는 일반적으로 사용되는 데이터베이스와 연결된 암호를 정기적으로 교체하는 기능도지원합니다. 항상 저장되기 전에 새로 교체된 암호를 암호화합니다.

Secrets Manager 통합 AWS Key Management Service (AWS KMS) 독특한 데이터 키 (p. 5) 보호되는 AWSKMS 고객 마스터 키 (p. 3) (CMK) ). 이 통합은 암호화 키로 암호를 보호하여 AWS KMS를 암호화되지 않은상태로 방치되지 않도록 합니다. 또한 사용자는 CMK 및 을(를) 생성, 암호화 및 암호화하여 암호를 보호하는작업을 감사합니다.

주제• 암호 값 보호 (p. 366)• 암호 암호화 및 해독 (p. 366)• 사용자 AWS KMS CMK (p. 368)• 사용 권한 부여 CMK (p. 369)• Secrets Manager 암호화 컨텍스트 (p. 370)• Secrets Manager와 AWS KMS의 상호작용 모니터링 (p. 371)

암호 값 보호암호를 보호하기 위해 Secrets Manager는 암호에서 암호 값을 암호화합니다.

Secrets Manager에서 암호는 암호 값(보호된 암호 텍스트 또는 암호화된 암호 데이터라고 함)과 관련 메타데이터 및 버전 정보로 이루어집니다. 암호 값은 최대 65,536바이트의 문자열 또는 이진 데이터일 수 있지만,일반적으로 서버나 데이터베이스에 대한 로그인 정보를 구성하는 이름-값 페어 모음입니다.

Secrets Manager는 암호를 저장하기 전에 항상 전체 암호 값을 암호화합니다. 암호 값을 가져오거나 변경할때마다 암호 값을 투명하게 해독합니다. 암호화를 활성화하거나 비활성화할 수 없습니다. Secrets Manager는 암호 값을 암호화하거나 해독할 때 AWS KMS를 사용합니다.

암호 암호화 및 해독비밀을 보호하기 위해 Secrets Manager 사용 봉투 암호화 (p. 15) with AWS KMS 고객 마스터 키 (p. 3)(CMKs) 및 데이터 키 (p. 5).

Secrets Manager는 고유한 데이터 키를 사용하여 각 암호 값을 보호합니다. 암호의 암호 값이 변경될 때마다 Secrets Manager는 새 데이터 키를 사용하여 암호 값을 보호합니다. 데이터 키는 AWS KMS CMK 및 는

366

Page 375: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드암호 암호화 및 해독

다음 이미지에서 볼 수 있는 바와 같이, 이 문서의 메타데이터에 저장됩니다. 팔레트를 해독하려면 SecretsManager 먼저 암호화된 데이터 키를 사용하여 암호화된 데이터 키를 CMK 에서 AWS KMS.

An AWS KMS CMK 각각 팔레트는 AWS 관리 또는 고객 관리 고객 마스터 키 (p. 3) (CMK) ). 고객 관리 CMKs 권한을 부여받은사용자가 제어 액세스 (p. 62) to the CMK 정책 및 보조금, 관리 자동 회전 (p. 170), 및 사용 가져온 키 재료 (p. 277).

Important

Secrets Manager 지원 대칭 CMKs (p. 158). 귀하는 메트릭 CMK (p. 158) 암호를 암호화합니다.CMK가 대칭 또는 비대칭인지 여부를 확인하는 방법은 대칭 및 비대칭 CMKs 식별 (p. 40) 단원을참조하십시오.

새 Fixlet을 생성할 때 대칭 고객 관리를 지정할 수 있습니다. CMK 또는 AWS 관리 CMK for SecretsManager, aws/secretsmanager. 지정하지 않은 경우 CMK콘솔 기본값을 선택합니다. 기본 암호화 키,Secrets Manager 생성 aws/secretsmanager CMK이(가) 존재하지 않는 경우, 이(가) 바인드와 연결합니다. 사용 가능한 CMK 또는 다른 CMKs 을(를) 참조하십시오.

변경 사항을 CMK 언제든지 Secrets Manager 콘솔을 사용하거나 업데이터 업데이트 작업. 변경 사항을CMK, Secrets Manager 새로운 CMK. 그러나 다음 번에 강조가 변경될 때 Secrets Manager 새로운 CMK.

을(를) 찾으려면 CMK 연관된 듣기 또는 설명 작업. 팔레트가 AWS 관리 CMK for Secrets Manager (aws/secretsmanager이 작업은 CMK &t={\f

Secrets Manager 사용하지 않음 CMK 를 직접 암호화합니다. 대신, CMK 고유한 데이터 키를 생성 및 암호화하고 데이터 키를 사용하여 구축 값을 암호화합니다.

각 암호 값에 대한 고유 데이터 키팔레트에서 파생물을 생성하거나 변경할 때마다 Secrets Manager 사용 CMK 독특한 AES(AdvancedEncryption Standard) 대칭을 생성 및 암호화하는 데 드는 데이터 키 (p. 5). Secrets Manager 일반 텍스트 데이터 키를 사용하여 AWS KMS을(를) 메모리에서 제거합니다. 데이터 키의 암호화된 사본을 암호의 메타데이터에 저장합니다.

이 주식 가치는 궁극적으로 CMK을(를) 떠나지 않습니다. AWS KMS 암호화되지 않은. Secrets Manager는암호를 해독하기 전에 먼저 AWS KMS에 암호화된 데이터 키를 해독하도록 요청해야 합니다.

367

Page 376: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사용자 AWS KMS CMK

암호 값 암호화Secrets Manager는 다음 프로세스에 따라 암호의 암호 값을 해독합니다.

1. Secrets Manager 통화 AWS KMS generatedatakey 작업 ID와 CMK 256비트 AES 대칭 키 에 대한 요청및 요청 AWS KMS 일반 텍스트 데이터 키와 해당 데이터 키 사본을 CMK.

2. Secrets Manager는 일반 텍스트 데이터 키와 고급 암호화 표준(AES) 알고리즘을 사용하여 AWS KMS 외부에서 암호 값을 암호화하며, 사용한 후에는 가능한 빨리 메모리에서 일반 텍스트 키를 제거합니다.

3. Secrets Manager는 암호 값을 해독할 수 있도록 암호의 메타데이터에 암호화된 데이터 키를 저장합니다.하지만 Secrets Manager API 중에서 어떤 것도 암호화된 암호나 암호화된 데이터 키를 반환하지 않습니다.

암호 값 해독암호화된 암호 값을 해독하려는 경우 Secrets Manager는 먼저 암호화된 데이터 키를 해독해야 합니다. 데이터 키는 CMK 의 AWS KMS, Secrets Manager 요청을 해야 합니다. AWS KMS.

암호화된 암호 값을 해독하려면:

1. Secrets Manager는 AWS KMS Decrypt 작업을 호출하고 암호화된 데이터 키를 전달합니다.2. AWS KMS 사용 CMK 데이터 키를 복호화합니다. 그런 다음 일반 텍스트 데이터 키를 반환합니다.3. Secrets Manager는 일반 텍스트 데이터 키를 사용하여 암호 값을 해독합니다. 그런 다음 가능한 빨리 메

모리에서 데이터 키를 제거합니다.

사용자 AWS KMS CMKSecrets Manager 사용 고객 마스터 키 (p. 3) (CMK)와 연결되어 있습니다. 또한 CMK 암호화된 구축 값을 해독해야 할 때 해당 데이터 키를 복호화합니다. AWS CloudTrail 이벤트, Amazon CloudWatch Logs (p. 371)및 감사 내역에서 요청 및 응답을 추적할 수 있습니다.

다음 Secrets Manager 작동에 대한 요청을 AWS KMS CMK.

GenerateDataKey

Secrets Manager는 다음 Secrets Manager 작업에 대해 AWS KMS GenerateDataKey 작업을 호출합니다.• CreateSecret – 새 암호가 암호 값을 포함하는 경우 Secrets Manager는 암호 값을 암호화하기 위해 새

데이터 키를 요청합니다.• PutSecretValue– Secrets Manager는 지정된 암호 값을 암호화하기 위해 새 데이터 키를 요청합니다.• UpdateSecret – 업데이트로 암호 값이 변경되는 경우 Secrets Manager는 새 암호 값을 암호화하기 위

해 새 데이터 키를 요청합니다.Note

RotateSecret 작업은 암호 값을 변경하지 않으므로 GenerateDataKey를 호출하지 않습니다. 하지만 RotateSecret에서 호출하는 Lambda 함수가 암호 값을 변경하는 경우PutSecretValue 작업에 대한 호출로 GenerateDataKey 요청이 트리거됩니다.

암호화 해제

암호화된 암호 값을 해독하려면 Secrets Manager는 AWS KMS Decrypt 작업을 호출하여 암호의 암호화된 데이터 키를 해독합니다. 그런 다음, 일반 텍스트 데이터 키를 사용하여 암호화된 암호 값을 해독합니다.

Secrets Manager는 다음 Secrets Manager 작업에 대해 Decrypt 작업을 호출합니다.• GetSecretValue – Secrets Manager는 암호 값을 호출자에게 반환하기 전에 암호 값을 해독합니다.

368

Page 377: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사용 권한 부여 CMK

• PutSecretValue 및 UpdateSecret – 대부분의 PutSecretValue 및 UpdateSecret 요청은Decrypt 작업을 트리거하지 않습니다. 하지만 PutSecretValue 또는 UpdateSecret 요청이 암호의 기존 버전에서 암호 값을 변경하려 할 경우 Secrets Manager는 기존 암호 값을 해독하고 요청의 암호 값과 비교하여 동일한지 확인합니다. 이 작업을 통해 Secrets Manager 작업의 idempotent가 유지됩니다.

액세스 확인 CMK

귀하가 CMK 연관된 Secrets Manager 통화 GenerateDataKey and Decrypt 지정된 작업을 CMK. 이통화는 발신자가 CMK 이 작업을 수행합니다. Secrets Manager 이 작업의 결과를 폐기합니다. 암호화작업에서는 이를 사용하지 않습니다.

이러한 요청에서는 SecretVersionId 키 암호화 컨텍스트 (p. 370) 값이RequestToValidateKeyAccess이므로 이와 같은 검증 호출을 식별할 수 있습니다.

Note

예전에는 Secrets Manager 검증 호출에 암호화 컨텍스트가 포함되지 않았습니다. 오래된 AWSCloudTrail 로그에서는 암호화 컨텍스트가 없는 호출을 찾아볼 수 있습니다.

사용 권한 부여 CMK언제 Secrets Manager 사용 고객 마스터 키 (p. 3) (CMK암호화 작업에서, 이 시스템은 저작물에서 비트 값을생성 또는 변경하는 사용자를 대신하여 작동합니다.

사용 방법 AWS KMS 고객 마스터 키 (CMK을(를) 대신하여, 사용자는 다음 권한이 있어야 합니다. IAM 정책이나 키 정책에서 이러한 필수 권한을 지정할 수 있습니다.

• kms:GenerateDataKey• kms:Decrypt

이를 위해 CMK 이(가) 다음에서 발생한 요청에만 사용됩니다. Secrets Manager를 사용하여 kms:viaservice상태 키 (p. 130) with the secretsmanager.<region>.amazonaws.com 값.

또한 암호화 컨텍스트 (p. 370) 사용하기 위한 CMK 암호화 작업에 사용됩니다. 예를 들면 IAM 또는 키 정책 문서에서 문자열 조건 연산자를 사용하거나 권한 부여에서 권한 부여 제약을 사용할 수 있습니다.

의 주요 정책 AWS 관리 CMK에 대한 주요 정책 AWS 관리 CMK for Secrets Manager 사용자에게 CMK 지정된 작업에 대해서만 SecretsManager 을(를) 대신하여 요청을 합니다. 키 정책은 사용자가 CMK 직접.

이 키 정책은 모든 AWS 관리형 키 (p. 3)의 정책처럼 서비스로 연결됩니다. 키 정책은 변경할 수 없지만 언제든지 볼 수 있습니다. 자세한 내용은 키 정책 보기 (p. 76) 단원을 참조하십시오.

키 정책의 정책 설명문은 다음 효과를 갖습니다.

• 계정의 사용자에게 CMK 암호화 작업의 경우 요청이 Secrets Manager 을(를) 대신하여 을(를) 대신하여 을kms:ViaService 조건 키는 이 제한을 강제 적용합니다.

• 허용 AWS 계정 생성 IAM 사용자가 볼 수 있는 정책 CMK 보조금을 지급하고 취소합니다.• 비록 Secrets Manager 은(는) CMK정책은 Secrets Manager ~ 교부금 생성 (p. 136) for the CMK 고객을

대신하여 계정을 일체의 보조금 취소 이를 통해 Secrets Manager 사용하기 위해 CMK. 이는 AWS 관리CMK.

다음은 예를 위한 핵심 정책입니다. AWS 관리 CMK for Secrets Manager.

{ "Version" : "2012-10-17",

369

Page 378: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드Secrets Manager 암호화 컨텍스트

"Id" : "auto-secretsmanager-1", "Statement" : [ { "Sid" : "Allow access through AWS Secrets Manager for all principals in the account that are authorized to use AWS Secrets Manager", "Effect" : "Allow", "Principal" : { "AWS" : "*" }, "Action" : [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource" : "*", "Condition" : { "StringEquals" : { "kms:ViaService" : "secretsmanager.us-west-2.amazonaws.com", "kms:CallerAccount" : "111122223333" } } },{ "Sid" : "Allow direct access to key metadata to the account", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ], "Resource" : "*" } ]}

Secrets Manager 암호화 컨텍스트암호화 컨텍스트 (p. 16)는 보안되지 않은 임의의 데이터를 포함하는 키-값 페어 세트입니다. 데이터 암호화요청에 암호화 컨텍스트를 포함하는 경우, AWS KMS는 암호화된 데이터에 암호화 컨텍스트를 암호 방식으로 바인딩합니다. 따라서 동일한 암호화 컨텍스트로 전달해야 이 데이터를 해독할 수 있습니다.

AWS KMS에 대한 GenerateDataKey 및 Decrypt 요청에서, Secrets Manager는 다음 예제와 같이 암호 및 암호의 버전을 식별하는 이름–값 페어 두 개와 함께 암호화 컨텍스트를 사용합니다. 이름은 달라지지 않지만,결합된 암호화 컨텍스트 값은 각 암호 값마다 다릅니다.

"encryptionContext": { "SecretARN": "arn:aws:secretsmanager:us-west-2:111122223333:secret:test-secret-a1b2c3", "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1"}

암호화 컨텍스트를 사용하여 AWS CloudTrail 및 Amazon CloudWatch Logs 같은 감사 레코드나 로그에서,그리고 정책 및 권한 부여의 권한 부여 조건으로서, 이러한 암호화 작업을 식별할 수 있습니다.

Secrets Manager 암호화 컨텍스트는 이름-값 페어 두 개로 구성됩니다.

• SecretARN – 첫 번째 이름–값 페어는 암호를 식별합니다. 핵심은 SecretARN. 이 값은 팔레트의 AmazonResource Name(ARN)입니다.

"SecretARN": "ARN of an Secrets Manager secret"

예를 들어, 비밀 ARN이 arn:aws:secretsmanager:us-west-2:111122223333:secret:test-secret-a1b2c3이면 암호화 컨텍스트는 다음 쌍을 포함합니다.

"SecretARN": "arn:aws:secretsmanager:us-west-2:111122223333:secret:test-secret-a1b2c3"

370

Page 379: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드Secrets Manager와 AWS KMS의 상호작용 모니터링

• SecretVersionId – 두 번째 이름–값 페어는 암호의 버전을 식별합니다. 핵심은 SecretVersionId. 값은버전 ID입니다.

"SecretVersionId": "<version-id>"

예를 들어, 암호의 버전 ID가 EXAMPLE1-90ab-cdef-fedc-ba987SECRET1이면 암호화 컨텍스트에는다음 쌍이 포함됩니다.

"SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1"

귀하가 CMK 물론 Secrets Manager 전송 generatedatakey and 해독 요청 AWS KMS 통화자가 CMK 이 작업을 수행합니다. 응답을 무시하므로 암호 값에 응답을 사용하지 않습니다.

이러한 검증 요청에서 SecretARN의 값은 암호의 실제 ARN이지만, SecretVersionId 값은 다음 예제 암호화 컨텍스트에서 나와 있는 것처럼 RequestToValidateKeyAccess입니다. 이 특수 값은 로그 및 감사내역에서 검증 요청을 식별하는 데 도움이 됩니다.

"encryptionContext": { "SecretARN": "arn:aws:secretsmanager:us-west-2:111122223333:secret:test-secret-a1b2c3", "SecretVersionId": "RequestToValidateKeyAccess"}

Note

예전에는 Secrets Manager 검증 요청에 암호화 컨텍스트가 포함되지 않았습니다. 오래된 AWSCloudTrail 로그에서는 암호화 컨텍스트가 없는 호출을 찾아볼 수 있습니다.

Secrets Manager와 AWS KMS의 상호작용 모니터링AWS CloudTrail 및 Amazon CloudWatch Logs를 사용하여 Secrets Manager가 사용자 대신 AWS KMS에 전송하는 요청을 추적할 수 있습니다.

GenerateDataKey

귀하가 생성 또는 변경 (p. 368) 팔레트의 가치, Secrets Manager 전송 generatedatakey 요청 AWSKMS 이는 CMK 을(를) 참조하십시오.

GenerateDataKey 작업을 기록하는 이벤트는 다음 예제 이벤트와 유사합니다. 요청이 다음에 의해호출됩니다. secretsmanager.amazonaws.com. 매개 변수에는 CMK 256비트 키 및 암호화 컨텍스트 (p. 370) 이 아이콘은

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AROAIGDTESTANDEXAMPLE:user01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-05-31T23:23:41Z" } }, "invokedBy": "secretsmanager.amazonaws.com" },

371

Page 380: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드Secrets Manager와 AWS KMS의 상호작용 모니터링

"eventTime": "2018-05-31T23:23:41Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-west-2", "sourceIPAddress": "secretsmanager.amazonaws.com", "userAgent": "secretsmanager.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "keySpec": "AES_256", "encryptionContext": { "SecretARN": "arn:aws:secretsmanager:us-west-2:111122223333:secret:test-secret-a1b2c3", "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1" } }, "responseElements": null, "requestID": "a7d4dd6f-6529-11e8-9881-67744a270888", "eventID": "af7476b6-62d7-42c2-bc02-5ce86c21ed36", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

암호화 해제

암호의 암호 값을 가져오거나 변경 (p. 368)할 때마다 Secrets Manager는 AWS KMS에 대한 Decrypt요청을 전송하여 암호화된 데이터 키를 해독합니다.

Decrypt 작업을 기록하는 이벤트는 다음 예제 이벤트와 유사합니다. 사용자는 테이블에 액세스 중인 AWS 계정에 있는 주체입니다. 매개 변수에는 암호화된 테이블 키(ciphertext blob)와 암호화 컨텍스트 (p. 370) 테이블과 AWS 계정. AWS KMS ID의 ID를 CMK ciphertext 에서.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AROAIGDTESTANDEXAMPLE:user01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-05-31T23:36:09Z" } }, "invokedBy": "secretsmanager.amazonaws.com" }, "eventTime": "2018-05-31T23:36:09Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-west-2", "sourceIPAddress": "secretsmanager.amazonaws.com", "userAgent": "secretsmanager.amazonaws.com", "requestParameters": {

372

Page 381: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드Amazon Simple Email Service (Amazon SES)

"encryptionContext": { "SecretARN": "arn:aws:secretsmanager:us-west-2:111122223333:secret:test-secret-a1b2c3", "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1" } }, "responseElements": null, "requestID": "658c6a08-652b-11e8-a6d4-ffee2046048a", "eventID": "f333ec5c-7fc1-46b1-b985-cbda13719611", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

Amazon Simple Email Service(Amazon SES)의AWS KMS 활용 방식

Amazon Simple Email Service(Amazon SES)를 이용해 이메일을 수신하고, 수신한 이메일 메시지를 선택한Amazon Simple Storage Service(Amazon S3) 버킷에 저장하기 전에 암호화(옵션)할 수 있습니다. 구성 시Amazon SES 이메일 메시지를 암호화하려면 AWS KMS 고객 마스터 키 (p. 3) (CMK) Amazon SES 메시지를 암호화합니다. 선택할 수 있습니다. AWS 관리 CMK (p. 4) for Amazon SES (그 별칭은 aws/ses) 또는 대칭을 선택할 수 있습니다. 고객 관리 CMK (p. 4) 만든 AWS KMS.

Important

Amazon SES 지원 대칭 CMKs (p. 158). 귀하는 메트릭 CMK (p. 158) 암호화하려면 Amazon SES이메일 메시지. CMK가 대칭 또는 비대칭인지 여부를 확인하는 방법은 대칭 및 비대칭 CMKs 식별 (p. 40) 단원을 참조하십시오.

이메일 수신에 대한 자세한 내용은 Amazon SES로 이동 이메일 수신 Amazon SES in the Amazon SimpleEmail Service 개발자 안내서.

주제• AWS KMS를 이용한 Amazon SES 암호화 개요 (p. 373)• Amazon SES 암호화 컨텍스트 (p. 374)• 기부 Amazon SES 사용 권한 AWS KMS 고객 마스터 키 (CMK) (p. 374)• 이메일 메시지 가져오기 및 해독 (p. 375)

AWS KMS를 이용한 Amazon SES 암호화 개요Amazon SES가 이메일을 수신하고, 이메일 메시지를 S3 버킷에 저장하기 전에 암호화하도록 구성하면, 프로세스가 다음과 같이 작동합니다.

1. 귀하는 영수증 규칙 생성 for Amazon SESS3 작업, 스토리지 전용 S3 버킷 및 KMS 지정 고객 마스터 키(CMK)을(를) 암호화합니다.

2. Amazon SES는 수신 규칙에 부합하는 이메일 메시지를 수신합니다.3. Amazon SES KMS로 암호화된 고유한 데이터 키 요청 CMK 해당 영수증 규칙에서 지정되었습니다.

373

Page 382: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드Amazon SES 암호화 컨텍스트

4. AWS KMS 새 데이터 키를 생성하고 지정된 데이터로 암호화합니다. CMK데이터 키의 암호화된 일반 텍스트 사본을 Amazon SES.

5. Amazon SES는 일반 텍스트 데이터 키를 사용해 이메일 메시지를 암호화하고, 사용 후 가급적 빨리 메모리에서 일반 텍스트 데이터 키를 제거합니다.

6. Amazon SES는 암호화한 이메일 메시지와 암호화한 데이터 키를 지정된 S3 버킷에 저장합니다. 암호화한 데이터 키는 암호화한 이메일 메시지와 함께 메타데이터로 저장됩니다.

Step 3 (p. 373)를 통해 Step 6 (p. 374)를 달성하기 위해 Amazon SES는 AWS–제공 Amazon S3 암호화클라이언트를 사용합니다. 동일한 클라이언트를 이용해 Amazon S3에서 암호화한 이메일 메시지를 검색하고 해독합니다. 자세한 정보는 이메일 메시지 가져오기 및 해독 (p. 375) 단원을 참조하십시오.

Amazon SES 암호화 컨텍스트Amazon SES가 수신한 이메일 메시지를 암호화할 데이터 키를 요청하는 경우(AWS KMS를 이용한 AmazonSES 암호화 개요 (p. 373)의 Step 3 (p. 373)), 요청에 암호화 컨텍스트 (p. 16)가 포함됩니다. 암호화 컨텍스트는 데이터 무결성 확인을 위해 AWS KMS에서 사용하는 추가 인증 정보(AAD)를 제공합니다. 암호화 컨텍스트는 AWS CloudTrail 로그 파일을 사용하여 고객 마스터 키 (CMK)를 사용했다. Amazon SES 다음 암호화 컨텍스트를 사용합니다.

• AWS가 이메일 메시지를 수신하도록 구성한 Amazon SES 계정의 ID• 이메일 메시지에 S3 작업을 호출한 Amazon SES 수신 규칙의 이름• 이메일 메시지의 Amazon SES 메시지 ID

다음 예는 Amazon SES가 사용하는 암호화 컨텍스트의 JSON 표시를 보여줍니다.

{ "aws:ses:source-account": "111122223333", "aws:ses:rule-name": "example-receipt-rule-name", "aws:ses:message-id": "d6iitobk75ur44p8kdnnp7g2n800"}

기부 Amazon SES 사용 권한 AWS KMS 고객 마스터키 (CMK)이메일 메시지를 암호화하려면 AWS 관리 고객 마스터 키 (CMK) (p. 4) 귀하의 계정에서 Amazon SES (aws/ses) 또는 고객 관리 CMK (p. 4) 을(를) 만듭니다. Amazon SES 이미 사용 권한을 AWS 관리 CMK 을(를) 대신하여 을(를) 대신하여 을 그러나 고객을 관리하는 경우 CMK 언제 S3 작업 추가 to your Amazon SES 영수증 규칙과 Amazon SES 사용 권한 CMK 이메일 메시지를 암호화합니다.

제공하기 위해 Amazon SES 고객 관리를 위한 허가 CMK, 다음 문장을 추가합니다. CMK의 주요 정책 (p. 65):

{ "Sid": "Allow SES to encrypt messages using this CMK", "Effect": "Allow", "Principal": {"Service": "ses.amazonaws.com"}, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "Null": { "kms:EncryptionContext:aws:ses:rule-name": false, "kms:EncryptionContext:aws:ses:message-id": false

374

Page 383: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드이메일 메시지 가져오기 및 해독

}, "StringEquals": {"kms:EncryptionContext:aws:ses:source-account": "ACCOUNT-ID-WITHOUT-HYPHENS"} }}

ACCOUNT-ID-WITHOUT-HYPHENS를 AWS가 이메일 메시지를 수신하도록 구성한 Amazon SES 계정의 12자리 ID로 바꿉니다. 이 정책은 Amazon SES 데이터를 암호화하려면 CMK 이 조건에서만:

• Amazon SES는 aws:ses:rule-name API 요청의 에 aws:ses:message-id 및EncryptionContext를AWS KMS 지정해야 합니다.

• Amazon SES는 AWS KMS API 요청의 EncryptionContext에 aws:ses:source-account를 지정해야 하고 aws:ses:source-account의 값이 키 정책에 지정된 AWS 계정 ID와 일치해야 합니다.

Amazon SES가 이메일 메시지를 암호화할 때 사용하는 암호화 컨텍스트에 대한 자세한 내용은 AmazonSES 암호화 컨텍스트 (p. 374)를 참조하십시오. AWS KMS가 암호화 컨텍스트를 사용하는 방식에 대한 전반적인 내용은 암호화 컨텍스트 (p. 16)를 참조하십시오.

이메일 메시지 가져오기 및 해독Amazon SES는 암호화된 이메일 메시지를 해독할 권한이 없으며 사용자를 위해 해독할 수 없습니다.Amazon S3에서 이메일 메시지를 가져오고 해독하기 위한 코드를 작성해야 합니다. 이를 쉽게 하기 위해Amazon S3 암호화 클라이언트를 사용합니다. 다음 AWS SDK에 Amazon S3 암호화 클라이언트가 포함됩니다.

• AWS SDK for Java – 단원을 참조하십시오AmazonS3EncryptionClient(AWS SDK for Java APIReference)을 참조하십시오.

• Ruby용 AWS SDK – 단원을 참조하십시오Aws::S3::Encryption::Client(Ruby용 AWS SDK API Reference)을 참조하십시오.

• .NET용 AWS SDK – 단원을 참조하십시오AmazonS3EncryptionClient(.NET용 AWS SDK API Reference)을 참조하십시오.

• Go용 AWS SDK – 단원을 참조하십시오s3crypto(Go용 AWS SDK API 참조)을 참조하십시오.

Amazon S3 암호화 클라이언트는 암호화된 이메일 메시지를 검색하기 위해 Amazon S3에 필요한 요청 및메시지의 암호화된 데이터 키를 해독하기 위해 AWS KMS에 필요한 요청을 생성하는 작업과 이메일 메시지의 해독을 간소화합니다. 예를 들어 암호화된 데이터 키를 성공적으로 해독하기 위해서는 Amazon SES가 AWS KMS에서 데이터 키를 요청할 때 전달했던 암호화 컨텍스트를 전달해야 합니다(Step 3 (p. 373)의AWS KMS를 이용한 Amazon SES 암호화 개요 (p. 373)). Amazon S3 암호화 클라이언트가 자동으로 이작업과 기타 다양한 프로세스를 수행합니다.

Amazon S3에서 클라이언트 측 해독을 위해 AWS SDK for Java 암호화 클라이언트를 사용하는 샘플 코드를보려면, 다음을 참조하십시오.

• 사용 CMK 저장된 AWS KMS in the Amazon Simple Storage Service 개발자 가이드.• AWS 개발자 블로그의 Amazon S3 Encryption with AWS Key Management Service.

Amazon Simple Storage Service(Amazon S3)의AWS KMS 활용 방식

이 주제에서는 Amazon S3 데이터 센터 내에서 AWS KMS를 이용해 저장된 데이터를 보호하는 방법을 설명합니다. 사용할 수 있습니다. 클라이언트 측 암호화 귀하의 데이터를 암호화하여 AWS KMS 고객 마스터 키(CMK)에 전송하기 전에 Amazon S3. 또는 서버 측 암호화 위치 Amazon S3 데이터 암호화 AWS KMS CMK.

375

Page 384: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드서버 측 암호화 SSE-KMS 사용

주제• 서버 측 암호화 SSE-KMS 사용 (p. 376)• Amazon S3 암호화 클라이언트 사용 (p. 376)• 암호화 컨텍스트 (p. 377)

서버 측 암호화 SSE-KMS 사용저장 시 데이터를 보호할 수 있습니다. Amazon S3 서버 측 암호화를 세 가지 서로 다른 모드로 SSE-S3,SSE-C 또는 SSE-KMS.

• SSE-S3은 Amazon S3 데이터 및 암호화 키를 관리합니다. SSE-S3에 대한 자세한 내용은 Amazon S3 관리형 암호화 키(SSE-S3)를 사용하는 서버 측 암호화로 데이터 보호를 참조하십시오.

• SSE-C는 사용자에게 암호화 키 관리를 요구합니다. SSE-C에 대한 자세한 내용은 고객 제공 암호화 키(SSE-C)로 서버 측 암호화를 사용하여 데이터 보호를 참조하십시오.

• SSE-KMS는 AWS가 데이터 키를 관리하지만 고객 마스터 키 (p. 3) (CMK) AWS KMS.

이 주제의 나머지 부분은 AWS KMS 관리형 키(SSE-KMS)를 이용한 서버 측 암호화로 데이터를 보호하는 방법을 다룹니다.

암호화를 요청하고 CMK 사용하여 Amazon S3 콘솔 또는 API. 콘솔에서 해당 상자를 체크하여 암호화를 수행하고 CMK 목록에서 를 선택합니다. For the Amazon S3 API, 암호화를 지정하고 CMK GET 또는 PUT 요청에서 적절한 헤더를 설정합니다. 자세한 내용은 AWS KMS 관리형 키(SSE-KMS)를 사용하는 서버 측 암호화로 데이터 보호를 참조하십시오.

Important

Amazon S3 지원 대칭 CMKs (p. 158). 귀하는 메트릭 CMK (p. 158) 데이터를 암호화하려면Amazon S3. CMK가 대칭 또는 비대칭인지 여부를 확인하는 방법은 대칭 및 비대칭 CMKs 식별 (p. 40) 단원을 참조하십시오.

선택할 수 있습니다. 고객 관리 CMK (p. 4) 또는 AWS 관리 CMK (p. 4) for Amazon S3 계정에서. 데이터를암호화하기로 선택하면 AWS KMS와 Amazon S3는 다음 작업을 수행합니다.

• Amazon S3 일반 텍스트 요청 데이터 키 (p. 5) 및 지정된 키 아래에 암호화된 키 CMK.• AWS KMS 데이터 키를 생성하여 CMK일반 텍스트 데이터 키와 암호화된 데이터 키를 모두 전송하여

Amazon S3.• Amazon S3는 데이터 키를 사용해 데이터를 암호화하고, 사용 후 가급적 빨리 메모리에서 일반 텍스트 키

를 제거합니다.• Amazon S3는 암호화한 데이터 키를 암호화한 데이터와 함께 메타데이터로 저장합니다.

사용자가 데이터 해독을 요청하면 Amazon S3와 AWS KMS가 다음 작업을 수행합니다.

• Amazon S3는 AWS KMS로 암호화된 데이터 키를 보냅니다.• AWS KMS 키를 사용하여 키를 해독합니다. CMK 일반 텍스트 데이터 키를 Amazon S3.• Amazon S3는 암호화 텍스트를 해독하고, 가급적 빨리 메모리에서 일반 텍스트 데이터 키를 제거합니다.

Amazon S3 암호화 클라이언트 사용애플리케이션에서 AWS SDK의 Amazon S3 암호화 클라이언트를 사용해 객체를 암호화하고 Amazon S3에업로드할 수 있습니다. 이 방법을 사용하면 로컬로 데이터를 암호화하여 Amazon S3 서비스로 전달되는 동안 보안을 보장할 수 있습니다. Amazon S3 서비스는 암호화된 데이터를 수신하며 데이터를 암호화 또는 해독하는 과정에 기여하지 않습니다.

376

Page 385: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드암호화 컨텍스트

Amazon S3 암호화 클라이언트는 봉투 암호화를 이용해 객체를 암호화합니다. 고객 전화 AWS KMS 데이터를 클라이언트로 전달할 때 암호화 호출의 일부입니다. AWS KMS 사용자인지 확인하고 고객 마스터키 (p. 3) (CMK을(를) 지정하고, 그렇다면, 새로운 일반 텍스트 데이터 키와 CMK. Amazon S3 암호화 클라이언트는 일반 텍스트 키를 이용해 데이터를 암호화한 후 메모리에서 키를 삭제합니다. 암호화된 데이터 키는암호화된 데이터와 함께 저장하기 위해 Amazon S3로 전송됩니다.

암호화 컨텍스트AWS KMS와 통합된 각 서비스는 데이터 키 요청, 암호화, 암호화 해제 시 암호화 컨텍스트 (p. 16)를 지정합니다. 암호화 컨텍스트는 데이터 무결성 확인을 위해 AWS KMS에서 사용하는 추가 인증 정보(AAD)입니다.

암호화 작업에 대해 암호화 컨텍스트가 지정되면 Amazon S3가 암호 해독 작업에 대해 동일한 암호화 컨텍스트를 지정합니다. 그렇지 않으면 암호화 해제가 실패합니다.

SSE-KMS 또는 Amazon S3 암호화 클라이언트를 사용해 암호화를 수행하면 Amazon S3는 버킷 경로를 암호화 컨텍스트로 사용합니다. CloudTrail 로그 파일의 requestParameters 필드에 암호화 컨텍스트가 이와 비슷하게 표시됩니다.

"encryptionContext": { "aws:s3:arn": "arn:aws:s3:::bucket_name/file_name"},

AWS 시스템 관리자 Parameter Store의 AWS KMS활용 방식

AWS 시스템 관리자 Parameter Store를 사용하면 일반 텍스트 파라미터 이름과 암호화된 파라미터 값을갖는 secure string 파라미터를 생성할 수 있습니다. Parameter Store에서는 AWS KMS를 사용하여 securestring 파라미터의 파라미터 값을 암호화하고 해독합니다.

Parameter Store에서 데이터를 값이 있는 파라미터로 생성, 저장, 관리할 수 있습니다. Parameter Store에서파라미터를 생성한 후, 직접 설계한 정책과 권한이 적용되는 여러 애플리케이션 및 서비스에서 이 파라미터를 사용할 수 있습니다. 파라미터 값을 변경해야 하는 경우, 무수한 소스를 변경하고 관리하느라 오류가 발생하기 쉬운 방식 대신 한 인스턴스만 변경하면 됩니다. Parameter Store에서는 파라미터 이름에 대한 계층 구조를 지원하므로 파라미터를 특정 용도로 한정할 수 있습니다.

민감한 데이터를 관리하려면 secure string 매개변수. Parameter Store 사용 AWS KMS 고객 마스터 키(CMKs)에서 secure string 을(를) 생성하거나 변경할 때 매개 변수를 선택합니다. 또한 CMKs 에 액세스할 때매개변수 값을 해독하려면 귀하는 AWS 관리 CMK (p. 4) that Parameter Store 계정을 만들거나 자신의 계정을 고객 관리 CMK (p. 4).

Important

Parameter Store 지원 대칭 CMKs (p. 158). 귀하는 메트릭 CMK (p. 158) 매개변수를 암호화합니다.CMK가 대칭 또는 비대칭인지 여부를 확인하는 방법은 대칭 및 비대칭 CMKs 식별 (p. 40) 단원을참조하십시오.

Parameter Store는 표준 및 고급 두 계층의 secure string 파라미터를 지원합니다. 4096바이트를 초과할 수없는 표준 매개 변수는 CMK 을(를) 지정합니다. 고급 secure string 파라미터를 암호화 및 해독하기 위해Parameter Store는 AWS 암호화 SDK에서 봉투 암호화를 사용합니다. 표준 secure string 파라미터를 고급파라미터로 변환할 수 있지만, 고급 파라미터를 표준 파라미터로 변환할 수는 없습니다. 표준 및 고급 securestring 파라미터의 차이에 대한 자세한 내용은 AWS 시스템 관리자 사용 설명서에서 시스템 관리자 고급 파라미터를 참조하십시오.

주제• 표준 보안 문자열 파라미터 보호 (p. 378)

377

Page 386: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드표준 보안 문자열 파라미터 보호

• 고급 보안 문자열 파라미터 보호 (p. 380)• 파라미터 값 암호화 및 해독 권한 설정 (p. 382)• Parameter Store 암호화 컨텍스트 (p. 384)• 문제 해결 CMK 문제 Parameter Store (p. 385)

표준 보안 문자열 파라미터 보호Parameter Store는 어떠한 암호화 작업도 수행하지 않습니다. 그 대신 AWS KMS를 사용하여 secure string파라미터 값을 암호화하고 해독합니다. 표준 secure string 파라미터 값을 생성하거나 변경하면 ParameterStore가 AWS KMS Encrypt 작업을 호출합니다. 이 작업은 대칭을 사용합니다 AWS KMS CMK 를 사용하여CMK 만들기 위해 데이터 키 (p. 5).

선택할 수 있습니다. CMK that Parameter Store 을 사용하여 매개 변수 값을 암호화합니다. 지정하지 않은경우 CMK, Parameter Store 사용 AWS 관리 CMK that 시스템 관리자 계정에서 자동으로 만듭니다. 이 CMKhas the aws/ssm 별칭.

기본값을 보려면 aws/ssm CMK 귀하의 계정을 설명 작업 AWS KMS API 다음 예에서는 AWS CommandLine Interface(AWS CLI)의 describe-key 명령을 aws/ssm 별칭 이름과 함께 사용합니다.

aws kms describe-key --key-id alias/aws/ssm

표준 secure string 파라미터를 생성하려면 시스템 관리자 API에서 PutParameter 작업을 사용합니다. Tier파라미터를 생략하거나 기본값 Standard를 지정합니다. 포함 Type 매개변수 SecureString. 을(를) 지정하려면 AWS KMS CMK, KeyId 매개변수. 기본값은 AWS 관리 CMK 귀하의 계정을 aws/ssm.

Parameter Store 전화를 걸어 AWS KMS Encrypt 작업 CMK 및 일반 텍스트 파라미터 값. AWS KMS 암호화된 매개 변수 값을 반환합니다. Parameter Store 매개 변수 이름 을(를) 가지고 저장합니다.

다음 예제에서는 AWS CLI에서 시스템 관리자 put-parameter 명령과 --type 파라미터를 사용하여 securestring 파라미터를 생성합니다. 명령이 선택적 명령을 생략하기 때문에 --tier and --key-id 매개 변수Parameter Store 표준 secure string 매개 변수를 사용하여 AWS 관리 CMK.

aws ssm put-parameter --name MyParameter --value "secret_value" --type SecureString

다음과 유사한 예는 다음과 같습니다. --key-id 매개변수를 지정하려면 고객 관리 CMK (p. 4). 예는CMK ID를 식별하는 ID CMK, 하지만 유효한 CMK &t={\f 이 명령은 Tier 파라미터(--tier)를 생략하므로Parameter Store가 고급 secure string 파라미터가 아니라 표준 파라미터를 생성합니다.

aws ssm put-parameter --name param1 --value "secret" --type SecureString --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

Parameter Store에서 secure string 파라미터를 가져올 때 값이 암호화됩니다. 파라미터를 가져오려면 시스템 관리자 API에서 GetParameter 작업을 사용합니다.

다음 예에서는 AWS CLI에서 시스템 관리자 get-parameter 명령을 사용하여 Parameter Store에서 값을 해독하지 않고 MyParameter 파라미터를 가져옵니다.

$ aws ssm get-parameter --name MyParameter

{ "Parameter": { "Type": "SecureString", "Name": "MyParameter", "Value": "AQECAHgnOkMROh5LaLXkA4j0+vYi6tmM17Lg/9E464VRo68cvwAAAG8wbQYJKoZIhvcNAQcGoGAwXgIBADBZBgkqhkiG9w0BBwEwHgYJYZZIAWUDBAEuMBEEDImYOw44gna0Jm00hAIBEIAsjgr7mum1EnnXzE3xM8bGle0oKYcfVCHtBkfjIeZGTgL6Hg0fSDnpMHdcSXY=" }

378

Page 387: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드표준 보안 문자열 파라미터 보호

}

반환하기 전에 매개 변수 값을 해독하려면 WithDecryption 매개변수 GetParameter ~ true. 사용 시WithDecryption, Parameter Store 통화 AWS KMS 해독 을(를) 대신하여 매개 변수 값을 해독합니다. 따라서 GetParameter 요청은 다음 예제와 같이 일반 텍스트 값을 가지는 파라미터를 반환합니다.

$ aws ssm get-parameter --name MyParameter --with-decryption

{ "Parameter": { "Type": "SecureString", "Name": "MyParameter", "Value": "secret_value" }}

다음 워크플로우에서는 Parameter Store 사용 AWS KMS CMK 암호를 암호화하고 secure string 매개변수.

표준 파라미터 암호화1. PutParameter를 사용하여 secure string 파라미터를 생성하면 Parameter Store가 AWS KMS로

Encrypt 요청을 보냅니다. 이 요청에는 일반 텍스트 매개변수 값이 포함됩니다. CMK 선택할 수 있는Parameter Store 암호화 컨텍스트 (p. 384). AWS KMS로 전송하는 동안 secure string 파라미터의 일반텍스트 값은 TLS(전송 계층 보안)에 의해 보호됩니다.

2. AWS KMS 매개 변수 값을 지정된 값으로 암호화 CMK 및 암호화 컨텍스트. 암호화 텍스트는 ParameterStore에 반환되고, 여기에서 파라미터 이름과 암호화된 값이 저장됩니다.

표준 파라미터 해독1. GetParameter 요청에 WithDecryption 파라미터를 포함하면 Parameter Store는 암호화된 secure

string 파라미터 값과 Parameter Store 암호화 컨텍스트 (p. 384)를 사용하여 Decrypt 요청을 AWSKMS로 보냅니다.

379

Page 388: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드고급 보안 문자열 파라미터 보호

2. AWS KMS 사용 CMK 제공된 암호화 컨텍스트를 사용하여 암호화된 값을 해독합니다. 일반 텍스트(해독된) 파라미터 값을 Parameter Store에 반환합니다. 전송 중 일반 텍스트 데이터는 TLS에 의해 보호됩니다.

3. Parameter Store에서는 일반 텍스트 파라미터 값을 GetParameter 응답으로 반환합니다.

고급 보안 문자열 파라미터 보호사용 시 PutParameter 앞으로 secure string 매개변수, Parameter Store 사용 봉투 암호화 with the AWS 암호화 SDK 대칭적인 AWS KMS 고객 마스터 키 (CMK)을(를) 참조하십시오. 각 고급 매개 변수 값은 고유한데이터 키로 암호화되며 데이터 키는 AWS KMS CMK. 귀하는 AWS 관리 CMK (p. 4) 계정(aws/ssm) 또는고객 관리 CMK.

AWS 암호화 SDK는 업계 표준 및 모범 사례를 사용하여 데이터를 암호화하고 해독할 수 있게 도와주는 오픈소스 클라이언트 측 라이브러리입니다. 이 SDK는 다양한 플랫폼과 명령줄 인터페이스를 비롯해 다양한 프로그래밍 언어에서 지원됩니다. 소스 코드를 볼 수 있으며 GitHub에서 개발에 기여할 수 있습니다.

각 secure string 파라미터 값에 대해 Parameter Store는 AWS 암호화 SDK를 호출하여 AWS KMS가 생성하는 고유한 데이터 키(GenerateDataKey)로 파라미터 값을 암호화합니다. AWS 암호화 SDK는 암호화된 파라미터 값과 고유한 데이터 키의 암호화된 사본을 포함하는 암호화된 메시지를 Parameter Store에 반환합니다. Parameter Store는 secure string 파라미터 값에 암호화된 메시지 전체를 저장합니다. 그런 다음 사용자가 고급 secure string 파라미터 값을 가져오면 Parameter Store가 AWS 암호화 SDK를 사용하여 파라미터값을 해독합니다. 이를 위해 AWS KMS를 호출하여 암호화된 데이터 키를 해독해야 합니다.

고급 secure string 파라미터를 생성하려면 시스템 관리자 API에서 PutParameter 작업을 사용합니다. 값 설정 Tier 매개변수 Advanced. 포함 Type 매개변수 SecureString. 을(를) 지정하려면 AWS KMS CMK,KeyId 매개변수. 기본값은 AWS 관리 CMK 귀하의 계정을 aws/ssm.

aws ssm put-parameter --name MyParameter --value "secret_value" --type SecureString --tier Advanced

다음과 유사한 예는 다음과 같습니다. --key-id 매개변수를 지정하려면 고객 관리 CMK (p. 4). 이 예에서는CMK, 하지만 유효한 CMK &t={\f

aws ssm put-parameter --name MyParameter --value "secret_value" --type SecureString --tier Advanced --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

Parameter Store에서 secure string 파라미터를 가져오면 AWS 암호화 SDK가 반환한 암호화된 메시지가 해당 값입니다. 파라미터를 가져오려면 시스템 관리자 API에서 GetParameter 작업을 사용합니다.

다음 예제에서는 시스템 관리자 GetParameter 작업을 사용하여 값을 해독하지 않고 Parameter Store에서MyParameter 파라미터를 가져옵니다.

$ aws ssm get-parameter --name MyParameter

{ "Parameter": { "Type": "SecureString", "Name": "MyParameter", "Value": "AQECAHgnOkMROh5LaLXkA4j0+vYi6tmM17Lg/9E464VRo68cvwAAAG8wbQYJKoZIhvcNAQcGoGAwXgIBADBZBgkqhkiG9w0BBwEwHgYJYZZIAWUDBAEuMBEEDImYOw44gna0Jm00hAIBEIAsjgr7mum1EnnXzE3xM8bGle0oKYcfVCHtBkfjIeZGTgL6Hg0fSDnpMHdcSXY=" }}

반환하기 전에 매개 변수 값을 해독하려면 WithDecryption 매개변수 GetParameter ~ true. 사용 시WithDecryption, Parameter Store 통화 AWS KMS 해독 을(를) 대신하여 매개 변수 값을 해독합니다. 따라서 GetParameter 요청은 다음 예제와 같이 일반 텍스트 값을 가지는 파라미터를 반환합니다.

380

Page 389: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드고급 보안 문자열 파라미터 보호

$ aws ssm get-parameter --name MyParameter --with-decryption

{ "Parameter": { "Type": "SecureString", "Name": "MyParameter", "Value": "secret_value" }}

고급 secure string 파라미터를 표준 파라미터로 변환할 수 없지만, 표준 secure string 파라미터를 고급 파라미터로 변환할 수는 있습니다. 표준 secure string 파라미터를 고급 secure string 파라미터로 변환하려면PutParameter 작업에 Overwrite 파라미터를 사용합니다. The Type 반드시 SecureString 그리고Tier 값은 Advanced. KeyId 매개 변수(고객 관리) CMK은(는) 선택사항입니다. 생략하면 Parameter Store사용 AWS 관리 CMK 을(를) 참조하십시오. 귀하는 CMK 다른 사용자를 사용하더라도 교장에게 사용 허가를CMK 표준 매개 변수를 암호화합니다.

Overwrite 파라미터를 사용하면 Parameter Store는 AWS 암호화 SDK를 사용하여 파라미터 값을 암호화합니다. 그런 다음 Parameter Store에 새로 암호화된 메시지를 저장합니다.

$ aws ssm put-parameter --name myStdParameter --value "secret_value" --type SecureString --tier Advanced --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --overwrite

다음 워크플로우에서는 Parameter Store 사용 AWS KMS CMK 암호를 암호화하고 secure string 매개변수.

고급 파라미터 암호화1. 사용 시 PutParameter 앞으로 secure string 매개변수, Parameter Store 사용 AWS 암호화 SDK and

AWS KMS 매개 변수 값을 암호화합니다. Parameter Store 통화 AWS 암호화 SDK 매개 변수 값을 AWSKMS CMK 지정하고 Parameter Store 암호화 컨텍스트 (p. 384).

2. The AWS 암호화 SDK 전송 generatedatakey 요청 AWS KMS 이 컬렉션의 CMK 지정하고 ParameterStore 암호화 컨텍스트 AWS KMS 고유한 데이터 키 사본 2개를 반환합니다. 하나는 일반 텍스트 중 하나이고 하나는 CMK. (암호화 컨텍스트는 데이터 키를 암호화할 때 사용됩니다.)

3. AWS 암호화 SDK는 일반 텍스트 데이터 키를 사용하여 파라미터 값을 암호화합니다. 그런 다음 암호화된파라미터 값, 암호화된 데이터 키 및 기타 데이터(Parameter Store 암호화 컨덱스트 등)를 포함하는 암호화된 메시지를 반환합니다.

4. Parameter Store는 암호화된 메시지를 파라미터 값으로 저장합니다.

381

Page 390: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드파라미터 값 암호화 및 해독 권한 설정

고급 파라미터 해독1. GetParameter 요청에 WithDecryption 파라미터를 포함시켜 고급 secure string 파라미터를 가져올

수 있습니다. 그러면 Parameter Store가 암호화된 메시지를 파라미터 값에서 AWS 암호화 SDK의 해독 메서드로 전달합니다.

2. AWS 암호화 SDK가 KMS Decrypt 작업을 호출합니다. 이 작업이 암호화된 데이터 키와 Parameter Store암호화 컨텍스트를 암호화된 메시지로부터 전달합니다.

3. AWS KMS 사용 CMK 그리고 Parameter Store 암호화 컨텍스트를 사용하여 암호화된 데이터 키를 해독합니다. 그런 다음 일반 텍스트(해독된) 데이터 키를 AWS 암호화 SDK에 반환합니다.

4. AWS 암호화 SDK는 일반 텍스트 데이터 키를 사용하여 파라미터 값을 해독합니다. 그런 다음 일반 텍스트 파라미터 값을 Parameter Store에 반환합니다.

5. Parameter Store는 암호화 컨텍스트를 확인하고 GetParameter 응답에서 일반 텍스트 파라미터 값을 반환합니다.

파라미터 값 암호화 및 해독 권한 설정표준 secure string 파라미터 값을 암호화하려면 사용자에게 kms:Encrypt 권한이 필요합니다. 고급 securestring 파라미터 값을 암호화하려면 사용자에게 kms:GenerateDataKey 권한이 필요합니다. 어떤 유형이든secure string 파라미터 값을 해독하려면 사용자에게 kms:Decrypt 권한이 필요합니다.

사용자의 시스템 관리자 PutParameter 및 GetParameter 작업 호출 권한을 IAM 정책으로 허용하거나 거부할 수 있습니다.

고객이 관리하는 경우 CMKs 암호화하려면 secure string 매개 변수 값이 IAM 정책 및 주요 정책을 사용하여권한 해독 및 해독. 그러나 기본적으로 액세스 제어 정책을 설정할 수 없습니다. aws/ssm CMK. 고객 관리관리에 대한 자세한 정보 CMKs, 참조: AWS KMS에 대한 인증 및 액세스 제어 (p. 62).

다음 예제는 표준 secure string 파라미터용으로 설계된 IAM 정책입니다. 이 정책은 사용자가FinancialParameters 경로의 모든 파라미터에 대해 시스템 관리자 PutParameter 작업을 호출하도록허용합니다. 이 정책은 또한 사용자가 AWS KMS Encrypt 고객 관리 예 CMK.

382

Page 391: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드파라미터 값 암호화 및 해독 권한 설정

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter" ], "Resource": "arn:aws:ssm:us-west-2:111122223333:parameter/FinancialParameters/*" }, { "Effect": "Allow", "Action": [ "kms:Encrypt" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ]}

다음 예제는 고급 secure string 파라미터용으로 설계된 IAM 정책입니다. 이 정책은 사용자가ReservedParameters 경로의 모든 파라미터에 대해 시스템 관리자 PutParameter 작업을 호출하도록허용합니다. 이 정책은 또한 사용자가 AWS KMS GenerateDataKey 고객 관리 예 CMK.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter" ], "Resource": "arn:aws:ssm:us-west-2:111122223333:parameter/ReservedParameters/*" }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ]}

마지막 예제는 표준 또는 고급 secure string 파라미터에 사용할 수 있는 IAM 정책입니다. 이 정책은ITParameters 경로의 모든 파라미터에 대해 시스템 관리자 GetParameter 작업(및 관련 작업)을 호출하도록 허용합니다. 이 정책은 또한 사용자가 AWS KMS Decrypt 고객 관리 예 CMK.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameter*" ], "Resource": "arn:aws:ssm:us-west-2:111122223333:parameter/ITParameters/*" }, {

383

Page 392: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드Parameter Store 암호화 컨텍스트

"Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ]}

Parameter Store 암호화 컨텍스트암호화 컨텍스트는 보안되지 않은 임의의 데이터를 포함하는 키-값 페어 세트입니다. 데이터 암호화 요청에암호화 컨텍스트를 포함하는 경우, AWS KMS는 암호화된 데이터에 암호화 컨텍스트를 암호 방식으로 바인딩합니다. 따라서 동일한 암호화 컨텍스트로 전달해야 이 데이터를 해독할 수 있습니다.

암호화 컨텍스트를 사용하여 감사 레코드 및 로그에서 암호화 작업을 식별할 수도 있습니다. 암호화 컨텍스트는 로그(예: AWS CloudTrail 로그)에 일반 텍스트로 표시됩니다.

AWS 암호화 SDK도 암호화 컨텍스트도 취하지만 취급 방법이 다릅니다. Parameter Store는 암호화 메서드에 암호화 컨텍스트를 제공합니다. AWS 암호화 SDK는 암호화 컨텍스트를 암호화된 데이터에 암호화 방식으로 바인딩합니다. 또한 반환하는 암호화된 메시지의 헤더에 암호화 컨텍스트를 일반 텍스트로 포함시킵니다. 하지만 AWS KMS와 달리 AWS 암호화 SDK 암호화 메서드는 암호화 컨텍스트를 입력으로 취하지 않습니다. 대신, AWS 암호화 SDK는 데이터를 해독할 때 암호화 컨텍스트를 암호화된 메시지에서 가져옵니다.Parameter Store는 일반 텍스트 파라미터 값을 사용자에게 반환하기 전에 암호화 컨텍스트가 예상된 값을포함하는지 확인합니다.

Parameter Store에서는 암호화 작업에서 다음 암호화 컨텍스트를 사용합니다.

• 키: PARAMETER_ARN• Value 암호화 중인 매개 변수의 Amazon 자원 이름(ARN).

암호화 컨텍스트의 형식은 다음과 같습니다.

"PARAMETER_ARN":"arn:aws:ssm:<REGION_NAME>:<ACCOUNT_ID>:parameter/<parameter-name>"

예를 들어, Parameter Store은 AWS 예제 계정 및 지역에서 MyParameter 매개 변수를 암호화하고 해독하는 호출에 이 암호화 컨텍스트를 포함합니다.

"PARAMETER_ARN":"arn:aws:ssm:us-west-2:111122223333:parameter/MyParameter"

파라미터가 Parameter Store 계층 경로에 있는 경우, 그 경로와 이름도 암호화 컨텍스트에 포함됩니다. 예를들어, 이 암호화 컨텍스트는 예제 AWS 계정 및 영역에서 /ReadableParameters 경로의 MyParameter매개 변수를 암호화 및 암호 해독할 때 사용됩니다.

"PARAMETER_ARN":"arn:aws:ssm:us-west-2:111122223333:parameter/ReadableParameters/MyParameter"

시스템 관리자 GetParameter 작업이 반환하는 올바른 암호화 컨텍스트와 암호화된 파라미터 값을 사용해 AWS KMS Decrypt 작업을 호출하여 암호화된 secure string 파라미터를 해독할 수 있습니다. 그러나GetParameter 작업에 WithDecryption 파라미터를 사용하여 Parameter Store 파라미터 값을 해독하는것이 좋습니다.

IAM 정책에 암호화 컨텍스트를 포함할 수도 있습니다. 예를 들어, 사용자가 특정 파라미터 값 하나만 해독하거나 파라미터 값 세트를 암호화하도록 허용할 수 있습니다.

384

Page 393: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드문제 해결 CMK 문제 Parameter Store

다음 예 IAM 정책 설명을 통해 사용자는 MyParameter 지정된 값을 사용하여 값을 해독하고 CMK. 하지만암호화 컨텍스트가 지정된 문자열과 일치하는 경우에만 권한이 적용됩니다. 이러한 권한은 다른 매개 변수에적용되지 않습니다. CMK님은 GetParameter 암호화 컨텍스트가 문자열과 일치하지 않으면 실패합니다.

다음 정책 문을 사용하기 전에 예제 ARN을 유효한 값으로 바꾸십시오.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameter*" ], "Resource": "arn:aws:ssm:us-west-2:111122223333:parameter/MyParameter", }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition": { "StringEquals": { "kms:EncryptionContext:PARAMETER_ARN":"arn:aws:ssm:us-west-2:111122223333:parameter/MyParameter" } } } ]}

문제 해결 CMK 문제 Parameter Store에서 작업을 수행하려면 secure string 매개변수, Parameter Store 반드시 AWS KMS CMK 의도한 작업에 대해 지정합니다. 대부분 Parameter Store 관련 실패 CMKs 다음과 같은 문제로 인해 발생합니다.

• 응용 프로그램이 사용 중인 자격 증명은 CMK.

이 오류를 해결하려면 다른 자격 증명을 사용하여 애플리케이션을 실행하거나 작업을 차단하고 있는 IAM또는 키 정책을 수정합니다. AWS KMS IAM 및 키 정책에 대한 도움말은 AWS KMS에 대한 인증 및 액세스 제어 (p. 62) 단원을 참조하십시오.

• The CMK 을(를) 찾을 수 없습니다.

이는 일반적으로 CMK. 올바른 식별자 찾기 (p. 37) for the CMK 명령을 다시 시도하십시오.• The CMK 은(는) 활성화되지 않았습니다. 이 경우 Parameter Store 반품 InvalidKeyId 의 자세한 오류 메시

지가 있는 예외 AWS KMS. 만약 CMK 상태는 Disabled, 활성화 (p. 47). 상태가 Pending Import이면가져오기 절차 (p. 277)를 완료합니다. 키 상태가 Pending Deletion, 키 삭제 취소 (p. 268) 또는 CMK.

을(를) 찾으려면 주요 상태 (p. 175) of a CMK in the AWS KMS 콘솔, 고객 관리 키 또는 AWS 관리 키 페이지, 상태 열 (p. 27). 사용 방법 AWS KMS API에서 CMK, 설명 작업.

Amazon WorkMail의 AWS KMS 활용 방식이 주제는 Amazon WorkMail이 AWS KMS를 이용해 이메일 메시지를 암호화하는 방식을 논의합니다.

주제

385

Page 394: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드Amazon WorkMail 개요

• Amazon WorkMail 개요 (p. 386)• Amazon WorkMail 암호화 (p. 386)• 사용 권한 부여 CMK (p. 389)• Amazon WorkMail 암호화 컨텍스트 (p. 390)• Amazon WorkMail와 AWS KMS의 상호작용 모니터링 (p. 390)

Amazon WorkMail 개요Amazon WorkMail은 기존 데스크톱 및 모바일 이메일 클라이언트를 지원하는 안전한 관리형 비즈니스 이메일 및 일정 서비스입니다. Amazon WorkMail 조직을 생성하고 여기에 현재 보유한 하나 이상의 이메일 도메인을 할당할 수 있습니다. 그런 다음 조직 내 이메일 사용자와 배포 그룹을 위해 사서함을 생성할 수 있습니다.

Amazon WorkMail은 모든 Amazon WorkMail 조직의 사서함에서 모든 메시지를 투명하게 암호화한 후 디스크에 메시지를 기록하고, 사용자가 메시지에 액세스하면 투명하게 메시지를 해독합니다. 암호화를 비활성화할 수는 없습니다. 메시지를 보호하는 암호화 키를 보호하기 위해 Amazon WorkMail이 AWS KeyManagement Service(AWS KMS)와 통합됩니다.

또한 Amazon WorkMail은 사용자가 서명된 또는 암호화된 이메일을 발생할 수 있는 옵션을 제공합니다. 이암호화 기능은 AWS KMS를 사용하지 않습니다.

Amazon WorkMail 암호화Amazon WorkMail에서 각 조직은 조직 내 사용자마다 하나씩 여러 사서함을 포함할 수 있습니다. 이메일 및일정 항목을 포함하여 모든 메시지는 사용자의 사서함에 저장됩니다.

Amazon WorkMail 조직 내 사서함의 내용을 보호하기 위해 Amazon WorkMail은 모든 사서함 메시지를 암호화한 후 디스크에 기록합니다. 고객이 제공하는 정보는 일반 텍스트로 저장되지 않습니다.

각 메시지는 고유한 데이터 암호화 키로 암호화됩니다. 메시지 키는 해당 사서함에서만 사용되는 고유한 암호화 키인 사서함 키로 보호됩니다. 메일박스 키는 AWS KMS 고객 마스터 키 (CMK)를 떠나 AWS KMS 암호화되지 않은. 다음 다이어그램은 암호화된 메시지, 암호화된 메시지 키, 암호화된 메일박스 키 및 CMK 조직의 AWS KMS.

386

Page 395: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드Amazon WorkMail 암호화

A CMK 조직을 위해여러분이 Amazon WorkMail 선택할 수 있습니다. AWS KMS 고객 마스터 키 (CMK)를 참조하십시오. 이CMK 해당 조직의 모든 편지함 키를 보호합니다.

귀하가 빠른 설정 조직을 만드는 절차를 Amazon WorkMail 사용 AWS 관리 CMK (p. 3) for AmazonWorkMail (aws/workmail) AWS 계정. 귀하가 표준 설정을(를) 선택할 수 있습니다. AWS 관리 CMK forAmazon WorkMail 또는 고객 관리 CMK (p. 3) 을(를) 소유하고 관리합니다. 동일한 항목을 선택할 수 있습니다. CMK 또는 CMK 각 조직에 대해 CMK 를 선택합니다.

Important

Amazon WorkMail 대칭만 지원 CMKs. 차트 메트릭을 사용할 수 없습니다. CMK 데이터를 암호화하려면 Amazon WorkMail. CMK가 대칭 또는 비대칭인지 여부를 확인하는 방법은 대칭 및 비대칭CMKs 식별 (p. 40) 단원을 참조하십시오.

을(를) 찾으려면 CMK 조직을 위해 AWS CloudTrail 레코드가 호출되는 로그 항목 AWS KMS.

각 사서함마다 고유한 암호화 키새 메일박스를 만들 때 Amazon WorkMail 고유한 256비트 생성 고급 암호화 표준 (AES) 메일박스에 대한 대칭 암호화 키를 편지함 키, 이외의 AWS KMS. Amazon WorkMail 메일박스 키를 사용하여 메일박스에서 각메시지의 암호화 키를 보호합니다.

387

Page 396: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드Amazon WorkMail 암호화

사서함 키를 보호하기 위해 Amazon WorkMail 통화 AWS KMS 메일박스 키를 암호화하려면 CMK 조직의 경우. 그런 다음 암호화된 사서함 키를 사서함 메타데이터에 저장합니다.

Note

Amazon WorkMail은 대칭 사서함 암호화 키를 사용하여 메시지 키를 보호합니다. 이전에는Amazon WorkMail이 비대칭 키 페어를 사용하여 각 사서함을 보호했습니다. 즉, 퍼블릭 키를 사용하여 각 메시지 키를 보호하고 프라이빗 키를 사용하여 해독했습니다. 개인 메일박스 키는 CMK 조직의 경우. 기존 사서함이 아직 비대칭 사서함 키 페어를 사용할 수 있습니다. 이 변경 사항은 사서함 또는 그 안의 메시지의 보안에 영향을 미치지 않습니다.

각 메시지마다 고유한 암호화 키사서함에 메시지가 추가되면 Amazon WorkMail이 AWS KMS 외부의 메시지에 대해 고유한 256비트 AES 대칭 암호화 키를 생성합니다. 그런 다음 이 메시지 키를 사용하여 메시지를 암호화합니다. Amazon WorkMail은 사서함 키로 메시지 키를 암호화하여 암호화된 메시지 키를 메시지와 함께 저장합니다. 그런 다음, CMK조직의 경우.

새 사서함 생성Amazon WorkMail은 새 사서함을 생성할 때 다음 프로세스를 사용하여 사서함이 암호화된 메시지를 보관할수 있게 준비합니다.

• Amazon WorkMail은 AWS KMS 외부의 사서함에 대해 고유한 256비트 AES 대칭 암호화 키를 생성합니다.

• Amazon WorkMail은 AWS KMS Encrypt 작업을 호출합니다. 메일박스 키와 고객 마스터 키 (CMK)를 참조하십시오. AWS KMS 아래에 암호화된 메일박스 키 암호를 반환합니다. CMK.

• Amazon WorkMail은 암호화된 사서함 키를 사서함 메타데이터와 함께 저장합니다.

사서함 메시지 암호화메시지를 암호화하기 위해 Amazon WorkMail은 다음 프로세스를 사용합니다.

1. Amazon WorkMail은 메시지에 대해 고유한 256비트 AES 대칭 키를 생성합니다. 그런 다음 일반 텍스트메시지 키와 고급 암호화 표준(AES) 알고리즘을 사용하여 AWS KMS 외부의 메시지를 암호화합니다.

2. 사서함 키 하의 메시지 키를 보호하기 위해 Amazon WorkMail은 항상 암호화된 형식으로 저장되는 사서함 키를 해독해야 합니다.

Amazon WorkMail 통화 AWS KMS 해독 암호화 메일박스 키 의 작동 및 패스를 수행합니다. AWS KMS사용 CMK 메일박스 키를 해독하고 일반 텍스트 메일박스 키를 Amazon WorkMail.

3. Amazon WorkMail은 일반 텍스트 사서함 키와 고급 암호화 표준(AES) 알고리즘을 사용하여 AWS KMS외부의 메시지 키를 암호화합니다.

4. Amazon WorkMail은 암호화된 메시지를 해독할 때 사용할 수 있도록 암호화된 메시지 키를 암호화된 메시지의 메타데이터에 저장합니다.

사서함 메시지 해독메시지를 해독하기 위해 Amazon WorkMail은 다음 프로세스를 사용합니다.

1. Amazon WorkMail 통화 AWS KMS 해독 암호화 메일박스 키 의 작동 및 패스를 수행합니다. AWS KMS사용 CMK 메일박스 키를 해독하고 일반 텍스트 메일박스 키를 Amazon WorkMail.

2. Amazon WorkMail은 일반 텍스트 사서함 키와 고급 암호화 표준(AES) 알고리즘을 사용하여 AWS KMS외부의 암호화된 메시지 키를 해제합니다.

3. Amazon WorkMail은 일반 텍스트 메시지 키를 사용하여 암호화된 메시지를 해독합니다.

388

Page 397: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드사용 권한 부여 CMK

사서함 키 캐싱성능을 개선하고 AWS KMS 호출을 최소화하기 위해, Amazon WorkMail은 각 클라이언트의 일반 텍스트 사서함 키를 각각 최대 1분 동안 로컬에 캐싱합니다. 캐싱 기간이 만료되면 사서함 키가 제거됩니다. 해당 클라이언트의 사서함 키가 캐싱 기간 도중 필요한 경우 Amazon WorkMail은 AWS KMS를 호출하는 대신 캐시에서 가져올 수 있습니다. 사서함 키는 캐시에서 보호되며 절대로 일반 텍스트로 디스크에 기록되지 않습니다.

사용 권한 부여 CMK언제 Amazon WorkMail 사용 고객 마스터 키 (CMK)는 메일박스 관리자를 대신하여 작동합니다.

사용 방법 AWS KMS 고객 마스터 키 (CMK을(를) 대신하여, 관리자는 다음 권한이 있어야 합니다. IAM 정책이나 키 정책에서 이러한 필수 권한을 지정할 수 있습니다.

• kms:Encrypt

• kms:Decrypt

• kms:CreateGrant

이를 위해 CMK 이(가) 다음에서 발생한 요청에만 사용됩니다. Amazon WorkMail를 사용하여kms:viaservice (p. 130) 상태 키 workmail.<region>.amazonaws.com 값.

또한 암호화 컨텍스트 (p. 390) 사용하기 위한 CMK 암호화 작업에 사용됩니다. 예를 들면 IAM 또는 키 정책 문서에서 문자열 조건 연산자를 사용하거나 권한 부여에서 권한 부여 제약을 사용할 수 있습니다.

AWS 관리를 위한 주요 정책 CMK

에 대한 주요 정책 AWS 관리 CMK for Amazon WorkMail 사용자에게 CMK 지정된 작업에 대해서만 AmazonWorkMail 을(를) 대신하여 요청을 합니다. 키 정책은 사용자가 CMK 직접.

이 키 정책은 모든 AWS 관리형 키의 정책처럼 서비스에 의해 설정됩니다. 키 정책은 변경할 수 없지만 언제든지 볼 수 있습니다. 자세한 내용은 키 정책 보기 (p. 76) 단원을 참조하십시오.

키 정책의 정책 설명문은 다음 효과를 갖습니다.

• 계정 및 지역의 사용자에게 CMK 암호 작성 및 보조금을 생성할 수 있지만, Amazon WorkMail 을(를) 대신하여 을(를) 대신하여 을 kms:ViaService 조건 키는 이 제한을 강제 적용합니다.

• 허용 AWS 계정 생성 IAM 사용자가 볼 수 있는 정책 CMK 보조금을 지급하고 취소합니다.

다음은 예를 위한 핵심 정책입니다. AWS 관리 CMK for Amazon WorkMail.

{ "Version" : "2012-10-17", "Id" : "auto-workmail-1", "Statement" : [ { "Sid" : "Allow access through WorkMail for all principals in the account that are authorized to use WorkMail", "Effect" : "Allow", "Principal" : { "AWS" : "*" }, "Action" : [ "kms:Decrypt", "kms:CreateGrant", "kms:ReEncrypt*", "kms:DescribeKey", "kms:Encrypt" ], "Resource" : "*", "Condition" : { "StringEquals" : { "kms:ViaService" : "workmail.us-east-1.amazonaws.com", "kms:CallerAccount" : "111122223333" }

389

Page 398: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드Amazon WorkMail 암호화 컨텍스트

} }, { "Sid" : "Allow direct access to key metadata to the account", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : [ "kms:Describe*", "kms:List*", "kms:Get*", "kms:RevokeGrant" ], "Resource" : "*" } ]}

승인에 대한 보조금 사용 Amazon WorkMail

주요 정책 외에도 Amazon WorkMail 허가서를 사용하여 CMK 각 조직의 경우. 보조금을 CMK 계정에서 청취작업.

Amazon WorkMail 보조금을 사용하여 CMK 조직의 경우.

• kms:Encrypt 권한을 추가하여 Amazon WorkMail이 사서함 키를 암호화하도록 허용합니다.• 추가 kms:Decrypt 허락할 수 있는 Amazon WorkMail 사용하기 위해 CMK 메일박스 키를 해독합니다.

Amazon WorkMail 읽기 메일함 메시지 읽기 요청이 메시지를 읽는 사용자의 보안 컨텍스트를 사용하기 때문에 부여에서 이 권한이 필요합니다. 요청이 AWS 계정. Amazon WorkMail 을(를) 선택할 때 이 보조금 생성 CMK 조직의 경우.

권한 부여를 생성하기 위해 Amazon WorkMail은 조직을 생성한 사용자를 대신하여 CreateGrant를 호출합니다. 권한 부여 생성 권한은 키 정책에 의해 부여됩니다. 이 정책은 계정 사용자가 CreateGrant on the CMK조직을 위해 Amazon WorkMail 권한을 위임받은 사용자를 대신하여 요청을 합니다.

또한 키 정책은 계정 루트가 AWS 관리형 키에 대한 권한 부여를 취소하도록 허용합니다. 그러나 권한 부여를 취소할 경우 Amazon WorkMail이 사서함에서 암호화된 데이터를 해독할 수 없습니다.

Amazon WorkMail 암호화 컨텍스트암호화 컨텍스트 (p. 16)는 보안되지 않은 임의의 데이터를 포함하는 키-값 페어 세트입니다. 데이터 암호화요청에 암호화 컨텍스트를 포함하는 경우, AWS KMS는 암호화된 데이터에 암호화 컨텍스트를 암호 방식으로 바인딩합니다. 따라서 동일한 암호화 컨텍스트로 전달해야 이 데이터를 해독할 수 있습니다.

Amazon WorkMail은 모든 AWS KMS 암호화 작업에서 동일한 암호화 컨텍스트 형식을 사용합니다. 암호화컨텍스트를 사용하여 AWS CloudTrail 같은 감사 레코드나 로그에서, 그리고 정책 및 권한 부여의 권한 부여조건으로서, 암호화 작업을 식별할 수 있습니다.

AWS KMS에 대한 암호화 및 암호화 해제 요청에서 Amazon WorkMail는 키가 aws:workmail:arn이고 값이 조직의 Amazon 리소스 이름(ARN)인 암호화 컨텍스트를 사용합니다.

"aws:workmail:arn":"arn:aws:workmail:region:account ID:organization/organization ID"

예를 들어 다음 암호화 컨텍스트에는 미국 동부(오하이오)(us-east-2) 리전의 예제 조직 ARN이 포함되어있습니다.

"aws:workmail:arn":"arn:aws:workmail:us-east-2:111122223333:organization/m-68755160c4cb4e29a2b2f8fb58f359d7"

Amazon WorkMail와 AWS KMS의 상호작용 모니터링AWS CloudTrail 및 Amazon CloudWatch Logs를 사용하여 Amazon WorkMail가 사용자 대신 AWS KMS에전송하는 요청을 추적할 수 있습니다.

390

Page 399: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드Amazon WorkMail와 AWS KMS의 상호작용 모니터링

Encrypt새 메일박스를 만들 때 Amazon WorkMail 메일박스 키 및 통화 생성 AWS KMS 메일박스 키를 암호화합니다. Amazon WorkMail 전송 암호화 요청 AWS KMS 일반 텍스트 메일박스 키 및 CMK of the AmazonWorkMail 조직.

Encrypt 작업을 기록하는 이벤트는 다음 예제 이벤트와 유사합니다. 사용자는 Amazon WorkMail 서비스입니다. 매개변수에는 CMK ID(keyId)와 Amazon WorkMail 조직. Amazon WorkMail 또한 메일박스 키를 통과하지만 CloudTrail 로그.

{ "eventVersion": "1.05", "userIdentity": { "type": "AWSService", "invokedBy": "workmail.eu-west-1.amazonaws.com" }, "eventTime": "2019-02-19T10:01:09Z", "eventSource": "kms.amazonaws.com", "eventName": "Encrypt", "awsRegion": "eu-west-1", "sourceIPAddress": "workmail.eu-west-1.amazonaws.com", "userAgent": "workmail.eu-west-1.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:workmail:arn": "arn:aws:workmail:eu-west-1:111122223333:organization/m-c6981ff7642446fa8772ba99c690e455" }, "keyId": "arn:aws:kms:eu-west-1:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d" }, "responseElements": null, "requestID": "76e96b96-7e24-4faf-a2d6-08ded2eaf63c", "eventID": "d5a59c18-128a-4082-aa5b-729f7734626a", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:eu-west-1:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333", "sharedEventID": "d08e60f1-097e-4a00-b7e9-10bc3872d50c"}

Decrypt메일박스 메시지를 추가, 보기 또는 삭제하려면 Amazon WorkMail 질문한다 AWS KMS 메일박스 키를해독합니다. Amazon WorkMail 전송 해독 요청 AWS KMS 암호화된 메일박스 키 및 CMK of the AmazonWorkMail 조직.

Decrypt 작업을 기록하는 이벤트는 다음 예제 이벤트와 유사합니다. 사용자는 Amazon WorkMail 서비스입니다. 매개 변수에는 암호화된 메일박스 키(ciphertext blob)와 로그에 기록되지 않은 암호화 컨텍스트와Amazon WorkMail 조직. AWS KMS ID의 ID를 CMK ciphertext 에서.

{ "eventVersion": "1.05", "userIdentity": { "type": "AWSService",

391

Page 400: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드Amazon WorkSpaces

"invokedBy": "workmail.eu-west-1.amazonaws.com" }, "eventTime": "2019-02-20T11:51:10Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "eu-west-1", "sourceIPAddress": "workmail.eu-west-1.amazonaws.com", "userAgent": "workmail.eu-west-1.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:workmail:arn": "arn:aws:workmail:eu-west-1:111122223333:organization/m-c6981ff7642446fa8772ba99c690e455" } }, "responseElements": null, "requestID": "4a32dda1-34d9-4100-9718-674b8e0782c9", "eventID": "ea9fd966-98e9-4b7b-b377-6e5a397a71de", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:eu-west-1:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333", "sharedEventID": "241e1e5b-ff64-427a-a5b3-7949164d0214"}

Amazon WorkSpaces의 AWS KMS 활용 방식Amazon WorkSpaces를 사용하여 각 최종 사용자에게 클라우드 기반 데스크톱(WorkSpace)을 프로비저닝할 수 있습니다. 새 WorkSpace를 시작할 때 볼륨 암호화를 선택하고 암호화에 사용할 AWS KMS 고객마스터 키 (p. 3)(CMK)를 결정할 수 있습니다. 에 대해 AWS 관리형 CMK (p. 4)(Amazon WorkSpacesaws/workspaces) 또는 대칭 고객 관리형 CMK를 선택할 수 있습니다. (p. 4)

Important

Amazon WorkSpaces는 대칭 CMKs만 지원합니다. 비대칭 CMK를 사용하여 Amazon WorkSpaces의 볼륨을 암호화할 수 없습니다. CMK가 대칭 또는 비대칭인지 여부를 확인하는 방법은 대칭 및 비대칭 CMKs 식별 (p. 40) 단원을 참조하십시오.

암호화된 볼륨으로 WorkSpaces를 생성하는 방법에 대한 자세한 내용은 WorkSpace의 암호화를 참조하십시오.Amazon WorkSpaces Administration Guide

주제• AWS KMS를 이용한 Amazon WorkSpaces 암호화 개요 (p. 392)• Amazon WorkSpaces 암호화 컨텍스트 (p. 393)• 에 사용자 대신 Amazon WorkSpaces를 사용할 권한 부여하기CMK (p. 394)

AWS KMS를 이용한 Amazon WorkSpaces 암호화 개요암호화된 볼륨이 있는 WorkSpaces를 생성하면 Amazon WorkSpaces는 Amazon Elastic BlockStore(Amazon EBS)를 사용하여 이러한 볼륨을 생성하고 관리합니다. 두 서비스 모두 KMS 고객 마스터 키

392

Page 401: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드Amazon WorkSpaces 암호화 컨텍스트

(CMK)를 사용하여 암호화된 볼륨으로 작업합니다. EBS 볼륨 암호화에 대한 자세한 내용은 다음 문서를 참조하십시오.

• Amazon Elastic Block Store(Amazon EBS)의 AWS KMS 활용 방식 (p. 355) 이 가이드의 내용• Amazon EBS의 암호화Windows 인스턴스용 Amazon EC2 사용 설명서

암호화된 볼륨으로 WorkSpaces를 시작하면 종단 간 프로세스가 다음과 같이 작동합니다.

1. 암호화에 사용할 CMK와 WorkSpace의 사용자 및 디렉터리를 지정합니다. 이 작업은 가 이 (p. 136)에대해서만, 즉 지정된 사용자 및 디렉터리와 연결된 Amazon WorkSpaces에 대해서만 CMK를 사용하도록 허용하는 WorkSpace권한 부여—를 생성합니다.WorkSpace

2. Amazon WorkSpaces는 WorkSpace에 대해 암호화된 EBS 볼륨을 생성하고 사용할 CMK와 볼륨의 사용자 및 디렉터리를 지정합니다(Step 1 (p. 393)에서 지정한 것과 동일한 정보). 이 작업은 가이 (p. 136) 및 볼륨Amazon EBS, 즉 지정된 사용자 및 디렉터리와 연결된 CMK 및 지정된 볼륨에만WorkSpace를 사용하도록 허용하는 —권한 부여WorkSpace를 생성합니다.

3. Amazon EBS는 CMK로 암호화된 볼륨 데이터 키를 요청하고 WorkSpace 사용자의 Sid 및 디렉터리 ID와 볼륨 ID를 암호화 컨텍스트로 지정합니다.

4. AWS KMS는 새 데이터 키를 생성하고 CMK로 암호화한 후, 암호화된 데이터 키를 Amazon EBS로 보냅니다.

5. Amazon WorkSpaces는 Amazon EBS를 사용하여 암호화된 볼륨을 WorkSpace에 연결합니다. AmazonEBS는 AWS KMS 요청을 사용하여 암호화된 데이터 키를 Decrypt로 보내고 사용자의 WorkSpace,디렉터리 ID 및 볼륨 ID를 Sid암호화 컨텍스트로 사용합니다. (p. 393)

6. AWS KMS는 CMK를 사용하여 데이터 키를 해독한 다음 일반 텍스트 데이터 키를 Amazon EBS에 보냅니다.

7. Amazon EBS는 일반 텍스트 데이터 키를 사용하여 암호화된 볼륨으로 들어오고 나가는 모든 데이터를암호화합니다. Amazon EBS는 볼륨이 WorkSpace에 연결되어 있는 동안에는 메모리에 일반 텍스트 데이터 키를 유지합니다.

8. Amazon EBS는 나중에 Step 4 (p. 393)를 재부팅하거나 다시 빌드할 때 사용할 볼륨 메타데이터와 함께 암호화된 데이터 키(WorkSpace에서 수신)를 저장합니다.

9. 를 사용하여 AWS Management 콘솔를 제거하면(또는 WorkSpace API에서 TerminateWorkspaces작업을 사용), 및 Amazon WorkSpaces는 해당 Amazon WorkSpaces에 Amazon EBS를 사용하도록 허용한 권한 부여를 사용 중지합니다.CMKWorkSpace

Amazon WorkSpaces 암호화 컨텍스트Amazon WorkSpaces는 암호화 작업(예: 고객 마스터 키CMK, Encrypt, Decrypt 등)에 직접(GenerateDataKey)를 사용하지 않습니다. 즉, 는 Amazon WorkSpaces암호화 컨텍스트AWS KMS를 포함하는 요청을 에 보내지 않습니다.??? (p. 16) 그러나 Amazon EBS가 WorkSpaces(Step 3 (p. 393)의 AWSKMS를 이용한 Amazon WorkSpaces 암호화 개요 (p. 392))의 암호화된 볼륨에 암호화된 데이터 키를 요청하고 해당 데이터 키의 일반 텍스트 복사본(Step 5 (p. 393))을 요청하면 요청에 암호화 컨텍스트가 포함됩니다. 암호화 컨텍스트는 데이터 무결성 확인을 위해 AWS KMS에서 사용하는 추가 인증 정보(AAD)를 제공합니다. 암호화 컨텍스트는 AWS CloudTrail 로그 파일에도 기록되어, 해당 고객 마스터 키(CMK)가 사용된이유를 이해하는 데 도움을 줍니다. Amazon EBS는 암호화 컨텍스트에 다음을 사용합니다.

• 와 연결된 sid 사용자의AWS Directory ServiceWorkSpace• 와 연결된 AWS Directory Service 디렉터리의 디렉터리 IDWorkSpace• 암호화된 볼륨의 볼륨 ID

다음 예는 Amazon EBS가 사용하는 암호화 컨텍스트의 JSON 표시를 보여줍니다.

{

393

Page 402: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드에 사용자 대신 Amazon WorkSpaces

를 사용할 권한 부여하기CMK

"aws:workspaces:sid-directoryid": "[S-1-5-21-277731876-1789304096-451871588-1107]@[d-1234abcd01]", "aws:ebs:id": "vol-1234abcd"}

에 사용자 대신 Amazon WorkSpaces를 사용할 권한 부여하기CMK용 AWS 관리형 CMK(Amazon WorkSpacesaws/workspaces) 또는 고객 관리형 에서 작업 영역 데이터를 보호할 수 있습니다.CMK 고객 관리형 CMK를 사용하는 경우 계정의 Amazon WorkSpaces 관리자를 대신하여CMK를 사용할 수 있는 권한을 Amazon WorkSpaces에 부여해야 합니다. 용 AWS 관리형 CMK에는 기본적으로 필요한 권한이 있습니다.Amazon WorkSpaces

에서 사용할 고객 관리형 CMK를 준비하려면 다음 절차를 따르십시오.Amazon WorkSpaces

1. 의 키 정책에서 키 사용자 목록에 WorkSpaces 관리자 추가CMK (p. 394)2. 관리자에게 WorkSpaces 정책 관련 추가 권한 부여IAM (p. 394)

Amazon WorkSpaces 관리자는 Amazon WorkSpaces를 사용할 수 있는 권한도 필요합니다. 이러한 권한에 대한 자세한 내용은 Amazon WorkSpaces의 리소스에 대한 액세스 제어를 참조하십시오.AmazonWorkSpaces Administration Guide

파트 1: 의 키 사용자에 WorkSpaces 관리자 추가CMKAmazon WorkSpaces 관리자에게 필요한 권한을 제공하기 위해 AWS Management 콘솔 또는 AWS KMSAPI를 사용할 수 있습니다.

관리자를 WorkSpaces의 키 사용자로 추가하려면(CMK)console

1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/kms에서 AWS KeyManagement Service(AWS KMS) 콘솔을 엽니다.

2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.3. 탐색 창에서 고객 관리형 키를 선택합니다.4. 선호하는 고객 관리형 CMK의 키 ID 또는 별칭을 선택합니다.5. Key policy(키 정책) 탭을 선택합니다. 키 사용자에서 추가를 선택합니다.6. 사용자 및 역할 목록에서 IAM 관리자에 해당하는 사용자 및 역할을 선택한 후 WorkSpaces연결을 선택

합니다.

관리자를 WorkSpaces의 키 사용자로 추가하려면(CMK)AWS KMS API

1. GetKeyPolicy 작업을 사용하여 기존 키 정책을 가져온 다음 정책 문서를 파일에 저장합니다.2. 원하는 텍스트 편집기에서 정책 문서를 엽니다. 관리자에 해당하는 IAM 사용자 및 역할을 WorkSpaces

키 사용자에게 권한을 부여하는 정책 문에 추가합니다. (p. 70) 그런 다음 파일을 저장합니다.3. PutKeyPolicy 작업을 사용하여 키 정책을 에 적용합니다.CMK

파트 2: 관리자에게 추가 권한 부여WorkSpaces기본 키 정책CMK의 키 사용자 섹션에 있는 권한 외에 고객 관리형 Amazon WorkSpaces를 사용하여 데이터를 보호하는 경우 (p. 67) 관리자는 WorkSpaces에서 권한 (p. 136)을 생성할 수 있는 권한이 필요합니다.CMK 또한 AWS Management 콘솔를 사용하여 암호화된 볼륨으로 를 생성하는 경우 WorkSpaces 관리자

394

Page 403: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드에 사용자 대신 Amazon WorkSpaces

를 사용할 권한 부여하기CMK

는 별칭과 키 목록을 조회할 수 있는 권한이 필요합니다.WorkSpaces 사용자 정책 생성 및 편집에 대한 자세한 내용은 IAM의 관리형 정책과 인라인 정책을 참조하십시오.IAM 사용 설명서

관리자에게 이러한 권한을 부여하려면 WorkSpaces 정책을 사용합니다.IAM 다음 예제와 유사한 정책설명을 각 IAM 관리자에 대한 WorkSpaces 정책에 추가합니다. 예제 CMK ARN(arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab)을 유효한 ARN으로 바꿉니다. 관리자가 콘솔이 아닌 WorkSpaces API만 사용하는 경우 Amazon WorkSpaces 및"kms:ListAliases" 권한이 있는 두 번째 정책 설명을 생략할 수 있습니다."kms:ListKeys"

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:CreateGrant", "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, { "Effect": "Allow", "Action": [ "kms:ListAliases", "kms:ListKeys" ], "Resource": "*" } ]}

395

Page 404: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드리소스 할당량

할당량AWS KMS가 모든 사용자에게 응답성 및 성능을 제공할 수 있도록 AWS KMS는 두 가지 유형의 할당량을 적용합니다. 각 할당량은 각 AWS 계정의 각 리전마다 독립적으로 계산됩니다.

Important

할당량을 초과해야 하는 경우 Service Quotas의 할당량 증가를 요청할 수 있습니다. ServiceQuotas 콘솔 또는 RequestServiceQuotaIncrease 작업을 사용합니다. 자세한 내용은 ServiceQuotas 사용 설명서의 할당량 증가 요청을 참조하십시오.AWS KMS용 Service Quotas은 AWS 리전에서 이용할 수 없습니다. AWS Support 센터를 방문해 사례를 생성합니다.AWS KMS 할당량 증가 요청에 대한 도움말은 AWS KMS 할당량 증가 요청 (p. 403) 단원을 참조하십시오.

• 리소스 할당량 (p. 396): 각 AWS KMS 리소스 유형의 수를 제한합니다.• 요청 할당량 (p. 398): 지정된 간격으로 AWS KMS API 작업에 대한 요청 수를 제한합니다.

리소스 할당량AWS KMS는 모든 고객에게 빠르고 탄력적인 서비스를 제공할 수 있도록 리소스 할당량을 설정합니다. 일부리소스 할당량은 사용자가 생성한 리소스에만 적용되고 AWS 서비스에서 생성하는 리소스에는 적용되지 않습니다. 사용하지만 AWS 계정에는 없는 리소스(예: AWS 소유 CMKs (p. 4))에는 이러한 할당량이 적용되지않습니다.

리소스 제한에 도달하면 해당 유형의 추가 리소스를 생성하라는 요청에 LimitExceededException 오류메시지가 생성됩니다.

다음 표에서는 각 AWS 계정 및 리전의 AWS KMS 리소스 할당량을 나열하고 설명합니다. 할당량을초과해야 하는 경우 Service Quotas의 할당량 증가를 요청할 수 있습니다. Service Quotas 콘솔 또는RequestServiceQuotaIncrease 작업을 사용합니다. 자세한 내용은 Service Quotas 사용 설명서의 할당량 증가 요청을 참조하십시오.AWS KMS용 Service Quotas은 AWS 리전에서 이용할 수 없습니다. AWS Support센터를 방문해 사례를 생성합니다.

AWS KMS 할당량 증가 요청에 대한 도움말은 AWS KMS 할당량 증가 요청 (p. 403) 단원을 참조하십시오.

할당량 이름 기본값 적용 대상

고객 마스터 키 (CMKs) (p. 397) 10,000개 고객 관리형 CMKs

리전당 별칭 (p. 397) 10,000개 고객이 생성한 별칭

CMK당 별칭 (p. 397) 50 고객이 생성한 별칭

당 권한 부여 CMK (p. 397) 50,000 고객 관리형 CMKs

당 지정된 보안 주체에 대한 권한부여 CMK (p. 397)

500개 고객 관리형 CMKs

AWS관리형CMKs

키 정책 문서 크기 (p. 398) 32KB(32,768바이트) 고객 관리형 CMKs

AWS관리형CMKs

리소스 할당량 외에도 AWS KMS는 요청 할당량를 사용하여 서비스의 응답성을 보장합니다. 자세한 내용은the section called “요청 할당량” (p. 398)을(를) 참조하십시오.

396

Page 405: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드고객 마스터 키(CMKs): 10,000

고객 마스터 키(CMKs): 10,000계정의 각 리전에 최대 10,000개의 고객 관리형 CMKs (p. 4)를 보유할 수 있습니다.AWS 이 할당량은키 상태 (p. 158)에 관계없이 모든 대칭 (p. 158) 및 CMKs비대칭 고객 관리형 (p. 175)에 적용됩니다. 각CMK —는 대칭 또는 비대칭 —가 하나의 리소스로 간주됩니다. AWS 관리형 CMKs (p. 4) 및 AWS 소유CMKs (p. 4)는 이 할당량에 포함되지 않습니다.

리전당 별칭: 10,000개계정의 각 리전에서 최대 10,000개의 (p. 50)별칭AWS을 생성할 수 있습니다. 가 계정에서 생성한 별칭(예:aws/)AWS<service-name>, 이 할당량에는 포함되지 않습니다.

할당량을 늘리는 경우 리전 할당량당 별칭의 고객 마스터 키증가를 요청 (p. 397)해야 할 수도 있습니다.??? (p. 403)

당 별칭:CMK 50각 고객 관리형 (p. 50)에 최대 50개의 CMK별칭 (p. 4)을 연결할 수 있습니다. 에서 AWS 관리형 AWSCMKs와 연결하는 별칭은 이 할당량에 포함되지 않습니다. (p. 4) 별칭을 생성 (p. 52) 또는 업데이트 (p. 57)할 때 이할당량이 발생할 수 있습니다.

당 권한 부여:CMK 50,000각 고객 관리형 CMK (p. 4)는 ??? (p. 136)와 통합된 AWS 서비스AWS KMS에서 생성한 권한 부여를 포함하여 최대 50,000건의 권한 부여를 보유할 수 있습니다. 이 할당량은 AWS 관리형 CMKs (p. 4) 또는 AWS 소유CMKs (p. 4)에는 적용되지 않습니다.

이 할당량의 한 가지 효과는 동일한 CMK를 동시에 사용하는 50,000개 이상의 권한 부여된 작업을 수행할 수없다는 것입니다. 할당량에 도달한 후에는 활성 권한 부여가 사용 중지되거나 취소된 경우에만 CMK에서 새권한 부여를 생성할 수 있습니다.

예를 들어 Amazon Elastic Block Store(Amazon EBS) 볼륨을 Amazon Elastic Compute Cloud(AmazonEC2) 인스턴스에 연결하면 볼륨이 암호 해독되어 읽을 수 있습니다. 데이터를 암호 해독할 수 있는 권한을얻기 위해 Amazon EBS가 각 볼륨에 대한 권한 부여를 생성합니다. 따라서 모든 Amazon EBS 볼륨이 동일한 CMK를 사용하는 경우 한 번에 50,000개 이상의 볼륨을 연결할 수 없습니다.

당 지정된 보안 주체에 대한 권한 부여:CMK 500개는 동일한 피부여자 보안 주체에 대해 권한 부여가 500개를 초과할 수 없습니다.CMK 피부여자 보안 주체는권한 부여의 권한을 가져오는 자격 증명입니다.

이 할당량은 계정의 각 CMK에 대해 별도로 계산됩니다. 이 정책은 고객 관리형 CMKs (p. 4) 및 AWS 관리형CMKs (p. 4)에는 적용되지만 AWS 소유 CMKs (p. 4)에는 적용되지 않습니다.

Note

ListGrants 작업의 출력을 사용하여 동일한 피부여자 보안 주체의 권한 부여 수를 계산할 때는 주의해야 합니다.ListGrants 응답의 GranteePrincipal 필드에는 일반적으로 권한 부여의 피부여자보안 주체가 포함됩니다. 그러나 권한 부여의 피부여자 보안 주체가 AWS 서비스인 경우GranteePrincipal 필드에는 서비스 보안 주체(여러 피부여자 보안 주체가 될 수 있음)가 포함됩니다.

이 할당량은 AWS 리소스의 사용에 실질적인 결과를 초래할 수 있습니다. 예를 들어 동일한 AmazonWorkSpaces로 암호화된 500개 이상의 CMK를 시작할 수 없습니다. 를 시작하면 WorkSpace가 AmazonWorkSpaces를 해독할 수 있는 권한 부여를 생성하여 사용자가 사용할 수 있게 합니다.WorkSpace 각WorkSpace 권한 부여는 고유하지만 모든 권한 부여에는 동일한 피부여자 보안 주체가 있습니다.

397

Page 406: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드키 정책 문서 크기: 32KB

키 정책 문서 크기: 32KB각 키 정책 문서의 최대 길이는 32KB(32,768바이트)입니다. 더 큰 정책 문서를 사용하여 CMK에 대한 키 정책을 생성하거나 업데이트하는 경우 작업이 실패합니다.

키 정책 문서 (p. 66)는 JSON 형식의 정책 설명문의 집합입니다. 키 정책 문서의 명령문은 CMK를 사용할 권한이 있는 사람과 사용할 수 있는 방법을 결정합니다. 정책 및 권한 부여를 사용하여 IAM에 대한 액세스를 제어할 수도 있지만 모든 CMK에는 키 정책 문서가 있어야 합니다.CMK

의 기본 보기 (p. 80) 또는 정책 보기 (p. 80) 또는 AWS Management 콘솔 작업을 사용하여 키 정책을 생성하거나 변경할 때마다 키 정책 문서를 사용합니다.PutKeyPolicy 이 할당량은 AWS KMS 콘솔에서 기본 보기 (p. 80)를 사용하는 경우에도(JSON 문을 직접 편집하지 않음) 키 정책 문서에 적용됩니다.

요청 할당량AWS KMS는 초당 요청되는 API 작업 수에 대한 할당량을 설정합니다. 각 API 작업에 대한 초당 요청 할당량를 나열하는 표는 각 AWS KMS API 작업에 대한 요청 할당량 (p. 400) 단원을 참조하십시오.

API 요청 할당량를 초과하면 AWS KMS는 요청을 조절합니다. 즉, 유효한 요청을 거부하고 다음과 같은ThrottlingException 오류를 반환합니다. 응답하려면 백오프 및 재시도 전략을 사용합니다.

You have exceeded the rate at which you may call KMS. Reduce the frequency of your calls. (Service: AWSKMS; Status Code: 400; Error Code: ThrottlingException; Request ID: <ID>

는 API 작업, 요청 할당량 리전 및 기타 요소(예: AWS 유형)에 따라 다릅니다.CMK

Note

할당량을 초과해야 하는 경우 Service Quotas의 할당량 증가를 요청할 수 있습니다. ServiceQuotas 콘솔 또는 RequestServiceQuotaIncrease 작업을 사용합니다. 자세한 내용은 ServiceQuotas 사용 설명서의 할당량 증가 요청을 참조하십시오.AWS KMS용 Service Quotas은 AWS 리전에서 이용할 수 없습니다. AWS Support 센터를 방문해 사례를 생성합니다.AWS KMS 할당량 증가 요청에 대한 도움말은 AWS KMS 할당량 증가 요청 (p. 403) 단원을 참조하십시오.요청 할당량 작업에 대한 GenerateDataKey를 초과하는 경우 의 데이터 키 캐싱 기능을 사용해 보십시오.AWS 암호화 SDK 데이터 키를 다시 사용하면 AWS KMS에 대한 요청 빈도가 감소할 수 있습니다.

요청 할당량 뿐만 아니라 AWS KMS는 리소스 할당량을 사용하여 모든 사용자의 용량을 보장합니다. 자세한내용은 리소스 할당량 (p. 396) 단원을 참조하십시오.

주제• 요청 할당량 적용 (p. 398)• 암호화 작업에 대한 공유 할당량 (p. 399)• 자동으로 이루어지는 API 요청 (p. 399)• 교차 계정 요청 (p. 400)• 사용자 지정 키 스토어 할당량 (p. 400)• 각 AWS KMS API 작업에 대한 요청 할당량 (p. 400)

요청 할당량 적용요청 할당량 검토 시 다음 정보에 유의하십시오.

398

Page 407: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드암호화 작업에 대한 공유 할당량

• 요청 할당량는 고객 관리형 CMKs (p. 4) 및 AWS 관리형 CMKs에 모두 적용됩니다. (p. 4) 계정에서 리소스를 보호하는 데 사용되더라도 AWS 소유 CMKs (p. 4)는 요청 할당량 계정에 대해 계산되지 않습니다.AWS

• 조절은 리전에 있는 모든 유형의 CMKs에 대한 모든 요청을 기반으로 합니다. 이 합계에는 사용자를 대신한 AWS 서비스의 요청을 포함하여 AWS 계정의 모든 보안 주체의 요청이 포함됩니다.

• 각 요청 할당량는 독립적으로 계산됩니다. 예를 들어 CreateKey 작업에 대한 요청은 요청 할당량 작업에대한 CreateAlias에 영향을 미치지 않습니다. CreateAlias 요청이 조절되는 경우에도 CreateKey 요청이 성공적으로 완료될 수 있습니다.

• 암호화 작업이 할당량을 공유하지만 공유 할당량은 다른 작업에 대한 할당량과 독립적으로 계산됩니다. 예를 들어 암호화 및 암호화 해제 작업에 대한 호출은 요청 할당량를 공유하지만 이 할당량은 EnableKey 같은 관리 작업에 대한 할당량과는 독립적입니다. 예를 들어 유럽(런던) 리전에서는 대칭 CMKs + 초당 5개의 EnableKey 작업에 대해 10,000개의 암호화 작업을 조절 없이 수행할 수 있습니다.

암호화 작업에 대한 공유 할당량AWS KMS 암호화 작업 (p. 11)은 요청 할당량를 공유합니다. 에서 지원하는 암호화 작업의 조합을 요청할 수있습니다. 이렇게 하면 총 암호화 작업 수가 해당 유형의 CMK를 초과하지 않습니다.요청 할당량CMK 예외는별도의 할당량을 공유하는 GenerateDataKeyPair 및 GenerateDataKeyPairWithoutPlaintext입니다.

다양한 유형의 CMKs에 대한 할당량은 독립적으로 계산됩니다. 각 할당량은 지정된 키 유형을 가진 AWS 계정 및 리전에서 이러한 작업에 대한 모든 요청에 1초 간격으로 적용됩니다.

• 암호화 작업(대칭) 요청 비율은 계정 및 리전에서 대칭 CMKs를 사용하는 암호화 작업에 대한 공유 요청 할당량입니다.

예를 들어 공유 할당량이 초당 요청 10,000건인 리전에서 CMKs대칭 (p. 158)AWS를 사용할 수 있습니다. 초당 7,000개의 GenerateDataKey 요청 및 초당 2,000개의 Decrypt 요청을 수행해도 AWS KMS에서요청을 조절하지 않습니다. 그러나 매초 9,500건의 GenerateDataKey 요청과 1,000건의 Encrypt 요청을하는 경우 공유 제한을 초과하므로 AWS KMS는 요청을 조절합니다.

• RSA(암호화 작업) 요청 비율은 RSA 비대칭 CMKs (p. 162)를 사용하는 암호화 작업에 대한 공유 요청 할당량입니다.

예를 들어, 요청 할당량이 초당 500건인 경우 암호화 및 해독이 가능한 RSA 에서 200개의 암호화 요청 및100개의 암호화 해제CMKs 요청을, 서명 및 확인이 가능한 RSA 에서 50개의 서명 요청 및 150개의 확인CMKs 요청을 할 수 있습니다.

• 암호화 작업(ECC) 요청 비율은 ECC(타원 곡선) 비대칭 CMKs (p. 164)를 사용하는 암호화 작업에 대한 공유 요청 할당량입니다.

예를 들어 요청 할당량이 초당 300건인 경우 서명 및 확인이 가능한 RSA CMKs를 사용하여 100개의 서명요청과 200개의 확인 요청을 만들 수 있습니다.

다른 키 유형에 대한 할당량도 독립적으로 계산됩니다. 예를 들어 아시아 태평양(싱가포르) 리전에서 대칭 및비대칭 CMKs를 둘 다 사용하는 경우 대칭 CMKs + 초당 최대 500건의 추가 호출을 RSA 비대칭 CMKs, + 초당 최대 300건의 추가 요청을 ECC 기반 CMKs로 할 수 있습니다.

자동으로 이루어지는 API 요청사용자가 직접, 또는 자동으로 에 API 요청을 해주는 통합 AWS 서비스를 AWS KMS이용해 API 요청을 할수 있습니다. 이 할당량은 두 유형의 요청에 모두 적용됩니다.

예를 들어 AWS KMS(SSE-KMS)와 서버 측 암호화를 이용해Amazon S3 에 데이터를 저장할 수 있습니다. SSE-KMS로 암호화되는 S3 객체를 업로드하거나 다운로드할 때마다 Amazon S3가 자동으로 에GenerateDataKey(업로드용) 또는 Decrypt(다운로드용) 요청을 AWS KMS보냅니다. 이러한 요청은 할당량에 포함되기 때문에 SSE-KMS로 암호화된 S3 객체의 초당 업로드 또는 다운로드 수의 총합이 5,500(또는AWS 리전에 따라 10,000 또는 30,000)을 초과하는 경우 AWS KMS가 요청을 조절합니다.

399

Page 408: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드교차 계정 요청

교차 계정 요청한 AWS 계정의 한 애플리케이션이 다른 계정이 소유한 CMK를 사용하는 경우를 교차 계정 요청이라고 합니다. 교차 계정 요청의 경우 AWS KMS는 CMK를 소유한 계정이 아니라 요청을 한 계정을 조절합니다. 예를들어 계정 A의 애플리케이션이 계정 B의 CMK를 사용하는 경우 CMK 사용은 계정 A의 할당량에만 적용됩니다.

사용자 지정 키 스토어 할당량AWS KMS 사용자 지정 키 스토어는 대칭 CMKs만 지원합니다. 사용자 지정 키 스토어CMKs에서 를사용하는 암호화 작업은 각 사용자 지정 키 스토어에 대해 초당 1,800개 작업의 (p. 291)를 공유합니다.요청 할당량 그러나 모든 작업이 할당량을 균등하게 사용하는 것은 아닙니다. GenerateDataKey,GenerateDataKeyWithoutPlaintext 및 GenerateRandom 작업은 Encrypt, Decrypt 및ReEncrypt 작업에 비해 초당 할당량을 약 3배 사용합니다.

예를 들어 Encrypt 및 Decrypt 작업만 요청할 경우 대략 초당 1,800회 작업을 수행할 수 있습니다. 하지만반복적인 GenerateDataKey 작업을 요청할 경우 성능은 초당 600회 작업 정도가 될 것입니다. 거의 동일한수의 GenerateDataKey 및 Decrypt 작업으로 구성된 애플리케이션 패턴에서는 대략 초당 1,200회 작업을 예상할 수 있습니다.

다른 AWS KMS 할당량과 달리, 사용자 지정 키 스토어 할당량은 조정할 수 없습니다. Service Quotas를 사용하거나 AWS Support에서 서비스 케이스를 만들어 늘릴 수 없습니다.

Note

사용자 지정 키 스토어에 연결된 AWS CloudHSM 클러스터가 해당 사용자 지정 키 스토어와 관련되지 않은 명령을 포함해 다수의 명령을 처리 중인 경우에는 예상보다 낮은 속도에서 AWS KMSThrottlingException이 반환될 수 있습니다. 이 경우 요청 속도를 AWS KMS로 낮추거나 사용자 지정 키 스토어 전용 AWS CloudHSM 클러스터를 사용하십시오.

각 AWS KMS API 작업에 대한 요청 할당량이 표에는 서비스 할당량 할당량 코드 및 각 AWS KMS 요청 할당량의 기본값이 나열되어 있습니다.

할당량 이름 기본값(초당)

Cryptographic operations (symmetric)request rate

적용 대상:

• Decrypt

• Encrypt

• GenerateDataKey

• GenerateDataKeyWithoutPlaintext

• GenerateRandom

• ReEncrypt

이러한 공유 할당량은 AWS 리전 및 요청에 사용된CMK 유형에 따라 다릅니다. 각 할당량은 별도로 계산됩니다.

• 5,500(공유)• 다음 리전에서는 10,000(공유):

• 미국 동부(오하이오), us-east-2• 아시아 태평양(싱가포르), ap-southeast-1• 아시아 태평양(시드니), ap-southeast-2• 아시아 태평양(도쿄), ap-northeast-1• 유럽(프랑크푸르트), eu-central-1• 유럽(런던), eu-west-2

• 다음 리전에서는 30,000(공유):• 미국 동부(버지니아 북부), us-east-1• 미국 서부(오레곤), us-west-2• 유럽(아일랜드), eu-west-1

400

Page 409: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드각 AWS KMS API 작업에 대한 요청 할당량

할당량 이름 기본값(초당)사용자 지정 키 스토어 할당량(대칭 CMKs):

• 각 사용자 지정 키 스토어에 대해 1,800회(공유). 자세한 내용은 사용자 지정 키 스토어 할당량 (p. 400) 단원을 참조하십시오.

Cryptographic operations (RSA) requestrate

적용 대상:

• Decrypt

• Encrypt

• ReEncrypt

• Sign

• Verify

RSA CMKs의 경우 500(공유)

Cryptographic operations (ECC) requestrate

적용 대상:

• Sign

• Verify

타원 곡선(ECC)의 경우 300(공유) CMKs

CancelKeyDeletion request rate 5

ConnectCustomKeyStore request rate 5

CreateAlias request rate 5

CreateCustomKeyStore request rate 5

CreateGrant request rate 50

CreateKey request rate 5

DeleteAlias request rate 5

DeleteCustomKeyStore request rate 5

DeleteImportedKeyMaterial request rate 5

DescribeCustomKeyStores request rate 5

DescribeKey request rate 1000

DisableKey request rate 5

DisableKeyRotation request rate 5

DisconnectCustomKeyStore request rate 5

EnableKey request rate 5

EnableKeyRotation request rate 5

401

Page 410: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드각 AWS KMS API 작업에 대한 요청 할당량

할당량 이름 기본값(초당)

GenerateDataKeyPair (ECC_NIST_P256)request rate

적용 대상:

• GenerateDataKeyPair

• GenerateDataKeyPairWithoutPlaintext

25

GenerateDataKeyPair (ECC_NIST_P384)request rate

적용 대상:

• GenerateDataKeyPair

• GenerateDataKeyPairWithoutPlaintext

10

GenerateDataKeyPair (ECC_NIST_P521)request rate

적용 대상:

• GenerateDataKeyPair

• GenerateDataKeyPairWithoutPlaintext

5

GenerateDataKeyPair (ECC_SECG_P256K1)request rate

적용 대상:

• GenerateDataKeyPair

• GenerateDataKeyPairWithoutPlaintext

25

GenerateDataKeyPair (RSA_2048) requestrate

적용 대상:

• GenerateDataKeyPair

• GenerateDataKeyPairWithoutPlaintext

1

GenerateDataKeyPair (RSA_3072) requestrate

적용 대상:

• GenerateDataKeyPair

• GenerateDataKeyPairWithoutPlaintext

0.5(2초 간격으로 1)

GenerateDataKeyPair (RSA_4096) requestrate

적용 대상:

• GenerateDataKeyPair

• GenerateDataKeyPairWithoutPlaintext

0.1(10초 간격으로 1)

GetKeyPolicy request rate 1000

402

Page 411: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드AWS KMS 할당량 증가 요청

할당량 이름 기본값(초당)

GetKeyRotationStatus request rate 1000

GetParametersForImport request rate 0.25(4초 간격으로 1)

GetPublicKey request rate 5

ImportKeyMaterial request rate 5

ListAliases request rate 500개

ListGrants request rate 100

ListKeyPolicies request rate 100

ListKeys request rate 500개

ListResourceTags request rate 100

ListRetirableGrants request rate 100

PutKeyPolicy request rate 5

RetireGrant request rate 15

RevokeGrant request rate 15

ScheduleKeyDeletion request rate 5

TagResource request rate 5

UntagResource request rate 5

UpdateAlias request rate 5

UpdateCustomKeyStore request rate 5

UpdateKeyDescription request rate 5

AWS KMS 할당량 증가 요청AWS KMS 리소스 할당량 및 요청 할당량은 사용자 지정 키 저장소 할당량 (p. 400)을 제외하고 조정할 수있습니다.

할당량을 초과해야 하는 경우 Service Quotas의 할당량 증가를 요청할 수 있습니다. Service Quotas 콘솔또는 RequestServiceQuotaIncrease 작업을 사용합니다. 자세한 내용은 Service Quotas 사용 설명서의 할당량 증가 요청을 참조하십시오.AWS KMS용 Service Quotas은 AWS 리전에서 이용할 수 없습니다. AWSSupport 센터를 방문해 사례를 생성합니다.

서비스 할당량 콘솔 사용Service Quotas 콘솔에서 AWS KMS 할당량 증가를 요청할 수 있습니다. 지침은 할당량 증가 in the ServiceQuotas 사용 설명서.

1. 서비스 이름으로 AWS Key Management Service(AWS KMS)를 선택합니다.2. 증가시키려는 할당량의 할당량 이름을 선택합니다. 할당량에 대한 세부 정보로 증가시킬 할당량을 맞게

선택했는지 확인합니다.

403

Page 412: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드서비스 할당량 API 사용

Service Quotas 콘솔에서 할당량 이름을 검색할 수 있습니다. AWS KMS 할당량은 여러 페이지로 되어 있습니다. 리소스 할당량 (p. 396) 및 요청 할당량 (p. 398) 표에서 AWS KMS 할당량의 이름과 설명을 찾아볼 수도 있습니다.

예를 들어 대칭형 암호화 작업의 할당량 증가를 요청하려면 CMK, 선택 암호화 작업(대칭) 요청 속도.3. 할당량 증가 요청을 선택합니다.

서비스 할당량 API 사용Service Quotas API를 사용하여 AWS KMS 할당량 증가를 요청할 수 있습니다. 요청을 제출하는RequestServiceQuotaIncrease 작업에는 해당 할당량의 할당량 코드가 필요합니다. 그러므로 먼저 할당량 코드를 얻으십시오.

1. 증가시킬 할당량의 할당량 이름을 찾습니다. 리소스 할당량 (p. 396) 및 요청 할당량 (p. 398) 표에서AWS KMS 할당량의 이름과 설명을 찾아볼 수 있습니다.

2. AWS KMS 할당량의 할당량 코드를 얻으려면 ListServiceQuotas 작업을 사용합니다.

설정 ServiceCode ~ kms.

응답에는 각 할당량에 대한 QuotaName 및 QuotaCode가 포함됩니다.

예를 들어 Cryptographic operations (RSA) request rate 할당량에 대한 할당량 정보만 가져오려면 다음과 같은 명령을 사용합니다. 이 명령은 AWS Command Line Interface(AWS CLI)의 query 파라미터를 사용하여 지정된 할당량 이름의 할당량만 가져옵니다.

$ aws service-quotas list-service-quotas \ --service-code kms \ --query 'Quotas[?QuotaName==`Cryptographic operations (RSA) request rate`]'

{ "Quotas": [ { "ServiceCode": "kms", "ServiceName": "AWS Key Management Service (AWS KMS)", "QuotaArn": "arn:aws:servicequotas:us-east-2:111122223333:kms/L-2AC98190", "QuotaCode": "L-2AC98190", "QuotaName": "Cryptographic operations (RSA) request rate", "Value": 500, "Unit": "None", "Adjustable": true, "GlobalQuota": false } ]}

3. AWS KMS 할당량 증가를 요청하려면 RequestServiceQuotaIncrease 작업을 사용합니다. 할당량을 식별하려면 할당량 코드를 사용합니다.

예를 들어, 다음 명령은 초당 700 요청에 대한 Cryptographic operations (RSA) request rate할당량 증가를 요청합니다. 이 명령은 필요한 할당량 코드(L-2AC98190)를 사용하여 할당량을 식별합니다.

명령이 성공적으로 완료되면 Status 필드에 요청의 현재 상태가 표시됩니다. 업데이트된 요청 상태를 가져오려면 GetRequestedServiceQuotaChange, ListRequestedServiceQuotaChangeHistory 또는ListRequestedServiceQuotaChangeHistoryByQuota 작업을 사용합니다.

$ aws service-quotas request-service-quota-increase \ --service-code kms \

404

Page 413: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드서비스 할당량 API 사용

--quota-code L-2AC98190 \ --desired-value 700

{ "RequestedQuota": { "Id": "a12345", "ServiceCode": "kms", "ServiceName": "AWS Key Management Service (AWS KMS)", "QuotaCode": "L-2AC98190", "QuotaName": "Cryptographic operations (RSA) request rate", "DesiredValue": 700, "Status": "PENDING", "Created": 1580446904.067, "Requester": "{\"accountId\":\"111122223333\",\"callerArn\":\"arn:aws:iam::111122223333:root\"}", "QuotaArn": "arn:aws:servicequotas:us-east-2:111122223333:kms/L-2AC98190", "GlobalQuota": false, "Unit": "None" }}

405

Page 414: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드최신 업데이트

문서 기록이 주제는 AWS Key Management Service Developer Guide에 대한 중요한 업데이트 사항에 대해 설명합니다.

주제• 최신 업데이트 (p. 406)• 이전 업데이트 (p. 407)

최신 업데이트다음 표에서는 2018년 1월 이후 이 설명서의 중요한 변경 사항을 설명합니다. Amazon은 여기 나와 있는 주요 변경 사항 외에도 설명과 예제를 업데이트하고 고객이 제공한 피드백을 반영하도록 설명서를 자주 업데이트하고 있습니다. 중요한 변경 사항에 대해 알림을 받으려면 오른쪽 상단 모서리의 링크를 사용하여 RSS 피드를 구독합니다.

현재 API 버전: 2014-11-01

update-history-change update-history-description update-history-date

새로운 기능 VPC 끝점 정책 지원을 추가했습니다.

July 9, 2020

새 콘텐츠 의 보안 속성 설명 AWS KMS. June 18, 2020

새로운 기능 차트 메트릭 지원 추가 고객 마스터 키 및 Fixlet 메트릭 데이터 키.

November 25, 2019

업데이트된 기능 다음의 주요 정책을 볼 수 있습니다. AWS 관리 CMKs in the AWSKMS 콘솔. 이 기능은 고객 관리로제한됨 CMKs.

November 15, 2019

새로운 기능 AWS KMS를 호출하기 위해 TLS에서 하이브리드 포스트 양자 키교환 알고리즘을 사용하는 방법을설명합니다.

November 4, 2019

할당량 변경 관리하는 일부 API에 대한 리소스할당량 증가 CMKs.

September 18, 2019

할당량 변경 리소스 할당량을 변경했습니다.고객 마스터 키 (CMKs에 따라CMK.

March 27, 2019

할당량 변경 초당 공유 변경 요청 할당량 사용하는 암호화 작업 고객 마스터 키(CMKs)를 참조하십시오.

March 7, 2019

새로운 기능 AWS KMS 사용자 정의 키 스토어를 생성 및 관리하는 방법에 대해 설명합니다. 각 키 스토어는 사용자가 소유하고 제어하는 AWSCloudHSM 클러스터를 기반으로합니다.

November 26, 2018

406

Page 415: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드이전 업데이트

새로운 콘솔 IAM 콘솔과 독립된 새 AWS KMS콘솔을 사용하는 방법에 대해 설명합니다. 사용자에게 새 콘솔을익힐 시간을 주기 위해 원래 콘솔과 이를 사용하기 위한 지침이 잠시 동안 사용 가능한 상태로 유지됩니다.

November 7, 2018

할당량 변경 공유 변경 요청 할당량 사용 고객마스터 키.

August 21, 2018

새 콘텐츠 설명 어떻게 AWS SecretsManager 사용 AWS KMS 고객 마스터 키 팔레트의 구축 값을 암호화합니다.

July 13, 2018

새 콘텐츠 설명 어떻게 DynamoDB 사용AWS KMS 고객 마스터 키 서버측 암호화 옵션을 지원합니다.

May 23, 2018

새로운 기능 다른 인터넷을 연결하는 대신에AWS KMS에 직접 연결하기 위해VPC에서 프라이빗 엔드포인트를사용하는 방법을 설명합니다.

January 22, 2018

이전 업데이트다음 표에서는 2018년 이전 AWS Key Management Service Developer Guide의 중요한 변경 사항을 설명합니다.

변경 사항 설명 날짜

새 콘텐츠 키 태그 지정 (p. 44)에 대한 문서를 추가했습니다.

2017년 2월 15일

새 콘텐츠 고객 마스터 키 모니터링 (p. 180)및 Amazon CloudWatch을(를) 사용하여 모니터링 (p. 214)에 대한문서를 추가했습니다.

2016년 8월 31일

새 콘텐츠 키 구성 요소 가져오기 (p. 277)에대한 문서를 추가했습니다.

2016년 8월 11일

새 콘텐츠 액세스 관리 개요 (p. 63), IAM 정책 사용 (p. 82), AWS KMS API권한 참조 (p. 96), 정책 조건 사용 (p. 107) 설명서가 추가되었습니다.

2016년 7월 5일

업데이트: 설명서의 인증 및 액세스 제어 (p. 62)장 일부를 업데이트되었습니다.

2016년 7월 5일

업데이트: 새로운 기본 할당량을 반영하여할당량 (p. 396) 페이지를 업데이트했습니다.

2016년 5월 31일

407

Page 416: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드이전 업데이트

변경 사항 설명 날짜

업데이트: 새로운 기본 할당량을 반영하여할당량 (p. 396) 페이지를 업데이트하고 권한 부여 토큰 (p. 19) 설명서를 더욱 간결하고 정확하게업데이트했습니다.

2016년 4월 11일

새 콘텐츠 다중 허용 IAM 사용자가CMK (p. 80) 및 IP 주소 조건 사용 (p. 108)에 대한 문서를 추가했습니다.

2016년 2월 17일

업데이트: AWS KMS에서 키 정책 사용 (p. 65) 및 키 정책 변경 (p. 79)페이지를 더욱 간결하고 정확하게업데이트했습니다.

2016년 2월 17일

업데이트: 시작하기 (p. 21) 주제 페이지를더욱 간결하게 업데이트했습니다.

2016년 1월 5일

새 콘텐츠 AWS CloudTrail의 AWS KMS 활용 방식 (p. 341)에 대한 문서를 추가했습니다.

2015년 11월 18일

새 콘텐츠 키 정책 변경 (p. 79)에 대한 지침을 추가했습니다.

2015년 11월 18일

업데이트: Amazon Relational DatabaseService(Amazon RDS)의 AWSKMS 활용 방식 (p. 365)에 대한문서를 업데이트했습니다.

2015년 11월 18일

새 콘텐츠 Amazon WorkSpaces의 AWSKMS 활용 방식 (p. 392)에 대한문서를 추가했습니다.

2015년 11월 6일

업데이트: AWS KMS에서 키 정책 사용 (p. 65) 페이지를 더욱 간결하게 업데이트했습니다.

2015년 10월 22일

새 콘텐츠 및 에 관한 보충 문서를 포함해 에대한 문서를 추가했습니다.

2015년 10월 15일

새 콘텐츠 액세스 권한 결정 AWS KMS 고객마스터 키 (p. 140)에 대한 문서를추가했습니다.

2015년 10월 15일

새 콘텐츠 주요 상태: 귀하의CMK (p. 175)에 대한 문서를 추가했습니다.

2015년 10월 15일

새 콘텐츠 Amazon Simple EmailService(Amazon SES)의 AWSKMS 활용 방식 (p. 373)에 대한문서를 추가했습니다.

2015년 10월 1일

408

Page 417: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드이전 업데이트

변경 사항 설명 날짜

업데이트: 새 요청 할당량를 설명하기 위해할당량 (p. 396) 페이지를 업데이트했습니다.

2015년 8월 31일

새 콘텐츠 AWS KMS 사용 요금에 대한 정보가 추가되었습니다. AWS KMS 요금 (p. 2) 참조

2015년 8월 14일

새 콘텐츠 AWS KMS 할당량 (p. 396)에 요청 할당량가 추가되었습니다.

2015년 6월 11일

새 콘텐츠 UpdateAlias 작업 사용을 보여주는 새로운 Java 코드 샘플을 추가했습니다. 별칭 업데이트 (p. 237)을(를) 참조하십시오.

2015년 6월 1일

업데이트: AWS Key Management Service리전 표를 AWS GeneralReference로 옮겼습니다.

2015년 5월 29일

새 콘텐츠 Amazon EMR의 AWS KMS 활용방식 (p. 361)에 대한 문서를 추가했습니다.

2015년 1월 28일

새 콘텐츠 Amazon WorkMail의 AWS KMS활용 방식 (p. 385)에 대한 문서를추가했습니다.

2015년 1월 28일

새 콘텐츠 Amazon Relational DatabaseService(Amazon RDS)의 AWSKMS 활용 방식 (p. 365)에 대한문서를 추가했습니다.

2015년 1월 6일

새 콘텐츠 Amazon Elastic Transcoder의AWS KMS 활용 방식 (p. 357)에대한 문서를 추가했습니다.

2014년 11월 24일

새 설명서 AWS Key Management ServiceDeveloper Guide 소개.

2014년 11월 12일

409

Page 418: AWS Key Management Service · AWS Key Management Service 개발자 안내서 3단계: 키 구성 요소 암호화..... 162

AWS Key Management Service 개발자 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

cdx