Configurar credenciais da AWS usando o Amazon Cognito para DynamoDB
A maneira recomendada para obter credenciais da AWS para suas aplicações móveis e da Web é usar o Amazon Cognito. O Amazon Cognito ajuda a evitar a codificação das suas credenciais da AWS em seus arquivos. Ele usa funções do AWS Identity and Access Management (IAM) para gerar credenciais temporárias para os usuários autenticados e não autenticados da sua aplicação.
Por exemplo, para configurar seus arquivos JavaScript para usar uma função não autenticada do Amazon Cognito para acessar o serviço da Web Amazon DynamoDB, faça o seguinte:
Para configurar credenciais a serem integradas ao Amazon Cognito
-
Crie um pool de identidades do Amazon Cognito que permita identidades não autenticadas.
aws cognito-identity create-identity-pool \ --identity-pool-name DynamoPool \ --allow-unauthenticated-identities \ --output json { "IdentityPoolId": "us-west-2:12345678-1ab2-123a-1234-a12345ab12", "AllowUnauthenticatedIdentities": true, "IdentityPoolName": "DynamoPool" }
-
Copie a seguinte política para um arquivo denominado
myCognitoPolicy.json
. Substitua o ID do grupo de identidades (us-west-2:12345678-1ab2-123a-1234-a12345ab12
) pelo seu próprioIdentityPoolId
obtido na etapa anterior.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-west-2:12345678-1ab2-123a-1234-a12345ab12" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "unauthenticated" } } } ] }
-
Crie uma função do IAM que assuma a política anterior. Dessa forma, o Amazon Cognito se torna uma entidade confiável capaz de assumir a função
Cognito_DynamoPoolUnauth
.aws iam create-role --role-name Cognito_DynamoPoolUnauth \ --assume-role-policy-document file://PathToFile/myCognitoPolicy.json --output json
-
Conceda à função
Cognito_DynamoPoolUnauth
acesso total ao DynamoDB anexando uma política gerenciada (AmazonDynamoDBFullAccess
).aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess \ --role-name Cognito_DynamoPoolUnauth
nota
Como alternativa, você pode conceder acesso refinado ao DynamoDB. Para obter mais informações, consulte Usar condições de política do IAM para um controle de acesso refinado.
-
Obtenha e copie o nome do recurso da Amazon (ARN) da função do IAM.
aws iam get-role --role-name Cognito_DynamoPoolUnauth --output json
-
Adicione a função
Cognito_DynamoPoolUnauth
ao pool de identidadesDynamoPool
. O formato a ser especificado éKeyName=string
, ondeKeyName
éunauthenticated
e a string é o ARN da função obtido na etapa anterior.aws cognito-identity set-identity-pool-roles \ --identity-pool-id "us-west-2:12345678-1ab2-123a-1234-a12345ab12" \ --roles unauthenticated=arn:aws:iam::123456789012:role/Cognito_DynamoPoolUnauth --output json
-
Especifique as credenciais do Amazon Cognito em seus arquivos. Modifique
IdentityPoolId
eRoleArn
de acordo.AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: "us-west-2:12345678-1ab2-123a-1234-a12345ab12", RoleArn: "arn:aws:iam::123456789012:role/Cognito_DynamoPoolUnauth" });
Você agora pode executar seus programas JavaScript no serviço da Web DynamoDB usado credenciais do Amazon Cognito. Para ter mais informações, consulte Setting credentials in a web browser no Guia de conceitos básicos do AWS SDK for JavaScript.