IAM 정책 모범 사례 - AWS Key Management Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

IAM 정책 모범 사례

AWS KMS keys에 대한 액세스를 보호하는 것은 모든 AWS 리소스의 보안에 매우 중요합니다. KMS 키는 AWS 계정에서 가장 중요한 리소스를 보호하는 데 사용됩니다. 따라서 KMS 키에 대한 액세스를 제어하는 키 정책,​​ IAM 정책, 권한 부여 및 VPC 엔드포인트 정책을 설계하는 데 시간을 할애하세요.

KMS 키에 대한 액세스를 제어하는 IAM 정책 설명에서 최소 권한 원칙을 사용합니다. IAM 보안 주체에 사용하거나 관리해야 하는 KMS 키에만 필요한 권한만 부여합니다.

다음 모범 사례는AWS KMS 키 및 별칭에 대한 액세스를 제어하는 IAM 정책에 적용됩니다. 일반적인 IAM 정책 모범 사례 지침은 IAM 사용 설명서의 IAM의 보안 모범 사례를 참조하세요.

키 정책 사용

가능하면 다른 AWS 계정에 있는 키를 포함해 여러 KMS 키에 적용할 수 있는 IAM 정책보다는 하나의 KMS 키에 영향을 주는 키 정책에 권한을 제공합니다. 이는 kms:PutKeyPolicykms:ScheduleKeyDeletion과 같은 민감한 권한뿐만 아니라 데이터 보호 방법을 결정하는 암호화 작업에도 특히 중요합니다.

CreateKey 권한 제한

필요한 보안 주체에게만 키 생성 권한(kms:CreateKey)을 부여합니다. KMS 키를 만드는 보안 주체도 키 정책을 설정하므로 자신이 만든 KMS 키를 사용하고 관리할 수 있는 권한을 자신과 다른 사용자에게 부여할 수 있습니다. 이 사용 권한을 할 때 정책 조건을 사용하여 제한하는 것이 좋습니다. 예를 들어, kms:KeySpec 조건을 사용하여 대칭 암호화 KMS 키에 대한 권한을 제한할 수 있습니다.

IAM 정책에서 KMS 키 지정

가장 좋은 방법은 정책 설명의 Resource 요소에 권한이 적용되는 각 KMS 키의 키 ARN을 지정하는 것입니다. 이 방법은 보안 주체에 필요한 KMS 키에 대한 사용 권한을 제한합니다. 예를 들어 이 Resource 요소는 보안 주체가 사용해야 하는 KMS 키만 나열합니다.

"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" ]

KMS 키를 지정하는 것이 비실용적일 경우 arn:aws:kms:region:account:key/*와 같이 신뢰할 수 있는 AWS 계정 및 리전에서 KMS 키에 대한 액세스를 제한하는 Resource 값을 사용합니다. 또는 arn:aws:kms:*:account:key/*와 같이 신뢰할 수 있는 AWS 계정의 모든 리전(*)에서 KMS 키에 대한 액세스를 제한합니다.

키 ID, 별칭 이름 또는 별칭 ARN을 사용하여 IAM 정책의 Resource 필드에서 KMS 키를 나타낼 수 없습니다. 별칭 ARN을 지정하면 정책이 KMS 키가 아닌 별칭에 적용됩니다. 별칭에 대한 IAM 정책에 대한 자세한 내용은 별칭에 대한 액세스 제어 섹션을 참조하십시오.

IAM 정책에서 "Resource": "*" 사용 안 함

와일드카드 문자 (*)를 신중하게 사용하십시오. 키 정책에서 Resource 요소의 와일드카드 문자는 키 정책이 연결된 KMS 키를 나타냅니다. 그러나 IAM 정책에서 Resource 요소("Resource": "*")의 와일드카드 문자만 보안 주체의 계정이 사용할 권한이 있는 모든 AWS 계정의 모든 KMS 키에 권한을 적용합니다. 여기에는 다른 AWS 계정의 KMS 키와 보안 주체 계정의 KMS 키가 포함될 수 있습니다.

예를 들어, 다른 AWS 계정에서 KMS 키를 사용하려면 보안 주체가 외부 계정의 KMS 키의 키 정책과 자신의 계정에 있는 IAM 정책의 권한이 필요합니다. 임의의 계정이 KMS 키에 대한 AWS 계정 kms:Decrypt 권한을 부여했다고 가정해 보겠습니다. 이 경우 역할에 모든 KMS 키("Resource": "*")에 대한 kms:Decrypt 권한을 부여하는 계정의 IAM 정책은 요구 사항의 IAM 부분을 충족합니다. 따라서 해당 역할을 수임할 수 있는 보안 주체는 이제 신뢰할 수 없는 계정의 KMS 키를 사용하여 암호문을 해독할 수 있습니다. 두 계정의 CloudTrail 로그에 해당 작업에 대한 항목이 표시됩니다.

특히 다음 API 작업을 허용하는 정책 설명에서 "Resource": "*"를 사용하지 마십시오. 이러한 작업은 다른 AWS 계정의 KMS 키에서 호출할 수 있습니다.

"Resource": "*"를 사용하는 경우

IAM 정책에서 필요한 권한에 대해서만 Resource 요소의 와일드카드 문자를 사용하십시오. 다음 권한에만 "Resource": "*" 요소가 필요합니다.

참고

별칭 작업에 대한 권한(kms:CreateAlias, kms:UpdateAlias, kms:DeleteAlias)은 별칭과 KMS 키에 연결되어야 합니다. IAM 정책에서 "Resource": "*"를 사용하여 별칭과 KMS 키를 나타내거나 Resource 요소에서 별칭과 KMS 키를 지정할 수 있습니다. 예제는 별칭에 대한 액세스 제어 섹션을 참조하십시오.

 

이 항목의 예에서는 KMS 키에 대한 IAM 정책을 설계하기 위한 추가 정보와 지침을 제공합니다. 모든 AWS 리소스에 대한 IAM 모범 사례는 IAM 사용 설명서IAM의 보안 모범 사례를 참조하십시오.