Je reçois une erreur dans ma fonction Lambda, qui appelle SSM:
AccessDeniedException: utilisateur: arn: aws: sts :: redaged: assume-role/LambdaBackend_master_lambda/SpikeLambda n'est pas autorisé à effectuer: ssm: GetParameter on resource: arn: aws: ssm: eu-west-1: caviardé: paramètre/par défaut/clé/api
Cependant, je suis presque sûr d'avoir configuré cela correctement:
Rôle, avec AssumeRole pour Lambda (bien que nous sachions que cela fonctionne à partir du message d'erreur).
λ aws iam get-role --role-name LambdaBackend_master_lambda
{
"Role": {
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
}
}
]
},
"RoleId": "redacted",
"CreateDate": "2017-06-23T20:49:37Z",
"RoleName": "LambdaBackend_master_lambda",
"Path": "/",
"Arn": "arn:aws:iam::redacted:role/LambdaBackend_master_lambda"
}
}
Et ma politique:
λ aws iam list-role-policies --role-name LambdaBackend_master_lambda
{
"PolicyNames": [
"ssm_read"
]
}
λ aws iam get-role-policy --role-name LambdaBackend_master_lambda --policy-name ssm_read
{
"RoleName": "LambdaBackend_master_lambda",
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ssm:DescribeParameters"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"ssm:GetParameters"
],
"Resource": "arn:aws:ssm:eu-west-1:redacted:parameter/*",
"Effect": "Allow"
}
]
},
"PolicyName": "ssm_read"
}
Je l'ai fait passer par le simulateur de politique et ça semble bien!
Joué avec cela aujourd'hui et obtenu ce qui suit, en supprimant le s de ssm:GetParameters
et en utilisant ssm:GetParameter
semble fonctionner lors de l'utilisation de l'action GetParameter. c'est à dire AWS_PROFILE=pstore aws ssm get-parameter --name param_name
Cela m'a un peu dérangé parce que je ne trouve rien du tout dans les documents d'action iam ici . Cependant, cela semble fonctionner, et ssm est encore un peu sous-documenté.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ssm:DescribeParameters"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"ssm:GetParameter"
],
"Resource": "arn:aws:ssm:eu-west-1:redacted:parameter/*",
"Effect": "Allow"
}
]
}
Dans mon cas (j'ai utilisé AWS SDK pour Go V2), j'avais besoin des deux ssm:GetParametersByPath
et ssm:GetParameter
pour le faire fonctionner.
Ran dans la même erreur aujourd'hui. Le code Java Java l'a provoqué lorsque encrypted = false
Et paramName
ont fait référence à un paramètre non chiffré
GetParameterRequest request = new GetParameterRequest()
.withName(paramName)
.withWithDecryption(encrypted);
GetParameterResult resultPacket = ssmClient.getParameter(request);
Le correctif consistait à créer la demande de paramètre non chiffrée sans définir l'indicateur WithDecryption
- GetParameterRequest request = new GetParameterRequest().withName(paramName);