다루는 내용
∙ KMS 키 관리
∙ S3 Server Side Encryption
∙ EBS Volume Encryption
실습
KMS(Key Management Service) 키 관리
KMS는 데이터 보호에 사용되는 암호화 키를 아마존에서 중앙 집중식으로 관리 해주는 서비스이다.
S3, EBS, RDS, Redshift, Elastic Transcoder, WorkMail과 통합되어있다. 또한 CloudTrail에서 KMS의 사용 내역을 로깅할 수 있다.
IAM User 생성
테스트를 위해 KMS를 생성,사용하는 User 계정과 권한이 없는 User 계정이 각각 필요하다.
∙ arang : administrator 권한
∙ user1 : AmazonEC2FullAccess, AmazonS3FullAccess 권한
CMK(Customer Master Key) 생성
KMS의 범위는 리전이다. 리전별로 default key가 생성되어 있기 때문에 별도로 생성하지 않아도 KMS를 사용할 수 있지만, CMK는 default key 보다 키의 주기적인 교체, 권한 설정, 로그 감사 등에서 더 많은 기능을 제공한다.
1. 콘솔에서 Identity & Access Management 클릭
2. 왼쪽 메뉴에서 Encryption Keys 클릭
3. Filter: 에서 리전 변경 (예. US West Oregon)
IAM의 범위는 Global이기 때문에 KMS의 범위 설정은 페이지 내에서 할 수 있도록 구성되어 있다.
4. Create Key 클릭
5. Create Alias and Description 페이지에서
1) Alias (required) : oregon-cmk 입력
2) Next Step 클릭
6. Define Key Administrative Permissions 페이지에서
KMS API를 사용할 수 있는 관리자 권한
1) arang 선택
2) Next Step 클릭
7. Define Key Usage Permissions 페이지에서
KMS를 사용할 user 계정 선택
1) arang 선택
2) Next Step 클릭
8. Preview Key Policy 페이지에서
위 설정에 따라 자동으로 policy가 생성됨
상세 설명 : http://docs.aws.amazon.com/ko_kr/kms/latest/developerguide/key-policies.html
1) Finish 클릭
aws/ebs가 default key이고, oregon-cmk가 커스텀 마스터 키이다.
CMK(Customer Master Key) 비활성화/ 삭제
비활성화 및 삭제가 가능하다.
S3 Server Side Encryption
S3 버킷에 컨텐츠를 업로드할 때 KMS를 이용하여 Server Side Encryption을 하고, Key에 대해 권한이 없는 계정으로 다운로드가 가능한지 확인해 본다.
1. 콘솔에서 S3 클릭
2. 버킷 생성 (예. arang-kms-lab)
3. 암호화 하지 않고 업로드/ 다운로드
Server Side Encryption: None 상태이다.
파일명을 더블 클릭하면 arang, user1 사용자 모두 이미지가 노출된다.
4. 암호화 하여 업로드/ 다운로드
1) Upload 클릭
2) Add Files 클릭
3) 파일 선택
4) Set Defails 클릭
5) Use Server Side Encryption 선택
6) Use an AWS Key Management Service master key 선택
7) Master Key : oregon-cmk 선택
8) Start Upload 클릭
9) Properties 확인
oregon-cmk 키로 Server Side Encryption 되어 있다.
10) arang 계정으로 로그인 후 파일명 더블 클릭 : 이미지가 정상적으로 노출된다.
Link: https://s3-us-west-2.amazonaws.com/arang-kms-lab/Penguins.jpg 를 클릭한 경우는 복호화 요청을 하지 않았기 때문에 InvalidArgument 상태를 리턴한다.
11) user1 계정으로 로그인 후 파일명 더블 클릭 : KMS에 권한이 없으므로 AccessDenied 상태를 리턴한다.
EBS Volume Encryption
EBS Encryption을 테스트하기 위해 인스턴스를 생성한다.
∙ 인스턴스와 EBS은 동일 AZ에 위치해야 한다.
∙ OS 영역은 Encryption이 지원되지 않는다.
∙ 인스턴스 생성 마법사에서 EBS를 추가할 경우는 default key을 사용한다.
∙ 모든 인스턴스 타입이 EBS Encryption을 지원하지는 않는다.
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/EBSEncryption.html#EBSEncryption_supported_instances
Volume 생성
1. 콘솔에서 EC2 클릭
2. 왼쪽 메뉴에서 Volumes 클릭
3. Create Volume 클릭
1) Size : 10 입력
2) Availability Zone : 인스턴스와 동일 AZ 선택
3) Encryption : 체크
4) Master Key : oregon-cmk 선택
5) Create 클릭
4. 볼륨 할당
1) 볼륨 선택
2) Actions → Attach Volume 클릭
3) Instance : 인스턴스 선택
4) Attach 클릭
5. 확인
Encrypted EBS 동작 확인
EBS는 인스턴스를 통해서만 접근이 가능하다.
arang 계정은 EBS Encryption에 사용된 KMS(CMK)에 권한이 있으므로 인스턴스에 해당 EBS를 Attache 할 수 있다. 그러나 user1 계정은 권한이 없으므로 해당 EBS를 Attach 할 때 에러 메시지가 나타난다.
1. user1 계정으로 인스턴스에 Encrypted EBS Attach
1) 볼륨 선택
2) Action → Attach Volume 클릭
3) Instance : 인스턴스 선택
4) Attach 클릭