Amazon Cognito
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

资源权限

本部分介绍如何通过 AWS Identity and Access Management (IAM) 限制对 Amazon Cognito 资源的访问权限。有关结合使用身份池和用户池组控制 AWS 资源访问权限的更多信息,请参阅向用户池添加组基于角色的访问控制。有关身份池和 IAM 的更多信息,请参阅身份池概念 (联合身份)

Amazon 资源名称 (ARN)

用于 Amazon Cognito 联合身份的 ARN

在 Amazon Cognito 身份池 (联合身份) 中,您可以使用如下例所示的 Amazon 资源名称 (ARN) 格式限制 IAM 用户对特定身份池的访问权限。有关 ARN 的更多信息,请参阅 IAM 标识符

arn:aws:cognito-identity:REGION:ACCOUNT_ID:identitypool/IDENTITY_POOL_ID

用于 Amazon Cognito Sync 的 ARN

在 Amazon Cognito Sync 中,客户还可以按身份池 ID、身份 ID 和数据集名称限制访问。

对于在身份池上运行的 API,身份池 ARN 格式与 Amazon Cognito 联合身份的相同,但前者的服务名称是 cognito-sync,而不是 cognito-identity

arn:aws:cognito-sync:REGION:ACCOUNT_ID:identitypool/IDENTITY_POOL_ID

对于在单个身份池上运行的 API (例如 RegisterDevice),您可以通过以下 ARN 格式引用单个身份:

arn:aws:cognito-sync:REGION:ACCOUNT_ID:identitypool/IDENTITY_POOL_ID/identity/IDENTITY_ID

有关在数据集上运行的 API (例如 UpdateRecordsListRecords),您可以使用以下 ARN 格式引用单个数据集:

arn:aws:cognito-sync:REGION:ACCOUNT_ID:identitypool/IDENTITY_POOL_ID/identity/IDENTITY_ID/dataset/DATASET_NAME

用于 Amazon Cognito 您的用户池的 ARN

对于 Amazon Cognito 您的用户池,您可以使用以下 ARN 格式限制 IAM 用户对特定用户池的访问权限:

arn:aws:cognito-idp:REGION:ACCOUNT_ID:userpool/USER_POOL_ID

示例政策

限制对特定身份池的控制台访问权限

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cognito-identity:ListIdentityPools" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "cognito-identity:*" ], "Resource": "arn:aws:cognito-identity:us-east-1:0123456789:identitypool/us-east-1:1a1a1a1a-ffff-1111-9999-12345678" }, { "Effect": "Allow", "Action": [ "cognito-sync:*" ], "Resource": "arn:aws:cognito-sync:us-east-1:0123456789:identitypool/us-east-1:1a1a1a1a-ffff-1111-9999-12345678" } ] }

允许池中的所有身份访问特定数据集

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cognito-sync:ListRecords", "cognito-sync:UpdateRecords" ], "Resource": "arn:aws:cognito-sync:us-east-1:0123456789:identitypool/us-east-1:1a1a1a1a-ffff-1111-9999-12345678/identity/*/dataset/UserProfile" } ] }

受管政策

客户可使用 IAM 控制台提供的大量策略授予对 Amazon Cognito 的访问权限:

  • AmazonCognitoPowerUser – 对身份池所有方面的访问和管理权限。

  • AmazonCognitoReadOnly – 对身份池的只读访问权限。

  • AmazonCognitoDeveloperAuthenticatedIdentities – 让身份验证系统与 Amazon Cognito 集成的权限。

这些策略由 Amazon Cognito 团队维护,因此,即使 IAM 中添加了新 API,用户也将一直拥有相同级别的访问权限。

注意

由于创建新的身份池时还需要创建 IAM 角色,您希望用来创建新身份池的所有 IAM 用户也都必须应用管理员策略。

签名与未签名的 API

通过 AWS 凭证签署的 API 能够通过 IAM 策略进行限制。以下 Cognito API 未签名,因此无法通过 IAM 策略进行限制:

Amazon Cognito 联合身份

  • GetId

  • GetOpenIdToken

  • GetCredentialsForIdentity

  • UnlinkIdentity

Amazon Cognito 您的用户池

  • ChangePassword

  • ConfirmDevice

  • ConfirmForgotPassword

  • ConfirmSignUp

  • DeleteUser

  • DeleteUserAttributes

  • ForgetDevice

  • ForgotPassword

  • GetDevice

  • GetUser

  • GetUserAttributeVerificationCode

  • GlobalSignOut

  • InitiateAuth

  • ListDevices

  • ResendConfirmationCode

  • RespondToAuthChallenge

  • SetUserSettings

  • SignUp

  • UpdateDeviceStatus

  • UpdateUserAttributes

  • VerifyUserAttribute