ฉันไม่สามารถปล่อยมันไปได้ ดังนั้นฉันจึงทำการทดสอบและพบว่าสิ่งต่อไปนี้น่าจะเป็นวิธีแก้ปัญหาที่ดี
ประเด็นสำคัญที่ฉันได้เรียนรู้:
- ดูเหมือนว่าบริการต้องการสิทธิ์ "kms:GenerateDataKey" เท่านั้น
- ใช้เงื่อนไข "StringLike" ไม่ใช่ "StringEquals" ถ้าคุณต้องการ *-wildcard
นี้ เอกสาร ค่อนข้างมีประโยชน์
ฉันไม่ประสบความสำเร็จในการสร้างนโยบายที่ใช้ "aws:SourceArn" หรือ "aws:SourceAccount" แต่ฉันทำสำเร็จด้วย "kms:EncryptionContext:context"
นี่คือนโยบายของฉัน หมายเลขบัญชีถูกแก้ไข:
{
"เวอร์ชัน": "2012-10-17",
"รหัส": "คีย์ SNS-KMS",
"คำแถลง": [
{
"ซิด": "ผู้ดูแลหลักในบัญชี mgmt",
"เอฟเฟกต์": "อนุญาต",
"อาจารย์ใหญ่": {
"AWS": "arn:aws:iam::112211221122:root"
},
"การดำเนินการ": "kms:*",
"ทรัพยากร": "*"
},
{
"Sid": "การอนุญาตบริการ AWS ในทุกบัญชี",
"เอฟเฟกต์": "อนุญาต",
"อาจารย์ใหญ่": {
"บริการ": [
"config.amazonaws.com",
"cloudtrail.amazonaws.com"
]
},
"หนังบู๊": [
"kms: สร้างคีย์ข้อมูล",
"kms: เข้ารหัส",
"kms:ถอดรหัส",
"kms:DescribeKey",
"kms:เข้ารหัสใหม่*"
]
"ทรัพยากร": "*"
}
]
}
ฉันหวังว่าจะมีคนพบว่าสิ่งนี้มีประโยชน์
โปรดทราบว่าฉันสงสัยว่าคุณอาจใช้เงื่อนไขเพื่อจำกัดคำสั่งสุดท้ายได้ ไม่ได้รับสิ่งนั้นเพื่อทำงานเอง