Uso de la federación de identidades web - Amazon DynamoDB

Uso de la federación de identidades web

Cuando escriba una aplicación dirigida a gran cantidad de usuarios, puede utilizar, si lo desea, identidades web federadas para llevar a cabo las operaciones de autenticación y autorización. Las identidades web federadas evitan tener que crear usuarios de individuales. En su lugar, los usuarios pueden iniciar sesión en un proveedor de identidades y obtener credenciales de seguridad temporales de AWS Security Token Service (AWS STS). A continuación, la aplicación puede utilizar estas credenciales para obtener acceso a los servicios de AWS.

Las identidades web federadas admiten los siguientes proveedores de identidad:

  • Login with Amazon

  • Facebook

  • Google

Recursos adicionales para identidades web federadas

Los siguientes recursos pueden ayudarle a obtener más información sobre las identidades web federadas:

Ejemplo de política para la federación de identidades web

Para mostrarle cómo utilizar las identidades federadas web con DynamoDB, vamos a retomar la tabla GameScores presentada en Uso de condiciones de las políticas de IAM para control de acceso preciso. Esta es la clave principal para GameScores.

Nombre de la tabla Tipo de clave principal Nombre y tipo de clave de partición Nombre y tipo de clave de ordenación
GameScores (UserId, GameTitle, ...) Compuesto Nombre de atributo: UserId

Tipo: cadena
Nombre de atributo: GameTitle

Tipo: cadena

Ahora, supongamos que una aplicación de juegos para móviles utiliza la aplicación, con lo cual esta tiene que aceptar miles o incluso millones de usuarios. A esta escala, resulta muy complicado administrar individualmente a los usuarios de la aplicación y garantizar que cada uno de ellos únicamente pueda obtener acceso a sus propios datos en la tabla GameScores. Afortunadamente, muchos usuarios ya tiene cuentas de un proveedor de identidades tercero, como Facebook, Google o Login with Amazon. Por este motivo, es lógico utilizar alguno de ellos para llevar a cabo las tareas de autenticación.

Para hacer esto mediante las identidades web federadas, el desarrollador de la aplicación debe registrar esta última en un proveedor de identidades (como Login with Amazon) y obtener un identificador de aplicación exclusivo. A continuación, el desarrollador debe crear un rol de IAM. (En este ejemplo, este rol se llama GameRole). El rol debe tener adjunto un documento de política de IAM en el que se especifiquen las condiciones en virtud de las cuales la aplicación podrá obtener acceso a la tabla GameScores.

Cuando un usuario desee jugar, iniciará sesión en esta cuenta de Login with Amazon desde la propia aplicación de juegos. A continuación, la aplicación llamará a AWS Security Token Service (AWS STS), proporcionará el ID de aplicación de Login with Amazon y solicitará formar parte de GameRole. AWS STS devolverá credenciales temporales de AWS a la aplicación y permitirá que esta última acceda a la tabla de GameScores, de acuerdo con lo establecido en el documento de las políticas de GameRole.

En el diagrama siguiente se muestra cómo se integran estas piezas entre sí.

Información general sobre la federación de identidades web

  1. La aplicación llama a un proveedor de identidades tercero para autenticar al usuario y la aplicación. El proveedor de identidades devuelve un token de identidad web a la aplicación.

  2. La aplicación llama a AWS STS y pasa el token de identidad web como información de entrada. AWS STS autoriza la aplicación y le proporciona credenciales temporales de acceso a AWS. Se permite que la aplicación asuma un rol de IAM (GameRole) y que obtenga acceso a los recursos de AWS de conformidad con la política de seguridad del rol.

  3. La aplicación llama a DynamoDB para acceder a la tabla GameScores. Dado que la aplicación ha asumido el rol GameRole, está sujeta a la política de seguridad asociada a ese rol. El documento de política impide que la aplicación obtenga acceso a datos que no pertenecen al usuario.

Una vez más, esta es la política de seguridad de GameRole que se mostró en Uso de condiciones de las políticas de IAM para control de acceso preciso:

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowAccessToOnlyItemsMatchingUserID", "Effect":"Allow", "Action":[ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem" ], "Resource":[ "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores" ], "Condition":{ "ForAllValues:StringEquals":{ "dynamodb:LeadingKeys":[ "${www.amazon.com:user_id}" ], "dynamodb:Attributes":[ "UserId", "GameTitle", "Wins", "Losses", "TopScore", "TopScoreDateTime" ] }, "StringEqualsIfExists":{ "dynamodb:Select":"SPECIFIC_ATTRIBUTES" } } } ] }

La cláusula Condition determina qué elementos de GameScores están visibles para la aplicación. Para ello, compara el identificador de Login with Amazon con los valores de las claves de partición UserId de GameScores. Solamente los elementos que pertenecen al usuario actual se pueden procesar utilizando una de las acciones de DynamoDB que se enumeran en esta política. No se puede obtener acceso a los demás elementos de la tabla. Además, solo se puede obtener acceso a los atributos específicos enumerados en la política.