2017-10-31 21 views
2

를 암호화, 그것은 상태 :AWS IAM 정책이 아마존 EBS와 나머지 암호화로 데이터의 섹션에서 <a href="https://d0.awsstatic.com/whitepapers/aws-kms-best-practices.pdf" rel="nofollow noreferrer">AWS Key Management Service Best Practices whitepaper</a>에서

은 EBS 볼륨은 항상 암호화되어 있는지 확인하는 방법은 두 가지가 있습니다 . CreateVolume 컨텍스트의 일부인 암호화 플래그가 IAM 정책을 통해 "true"로 설정되었는지 확인할 수 있습니다. 플래그가 "true"를하지 않은 경우 다음 IAM 정책은 EBS 볼륨 I이 어떻게 할 수있는

를 만드는에서 개인을 방지 할 수 있습니다?

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Sid": "Stmt1509465260000", 
     "Effect": "Allow", 
     "Action": [ 
     "ec2:CreateVolume" 
     ], 
     "Condition": { 
     "Bool": { 
      "ec2:Encrypted": "true" 
     } 
     }, 
     "Resource": [ 
     "*" 
     ] 
    } 
    ] 
} 
백서를 바탕으로

docsec2:Encrypted 키에 Bool 조건이 가장 의미가 있지만, 암호화 된 볼륨을 생성 할 때, 난 : 나는 정책이 같이 보일 것입니다 상상 것 액세스가 거부되었습니다.

나는 진술에 무엇이 누락 되었습니까?

답변

1

당신은 암호화 된 볼륨을 만드는 데 추가 권한이 필요합니다 :

1) EC2를 : DescribeAvailabilityZones

2) KMS : *

참고 : 나는에 대한 최소한의 권한에 대한 KMS를 드릴 다운하지 않았다 KMS 암호화 키를 사용하십시오. 스냅 샷에서 볼륨을 생성하려면 ec2:DescribeSnapshots을 추가해야합니다.

예 정책 :

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "kms:*" 
      ], 
      "Resource": "*" 
     }, 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "ec2:DescribeAvailabilityZones" 
      ], 
      "Resource": "*" 
     }, 
     { 
      "Sid": "Stmt1509465260000", 
      "Effect": "Allow", 
      "Action": [ 
       "ec2:CreateVolume" 
      ], 
      "Condition": { 
       "Bool": { 
        "ec2:Encrypted": "true" 
       } 
      }, 
      "Resource": [ 
       "*" 
      ] 
     } 
    ] 
} 
+0

당신을 감사합니다! 내 유스 케이스에 대해 몇 가지 조치를 추가해야했다. 정확히 내가 한 일을 보여주는 답변을 게시 할 것입니다. – tkwargs

+1

최종 솔루션을 게시 해 주셔서 감사합니다. 이렇게하면 다른 사람들이 IAM 정책을 더 잘 이해할 수 있습니다. 최소 권한의 원칙은 클라우드 보안과 함께 매우 중요합니다. –

+0

괜찮습니다! 동일한 AWS 계정을 사용하는 여러 응용 프로그램/개발 팀이있는 조직의 IAM/KMS 관리에 대한 좋은 프레임 워크를 알고 있습니까? '최소한의 권한 원칙'에 동의하는 것은 쉽지만 시간이 지남에 따라 구현 및 관리하기가 어려울 수 있습니다. – tkwargs

1

존 헨리가 있었다 그것은 바로

내가 사용 결국 전체 정책이이처럼 보였다 :

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Sid": "Stmt2222222222222", 
     "Effect": "Allow", 
     "Action": [ 
     "ec2:CreateVolume" 
     ], 
     "Condition": { 
     "Bool": { 
      "ec2:Encrypted": "true" 
     } 
     }, 
     "Resource": [ 
     "*" 
     ] 
    }, 
    { 
     "Sid": "Stmt1111111111111", 
     "Effect": "Allow", 
     "Action": [ 
     "ec2:DescribeVolumes", 
     "ec2:DescribeAvailabilityZones", 
     "ec2:CreateTags", 
     "kms:ListAliases" 
     ], 
     "Resource": [ 
     "*" 
     ] 
    }, 
    { 
     "Sid": "allowKmsKey", 
     "Effect": "Allow", 
     "Action": [ 
     "kms:Encrypt" 
     ], 
     "Resource": [ 
     "arn:aws:kms:us-east-1:999999999999:alias/aws/ebs" 
     ] 
    } 
    ] 
}