DynamoDB용 Amazon Cognito를 사용하여 파일에서 AWS 자격 증명 구성
웹 및 모바일 애플리케이션용 AWS 자격 증명을 얻으려면 Amazon Cognito를 사용하는 것이 좋습니다. Amazon Cognito를 사용하면 파일에서 AWS 자격 증명을 하드 코딩할 필요가 없습니다. AWS Identity and Access Management(IAM) 역할을 사용하여 애플리케이션의 인증 및 미인증 사용자를 위한 임시 자격 증명을 생성합니다.
예를 들어, Amazon Cognito 미인증 역할을 사용해 Amazon DynamoDB 웹 서비스에 액세스하도록 JavaScript 파일을 구성하려면 다음을 수행합니다.
Amazon Cognito와 통합하도록 자격 증명을 구성하려면
-
인증받지 않은 자격 증명을 허용하는 Amazon Cognito 자격 증명 풀을 생성합니다.
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" }
-
다음 정책을
myCognitoPolicy.json
이라는 파일에 복사합니다. 자격 증명 풀 ID(us-west-2:12345678-1ab2-123a-1234-a12345ab12
)를 이전 단계에서 얻은 자체IdentityPoolId
으로 바꿉니다.{ "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" } } } ] }
-
IAM 역할을 만들고 이전에 만든 정책을 위임합니다. 이를 통해 Amazon Cognito는
Cognito_DynamoPoolUnauth
역할을 맡을 수 있는 신뢰할 수 있는 엔터티가 됩니다.aws iam create-role --role-name Cognito_DynamoPoolUnauth \ --assume-role-policy-document file://PathToFile/myCognitoPolicy.json --output json
-
관리형 정책(
AmazonDynamoDBFullAccess
)을 연결함으로써 DynamoDB에 대한 모든 액세스 권한을Cognito_DynamoPoolUnauth
역할에 부여합니다.aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess \ --role-name Cognito_DynamoPoolUnauth
참고
다른 방식으로 DynamoDB에 대해 세분화된 액세스를 부여할 수 있습니다. 자세한 내용은 IAM 정책 조건을 사용하여 세분화된 액세스 제어 구현을 참조하세요.
-
IAM 역할의 Amazon 리소스 이름(ARN)을 가져와 복사합니다.
aws iam get-role --role-name Cognito_DynamoPoolUnauth --output json
-
자격 증명 풀에
DynamoPool
역할Cognito_DynamoPoolUnauth
을 추가합니다. 지정할 형식은KeyName=string
입니다. 여기서KeyName
는unauthenticated
이고 문자열은 이전 단계에서 얻은 역할 ARN입니다.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
-
파일에서 Amazon Cognito 자격 증명을 지정합니다.
IdentityPoolId
및RoleArn
을 적절하게 변경합니다.AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: "us-west-2:12345678-1ab2-123a-1234-a12345ab12", RoleArn: "arn:aws:iam::123456789012:role/Cognito_DynamoPoolUnauth" });
이제 Amazon Cognito 자격 증명을 사용하여 DynamoDB 웹 서비스에서 JavaScript 프로그램을 실행할 수 있습니다. 자세한 내용은 AWS SDK for JavaScript 시작 안내서에서 웹 브라우저에서 보안 인증 정보 설정을 참조하세요.