Un utilizator IAM din contul nostru aws încearcă să preia un anumit secret de la Secrets Manager prin aws cli, dar nu poate face asta, deși ar trebui să aibă permisiuni necesare:
aws secretsmanager get-secret-value --secret-id "config/my/secret"
Acest lucru eșuează cu eroare accesul la km nu este permis.
Folosim DefaultEncryptionKey pentru criptarea secretului și a politicii de cheie (gestionată de AWS) mi se pare sensibil:
"Afirmație": [
{
„Sid”: „Permiteți accesul prin AWS Secrets Manager pentru toți directorii din cont care sunt autorizați să utilizeze AWS Secrets Manager”,
„Efect”: „Permite”,
„Principal”: {
"AWS": "*"
},
"Acțiune": [
"kms:Encrypt",
"kms:Decriptare",
"kms:ReEncrypt*",
"kms:CreateGrant",
„kms:DescribeKey”
],
„Resurse”: „*”,
"Condiție": {
„StringEquals”: {
"kms:CallerAccount": "<EXPURAT>",
"kms:ViaService": "secretsmanager.eu-west-1.amazonaws.com"
}
}
},
{
„Sid”: „Permiteți accesul prin AWS Secrets Manager pentru toți directorii din cont care sunt autorizați să utilizeze AWS Secrets Manager”,
„Efect”: „Permite”,
„Principal”: {
"AWS": "*"
},
„Acțiune”: „kms:GenerateDataKey*”,
„Resurse”: „*”,
"Condiție": {
„StringEquals”: {
"kms:CallerAccount": "<redactat>"
},
„StringLike”: {
"kms:ViaService": "secretsmanager.*.amazonaws.com"
}
}
}
În Permisiuni pentru cheia KMS ei spun că ai nevoie
- kms:GenerateDataKey
- kms:Decriptare
Acestea sunt furnizate de politica cheie.
Utilizatorul a atașat o politică IAM pentru a le acorda permisiuni pentru Secrets Manager prin API, așa cum este descris aici: https://curiousprogrammer.net/posts/2022-02-16-aws-secrets-manager-least-privilege#_2_create_the_iam_policy
Am căutat în Cloudtrail și nu am găsit nimic util, doar un mesaj de „eroare necunoscută”:
"eventSource": "secretsmanager.amazonaws.com",
"eventName": "GetSecretValue",
"awsRegion": "eu-west-1",
„userAgent”: „aws-cli/2.4.18 Python/3.9.10 Darwin/21.2.0 source/arm64 prompt/off command/secretsmanager.get-secret-value”,
"errorCode": "Eșec intern",
"errorMessage": "A apărut o eroare necunoscută",
„requestParameters”: {
"secretId": "config/my/secret"
},
Cum îmi pot da seama ce se întâmplă și ce permisiuni suplimentare sunt necesare?