Nu am putut să renunț la asta, așa că am trecut la testare și am găsit că următoarea este probabil o soluție bună.
Puncte cheie pe care le-am învățat:
- Se pare că serviciile au nevoie doar de permisiuni „kms:GenerateDataKey”.
- Folosiți condiția „StringLike”, nu „StringEquals” dacă doriți *-wildcard
Acest documentație a fost destul de util.
Nu am reușit să elaborez o politică care să folosească „aws:SourceArn” sau „aws:SourceAccount”, dar am reușit cu „kms:EncryptionContext:context”.
Iată politica mea, numărul de cont a fost redactat:
{
„Versiune”: „2012-10-17”,
„Id”: „SNS-KMS-Key”,
"Afirmație": [
{
„Sid”: „Administrator cheie în contul de administrare”,
„Efect”: „Permite”,
„Principal”: {
„AWS”: „arn:aws:iam::112211221122:root”
},
„Acțiune”: „kms:*”,
„Resurse”: „*”
},
{
„Sid”: „Permisiuni pentru serviciile AWS în toate conturile”,
„Efect”: „Permite”,
„Principal”: {
„Serviciul”: [
„config.amazonaws.com”,
„cloudtrail.amazonaws.com”
]
},
"Acțiune": [
„kms:GenerateDataKey”,
"kms:Encrypt",
"kms:Decriptare",
"kms:DescribeKey",
„kms:ReEncrypt*”
],
„Resurse”: „*”
}
]
}
Sper că cineva va găsi acest lucru util.
Vă rugăm să rețineți că bănuiesc că ați putea și ar trebui să utilizați condiții pentru a limita ultima declarație. Nu am reușit să funcționeze.