상세 컨텐츠

본문 제목

RDS encrypted snapshot copy to another aws account

Cloud/AWS

by 리카르돌 2022. 6. 29. 23:57

본문

계정 A에 있는 Storage Encryped RDS의 스냅샷을 계정 B에 Restore 필요

- AWS RDS 사용하는 암호화(aws/rds) 키는 변경할 수 없음

- default KMS Key로 생성된 RDS의 스냅샷은 다른 계정으로 share 불가

 

작업방식요약

1. 계정A 에서 Manual Snapshot 생성 (Default AWS Managed Key 사용)

2. CMK 생성(계정 B에서 사용할 수 있도록 권한 부여)

3. 1에서 생성된 Snapshot을 Copy Using CMK 

4. 3에서 Copy 된 Snapshot을 계정 B에 공유

5. 계정B의 사용자 IAM Policy에 CMK 사용 권한 추가

6. 2번 CMK를 사용하여 4에서 shared  된 Snapshot을 copy  

7. Restore 수행 

 


1. [Account A] Manual Snapshot 

Storage Encrypted 된 RDS 의 스냅샷 세부 정보 확인 시 아래와 같은 KMS Key 확인 가능 

KMS key ID
arn:aws:kms:ap-northeast-2:계정넘버:key/89e3250c-b6c9-4c34-993b-76ddac12eb5b

 

2. [Account A] Create CMK

{
    "Version": "2012-10-17",
    "Id": "key-consolepolicy-3",
    "Statement": [
        {
            "Sid": "Enable IAM User Permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::계정A:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "Allow access for Key Administrators",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::계정A:user/사용자명"
            },
            "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"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Allow use of the key",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::계정B:user/사용자명",
                    "arn:aws:iam::계정A:user/사용자명"
                ]
            },
            "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::계정B:user/사용자명",
                    "arn:aws:iam::계정A:user/사용자명"
                ]
            },
            "Action": [
                "kms:CreateGrant",
                "kms:ListGrants",
                "kms:RevokeGrant"
            ],
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "kms:GrantIsForAWSResource": "true"
                }
            }
        }
    ]
}

 

3. [Account A] Snapshot Copy Using CMK (36b645f7-6cc6-468a-8a83-11cb6700ef9b)

 

4. [Account A] 계정 B의 ID 추가 

 

5. [Account B] Grant IAM Policy (계정B)

계정B의 rds 작업 user 계정에 Policy 추가

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowUseOfKeyInAccount계정A-ID",
            "Effect": "Allow",
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
            ],
            "Resource": "arn:aws:kms:ap-northeast-2:계정A-:key/36b645f7-6cc6-468a-8a83-11cb6700ef9b"
        }
    ]
}

 

6. [Account B] 3번 과정과 동일하게 B에서 수행

 

7. [Account B] Restore 

- cmk로 copy된 snapshot restore 시 계정 B의 default key로 나오지면 restore 후 계정 A의 cmk로 암호화 된 것 확인 가능

 

'Cloud > AWS' 카테고리의 다른 글

Routing Policy on AWS  (0) 2021.10.18
Kinesis Data Firehose  (0) 2021.10.18
AWS API Gateway  (0) 2021.10.17
Storage - S3  (0) 2021.10.16
Real Time Data Load Test - Kinesis Firehose  (0) 2019.08.29

관련글 더보기

댓글 영역