¿Cómo puedo utilizar las variables de política de IAM con usuarios federados?

2 minutos de lectura
0

Cuando utilizo la API GetFederationToken para generar credenciales temporales, la variable de política ${aws:userName} no funciona.

Resolución

Cuando el elemento Entidad principal es un usuario federado, la variable de política ${aws:userName} de AWS Identity and Access Management (IAM) no aparece en la solicitud. En su lugar, use la variable de política ${aws:userID} con las llamadas a la API GetFederationToken. Para obtener más información, consulte Dónde puede utilizar variables de política.

En la siguiente política de JSON, la variable de política ${aws:userName} se ha sustituido por la variable de política ${aws:userID}:

{   "Version":"2012-10-17",
   "Statement":[
      {
         "Sid":"AllowListingOfUserFolder",
         "Action":[
            "s3:ListBucket"
         ],

         "Effect":"Allow",

         "Resource":[
            "arn:aws:s3:::TESTBUCKET"
         ],
         "Condition":{
            "StringLike":{
               "s3:prefix":[
                  "TESTBUCKET/${aws:userid}/*"
               ]
            }
         }
      },
      {
         "Sid":"AllowAllS3ActionsInUserFolder",
         "Action":[
            "s3:PutObject",
            "s3:GetObject",
            "s3:GetObjectVersion",
            "s3:DeleteObject"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:s3:::TESTBUCKET/${aws:userid}/*"
         ]
      }
   ]
}

El valor de la variable aws:userid debería ser ACCOUNTNUMBER:caller-specified-name.

El valor del parámetro Name para las llamadas a la API GetFederationToken debe seguir las directrices de GetFederationToken. Por ejemplo, si especifica el nombre intuitivo Bob, entonces el formato correcto sería 123456789102:Bob. De este modo se asigna un nombre de formato a su sesión y se permite acceder al bucket de Amazon Simple Storage Service (Amazon S3) que cuenta con el prefijo correspondiente.

Nota: En este ejemplo anterior se presupone que el nombre intuitivo de la variable aws:userid es un identificador único. Un nombre intuitivo único no permite que otro usuario con el mismo nombre intuitivo se quede sin acceso a los recursos especificados en la política de JSON.

Información relacionada

Permisos para GetFederationToken

Elementos de la política de IAM: variables y etiquetas

Identificadores de IAM

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año