¿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.

Solución

Cuando use la API GetFederationToken, utilice la variable de política ${aws:userID} en lugar de ${aws:userName}. El motivo es que la variable ${aws:userName} no está presente si la entidad principal es un usuario federado. Para obtener más información, consulte Dónde puede utilizar variables de política.

La siguiente política de IAM de JSON proporciona un ejemplo en el que la variable de política ${aws:userName} se ha sustituido por ${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».

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

Nota: En este ejemplo se presupone que la parte de la variable aws:userid que corresponde al nombre especificado por el intermediario (nombre intuitivo) es única. Un nombre intuitivo único evita que otro usuario con el mismo nombre intuitivo se quede sin acceso a los recursos especificados en la política de JSON. Para obtener más información, consulte Identificadores únicos.


Información relacionada

Permisos para GetFederationToken

Token vending machine for identity registration - sample java web application

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

Identificadores de IAM

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 3 años