02.DynamoDB Scan 권한을 위한 IAM Policy 정책 추가

02.DynamoDB Scan 권한을 위한 IAM Policy 정책 추가

결론 (필요한 IAM Policy 예시)

1번 정책 (추천)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowDecryptWithAlias",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "ForAnyValue:StringLike": {
                    "kms:ResourceAliases": "*instance-scheduler-encryption-key*"
                }
            }
        }
    ]
}

2번 정책

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "InstanceSchedulerKMSDecrytionPolicy",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": [
                "{AWS Instance Scheduler 구성 시 사용된 KMS ARN}"
            ]
        }
    ]
}

 

파워스케줄러 관리 기능 사용을 위해 기존 등록된 CloudXper IAM 유저 권한에 추가적인 권한 설정이 필요한 이유

CXP 파워스케줄러 관리 기능은 AWS의 CloudFormation 기반의 Instance Scheduler Template 로 구현된 스케줄러에 대해 관리 기능을 제공합니다.

또한 CXP 파워스케줄러 관리 기능은 DynamoDB의 Instance Scheduler 관련 테이블에 저장된 값을 이용하여, 파워스케줄 관련 설정값 ( 파워스케줄 태그 / 파워스케줄되는 기간 )을 관리합니다.

따라서 파워스케줄링 관련 설정값을 불러오기 위해 Instance Scheduer에서 사용하는 DynamoDB에 대한 KMS ( Instance Scheduler 생성 시 자동 생성 ) KMS Decrypt (복호화 권한)이 추가적으로 필요합니다.

 

위 제시된 정책 중 1번 정책을 사용할 유저는 아래의 설정 순서 중 ‘2. DynamoDB Scan 에 필요한 IAM Policy 생성’부터 진행하면 되니 참고 부탁드립니다.

1.Instance-Scheduler를 생성한 CloudFormation에서 KMS 및 DynamoDB 정보 확인

→ AWS Console에 접속하여 CloudFormation > "스택" 메뉴 접속 후 AWS InstanceScheduler를 생성한 CloudForamtion 스택을 선택한다.

image-20240726-134735.png

→ "리소스" 탭을 선택 후 "플랫 보기" 버튼을 선택한다.

image-20240726-134819.png

 

→ 검색 란에 Table을 입력하여 ConfigTable / StateTable / MaintenanceWindowTable 의 물리적 ID 값을 확인하고, 바로가기 버튼을 눌러 해당 리소스로 이동한다.

image-20240726-134846.png

→ 리소스로 이동 후 "추가 설정" 탭을 선택하고, 암호화 부분의 키 ID부분을 확인하고 따로 저장한다.

 

일반적으로는 3개의 Table에서 사용한 KMS 키 ID가 모두 동일하나, 만약 다른 경우 3개의 키 ID를 모두 메모해놓자.

 

해당 스탭에서의 필요 결과물

  • AWS Instance Scheduler 구성 시 사용된 KMS ARN

  • 예시 : arn:aws:kms:ap-northeast-1:789493429548:key/15910e03-4e38-4f6e-a5b8-0f963c1e88c5

 

 

2.DynamoDB Scan 에 필요한 IAM Policy 생성

image-20240726-134925.png

→ IAM > 정책 탭으로 이동 후 "정책 생성" 선택

image-20240726-134955.png

→ 편집 방법을 "JSON" 으로 수정 후 아래 JSON 양식과 위 이미지를 참고하여 정책 편집 후 "다음" 버튼 선택

 

정책 내용은 2가지 방법으로 설정할 수 있습니다.

1번 정책은 해당 Account에 존재하는 모든 스케줄러에서 사용하는 KMS에 대하여 (리전 상관 없이) 권한을 부여하는 방식이며

2번 정책의 경우 특정 스케줄러에서 사용하는 KMS에 대한 권한을 부여하는 방식입니다.

따라서 모든 리전의 파워스케줄러의 KMS권한을 부여하는 1번 방법으로 진행하는것을 추천드립니다.

 

1번 정책 ( 추천 )

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowDecryptWithAlias",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "ForAnyValue:StringLike": {
                    "kms:ResourceAliases": "*instance-scheduler-encryption-key*"
                }
            }
        }
    ]
}

2번 정책 ( 1번으로 내용을 기입할것을 추천 )

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "InstanceSchedulerKMSDecrytionPolicy",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": [
                "{AWS Instance Scheduler 구성 시 사용된 KMS ARN}"
            ]
        }
    ]
}

 

image-20240726-135116.png

→ 용도를 식별 할 수 있는 정책 이름 ( 예시 : InstanceSchedulerKMSDecrytionPolicy ) 를 기입한 뒤 "정책 생성" 선택

 

 

 

3.CloudXper에 등록한 access,secretKey를 보유하고 있는 IAM 계정에 정책 추가

image-20240726-135147.png

→ IAM > 사용자 탭에서 CloudXper에 등록된 계정 검색하여 선택

 

image-20240726-135216.png

→ "권한추가" 선택

image-20240726-135248.png

→ "직접 정책 연결" 선택 후. 단계 2. 에서 생성한 정책 검색하여 왼쪽의 체크박스 선택 후 "다음" 버튼 선택

→ 이후 나타나는 화면에서 "권한 추가" 선택

image-20240726-135323.png

→ 추가된 정책 내용 확인