🤔 문제
Amazon S3 버킷에는 AWS KMS(Key Management Service)로 암호화된 객체가 저장되어 있습니다. Lambda 함수에서 객체를 다운로드하고 복호화할 때, 가장 안전한 방법은 무엇입니까?
- Lambda 함수에 연결된 정책에 키 복호화 작업을 추가한다.
- 키 복호화 작업을 가진 정책을 새로 작성하고 Lambda 함수에 연결한다.
- 키 정책에서 Lambda 함수의 IAM 역할에 키의 "kms:*" 작업을 설정한다.
- Lambda 함수에 연결된 IAM Role을 키 사용자로 추가한다.
정답
정답. 4번
Lambda 함수에 연결된 IAM 역할을 키 사용자(Key User)로 추가한다
[KMS Key Policy]
AWS KMS의 Key Policy는 고객이 관리하는 KMS 키에 적용되는 리소스 기반 정책이다.
키에 대해 IAM User 또는 IAM Role, 다른 AWS 계정에 대한 조작 가능한 권한을 설정한다.
키 생성자가 아닌 다른 IAM User나 IAM Role이 키를 사용하여 암호화나 복호화를 하고자 할 경우,
해당 사용자를 키 사용자(Key User)로 추가할 수 있다. (Key Users에 추가해야만 사용할 수 있다.)
Key User에 IAM Role을 추가하면, 인라인 정책에서는 아래와 같이 설정된다.
{
"Sid": "Allow use of the key",
"Effect": "Allow",
"Principal": {"AWS": [
"arn:aws:iam::111122223333:role/ExampleRole",
"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:role/ExampleRole",
"arn:aws:iam::444455556666:root"
]},
"Action": [
"kms:CreateGrant",
"kms:ListGrants",
"kms:RevokeGrant"
],
"Resource": "*",
"Condition": {"Bool": {"kms:GrantIsForAWSResource": true}}
}
또한, IAM User나 리소스에 대해 키 사용을 허가할 때는 Key Policy뿐만 아니라 IAM Role에서도 동일하게 권한을 설정할 수 있다.
위의 예시의 경우, Key User에 대해 다음과 같이 IAM Policy을 설정해도 동일한 결과를 얻을 수 있다.
오답
1번. Lambda 함수에 연결된 정책에 키 복호화 작업을 추가한다.
2번. 키 복호화 작업을 가진 정책을 새로 작성하고 Lambda 함수에 연결한다.
Lambda 함수에서 키에 대한 접근 권한은 Policy가 아니라 IAM Role에 의해 부여된다. 따라서 잘못된 방법이다.
3번. 키 정책에서 Lambda 함수의 IAM 역할에 키의 "kms:" 액션을 설정한다.
"kms:" 작업은 일반적으로 키 생성자에게만 설정되는 액션이다.
여기에는 키 생성, 삭제 등 관리 권한과 암호화, 복호화 등 사용 권한이 모두 포함된다.
키를 사용하여 복호화할 수 있지만, 최소 권한이 아니므로 안전한 방법이라고 할 수 없다.
'클라우드(AWS) > SAA-C03' 카테고리의 다른 글
[AWS SAA-C03] 오답 풀이 #020 (ACM의 SSL/TLS 인증서 만료 전에 전에 알림 받기, ACM과 AWS Config 조합) (0) | 2024.08.28 |
---|---|
[AWS SAA-C03] 오답 풀이 #019 (EC2 Stop-Hibernate(최대 절전 모드)이란? 아주 쉽게 정리) (0) | 2024.08.27 |
[AWS SAA-C03] 오답 풀이 #017 (EC2 인스턴스에 관한 내용) (0) | 2024.08.27 |
[AWS SAA-C03] 오답 풀이 #015 (gateway VPC Endpoint의 특징) (0) | 2024.08.26 |
[AWS SAA-C03] 오답 풀이 #014 (Step Functions의 활용 방법, Lambda 함수의 실행 시간) (0) | 2024.08.24 |