As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Acesse o Amazon Cognito usando um endpoint de interface (AWS PrivateLink)
Você pode usar AWS PrivateLink para criar uma conexão privada entre sua VPC e o Amazon Cognito. Você pode acessar o Amazon Cognito como se estivesse em sua VPC, sem o uso de um gateway de internet, dispositivo NAT, conexão VPN ou conexão. Direct Connect As instâncias em sua VPC não precisam de endereços IP públicos para acessar o Amazon Cognito.
Estabeleça essa conectividade privada criando um endpoint de interface, habilitado pelo AWS PrivateLink. Criaremos um endpoint de interface de rede em cada sub-rede que você habilitar para o endpoint de interface. Essas são interfaces de rede gerenciadas pelo solicitante que servem como ponto de entrada para o tráfego destinado ao Amazon Cognito.
Para saber mais, consulte Acessar os Serviços da AWS pelo AWS PrivateLink no Guia do AWS PrivateLink .
Importante
Atualmente, não há suporte para os seguintes tipos de autenticação por meio de AWS PrivateLink:
-
Autorização de máquina para máquina (M2M) com o fluxo de credenciais do cliente OAuth 2.0
-
Sign-in com login gerenciado e a interface de usuário hospedada clássica.
Fluxos de autenticação para AWS PrivateLink integração
A tabela a seguir descreve os fluxos de autenticação disponíveis para clientes em VPCs e as políticas do IAM que você pode aplicar para controlá-los. As políticas que você pode avaliar nas solicitações aos grupos de usuários são políticas de controle de recursos (RCPs), políticas de endpoint de VPC e políticas baseadas em identidade.
| Recurso | Fluxo de autenticação | Políticas avaliadas quando o cliente transita por um endpoint VPC | Políticas avaliadas quando a origem do cliente é pública |
|---|---|---|---|
| Grupo de usuários | Login gerenciado e login clássico com interface de usuário hospedada | Nenhum (sem acesso) 1 | Nenhum 2 |
| Grupo de usuários | Machine-to-machine autorização | Nenhum (sem acesso) 1 | Nenhum 2 |
| Grupo de usuários | Solicitações não autenticadas do SDK e da API REST | RCPs e políticas de endpoint de VPC 3 | RCPs |
| Grupo de usuários | Solicitações autenticadas do SDK e da API REST SigV4 Server-side opções de autenticação | RCPs, políticas de endpoint de VPC, políticas baseadas em identidade 3 | RCPs, políticas baseadas em identidade |
| Grupo de identidades | Solicitações não autenticadas do SDK e da API REST (fluxos básicos e aprimorados) | RCPs e políticas de endpoint de VPC | RCPs |
| Grupo de identidades | Solicitações autenticadas do SDK e da API REST SigV4 (fluxo autenticado pelo desenvolvedor) O fluxo de autenticação autenticado pelo desenvolvedor | RCPs, políticas baseadas em identidade | RCPs, políticas baseadas em identidade |
1 Os endpoints VPC não aceitam solicitações de domínios de grupos de usuários. Se o cliente tiver uma rota para a Internet, o NAT será aplicado, tornando a origem pública.
2 A existência de um domínio de grupo de usuários impede a conclusão de qualquer solicitação de grupo de usuários que transitam por um endpoint de VPC. Qualquer cliente pode usar caminhos de transporte público somente para o domínio do grupo de usuários e os endpoints do serviço de API, tornando o endpoint VPC inutilizável para o grupo de usuários. Grupos de usuários com domínios atribuídos são incompatíveis com o. AWS PrivateLink
3 O grupo de usuários não deve ter um domínio atribuído.
Modos operacionais para AWS PrivateLink
Os modelos de implementação de exemplo a seguir são compatíveis com o Amazon Cognito AWS PrivateLink e o Amazon Cognito.
| Recurso | Implementação | Ações |
|---|---|---|
| Grupo de usuários | Aplicativo SDK ou API REST totalmente privado |
|
| Grupo de usuários | Públicos e privados |
|
| Grupo de usuários | Servidor de autorização OAuth 2.0 privado ou público |
|
| Grupo de identidades | Totalmente privado |
|
| Grupo de identidades | Públicos e privados |
|
Considerações sobre o Amazon Cognito
Antes de configurar um endpoint de interface para o Amazon Cognito, consulte Considerações no Guia. AWS PrivateLink O Amazon Cognito oferece suporte à realização de chamadas para todas as ações da API do Amazon Cognito por meio do endpoint da interface. Para obter mais informações sobre essas operações, consulte a Referência da API de grupos de usuários do Amazon Cognito e a Referência da API de identidades federadas do Amazon Cognito.
Grupos de usuários e AWS PrivateLink
Você pode fazer solicitações para todas as operações da API de grupos de usuários por meio do endpoint da interface, mas não para operações que seu aplicativo solicita do servidor de autorização OAuth 2.0 do grupo de usuários, por exemplo, concessões de credenciais de cliente e login gerenciado.
A API de grupos de cognito-idp usuários tem operações de API não autenticadas, autenticadas e autorizadas por token. Você pode conceder permissões para operações autenticadas nas políticas de controle de recursos e endpoints da VPC. Você também pode conceder permissões para operações não autenticadas e autorizadas por token, diferentemente das políticas baseadas em identidade. Os tipos de políticas de controle de endpoints e recursos da VPC são capazes de avaliar, negar ou permitir solicitações para operações que, de outra forma, seriam públicas.
As solicitações para endpoints de domínio também são públicas, mas você não pode avaliá-las nas políticas. O DNS privado da VPC não encaminha solicitações de domínios de grupos de usuários para seu endpoint de VPC. Você só pode fazer solicitações de serviços de domínio por meio de caminhos públicos da Internet. Para obter mais informações, consulte Efeitos das políticas nas operações do pool de usuários.
Operações compatíveis
Os sistemas em uma VPC podem enviar solicitações para ações de API do grupo de usuários, mas não para endpoints de domínio do grupo de usuários. Os fluxos de trabalho OpenID Connect (OIDC) e OAuth 2.0 que usam endpoints de domínio, por exemplo, máquina a máquina (M2M), login federado e concessões de código de autorização, estão inacessíveis por meio de endpoints VPC. O endpoint de redirecionamento e autorização As políticas de endpoint da VPC não têm efeito sobre esses fluxos de trabalho HTTP e não podem processá-los. As solicitações para endpoints de domínio de dentro de uma VPC sempre falham no endpoint da interface, mas continuam disponíveis por meio de DNS e roteamento públicos quando você configura endpoints de VPC para seus grupos de usuários.
Para evitar a atribuição de domínios a partir de sistemas em uma VPC, o Amazon Cognito bloqueia CreateUserPoolDomain solicitações no endpoint da interface. Isso evita a adição de domínios aos seus grupos de usuários a partir de sistemas que estão em uma VPC. Para evitar a adição de um domínio de todos os sistemas, aplique uma política de controle de recursos (RCP) como o exemplo a seguir ao seu Conta da AWS. Essa política bloqueia a CreateUserPoolDomain ação contra o grupo de usuários especificado.
{ "Version": "2012-10-17", "Statement": [ { "Principal": "*", "Effect": "Deny", "Action": [ "cognito-idp:CreateUserPoolDomain" ], "Resource": "arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_EXAMPLE" } ] }
Seu grupo de usuários pode ter um domínio e, em todos os casos, esse domínio não está disponível por meio AWS PrivateLink dele. Todas as solicitações de API SDK-based do grupo de usuários para endpoints de cognito-idp serviço aceitam solicitações por meio de AWS PrivateLink, com exceção deCreateUserPoolDomain. Os endpoints do serviço de API do pool de usuários e os endpoints do domínio permanecem sempre acessíveis por meio de caminhos públicos da Internet. Para abordar o acesso de fontes públicas, implemente ACLs AWS WAF da web.
Efeitos das políticas nas operações do pool de usuários
Todas as operações de API do grupo de usuários, mesmo aquelas que normalmente são públicas e não autenticadas, podem ser controladas nas políticas de endpoint da VPC e nas políticas de controle de recursos (RCPs). Você também pode aplicar restrições ao acesso ao grupo de usuários em políticas baseadas em identidade com chaves de condição da VPC. Somente solicitações que incluem informações de autenticação no formato SigV4 podem ser controladas em políticas baseadas em identidade. O login gerenciado e as operações clássicas de interface de usuário hospedada são uma categoria separada e não são elegíveis para o trânsito de VPC ou para a aplicação de qualquer tipo de política em suas ações.
Operações não autenticadas
As operações do Amazon Cognito para aplicativos do lado do cliente não são autenticadas com o SigV4. As operações de exemplo estão na política de exemplo emCriar uma política de endpoint para o endpoint de interface. Outros exemplos de operações não autenticadas são e. GetUser AssociateSoftwareToken Quando você adiciona essas operações às políticas baseadas em identidade, elas não têm efeito. No entanto, você pode permitir ou restringir o acesso a essas ações nas políticas e RCPs de endpoint da VPC.
As operações não autenticadas não estão associadas a um principal do IAM. Sua política de endpoint de VPC ou RCP deve permitir que todos os diretores realizem essas ações.
Operações autenticadas
As operações de API para administração de grupos de usuários e autenticação do lado do servidor são autenticadas com SigV4. Para operações autenticadas, você pode restringir os diretores com políticas de endpoint que você aplica ao endpoint da VPC, políticas de controle de recursos em sua organização e políticas baseadas em identidade que você aplica aos diretores. Identity-based e as políticas de controle de recursos estão VPC-aware com chaves de condição baseadas em rede, como e. aws:SourceVpc aws:SourceVpce
Para obter mais informações sobre classes administrativas, do lado do servidor e do lado do cliente de operações de API para grupos de usuários, consulte. Modelos de autorização para autenticação de API e SDK
Grupos de identidade e AWS PrivateLink
Os pools de identidade do Amazon Cognito oferecem suporte a todas as operações de API por meio de AWS PrivateLink.
Tópicos
Operações compatíveis
Todas as operações da API de grupos de identidades são suportadas por meio do endpoint da interface. Os grupos de identidades não têm endpoints de domínio e não estão sujeitos às mesmas limitações. No entanto, os grupos de identidades têm considerações específicas para controles de acesso baseados em rede devido à sua integração com o. AWS STS
Limitações do contexto de rede com AWS STS integração
Os grupos de identidades usam AWS STS AssumeRoleWithWebIdentity operações para fornecer AWS credenciais temporárias. Quando os grupos de identidades AWS STS AWS PrivateLink acessam o fluxo de autenticação aprimorado, as chaves de contexto de rede curtem aws:SourceIpaws:SourceVpc, e aws:SourceVpce contêm valores da infraestrutura de serviço dos grupos de identidades, não do contexto de rede do seu aplicativo.
Se suas políticas de confiança de função ou políticas de controle de recursos (RCPs) do IAM usarem chaves de condição baseadas em rede para restringir o acesso, as operações de grupos de identidades poderão ser negadas inesperadamente. Para resolver essa limitação, você pode usar uma das seguintes abordagens:
Etiquetas principais para identificação de serviços
Marque as funções do IAM usadas com grupos de identidades e modifique suas políticas para permitir operações quando o principal tiver a tag apropriada. Primeiro, adicione uma tag à sua função no grupo de identidades:
aws iam tag-role \ -\-role-nameMyIdentityPoolRole\ -\-tags Key=CognitoServiceCall,Value=true
Em seguida, modifique suas políticas baseadas em rede para permitir diretores marcados. Por exemplo, em um RCP:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "sts:AssumeRoleWithWebIdentity", "Resource": "*", "Condition": { "NotIpAddress": { "aws:SourceIp": ["allowed-ip-ranges"] }, "StringNotEqualsIfExists": { "aws:ResourceTag/CognitoServiceCall": "true" } } } ] }
Service-specific chaves de contexto
Os grupos de identidades fornecem chaves de contexto específicas do serviço para autorização em nível de recurso em políticas de endpoints e RCPs de VPC. Com essas chaves de contexto, você pode ativar o controle de acesso refinado e distinguir entre usuários autenticados e não autenticados nas políticas.
Chaves de contexto específicas do serviço disponíveis para operações não SIGv4, como GetId, GetCredentialsForIdentity, GetOpenIdToken, UnlinkIdentity
-
cognito-identity-unauth:IdentityPoolArn- Filtra o acesso pelo pool de identidades ARN para usuários não autenticados -
cognito-identity-unauth:AccountId- Filtra o acesso pelo Conta da AWS ID para usuários não autenticados -
cognito-identity-auth:IdentityPoolArn- Filtra o acesso pelo pool de identidade ARN para usuários autenticados -
cognito-identity-auth:AccountId- Filtra o acesso pelo Conta da AWS ID para usuários autenticados
Chaves de contexto específicas do serviço disponíveis para operações SigV4, como DeleteIdentities and DescribeIdentity
-
cognito-identity:IdentityPoolArn- Filtra o acesso pelo pool de identidade ARN
Você pode usar essas chaves de contexto nas políticas de endpoint da VPC para restringir o acesso com base no status da autenticação, conforme demonstrado no exemplo a seguir:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": [ "cognito-identity:GetId", "cognito-identity:GetCredentialsForIdentity" ], "Resource": "*", "Condition": { "StringEquals": { "cognito-identity-unauth:IdentityPoolArn": "arn:aws:cognito-identity:us-east-1:123456789012:identitypool/us-east-1:12345678-ffff-ffff-ffff-123456" } } } ] }
Controle do acesso com políticas de controle de recursos
O Amazon Cognito suporta o controle do acesso aos seus recursos com políticas de controle de recursos (RCPs). Com chaves de condição baseadas em rede, os RCPs podem definir as redes e ações que são permitidas para AWS PrivateLink acessar seus grupos de usuários e grupos de identidades. As Action declarações nos RCPs podem controlar o acesso às operações de API de grupos de usuários autenticados e não autenticados.
Por exemplo, o exemplo de política a seguir impede o acesso a todos os grupos de usuários de uma VPC específica.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyCognitoAccessOutsideVPC", "Effect": "Deny", "Principal": "*", "Action": "cognito-idp:*", "Resource": "*", "Condition": { "StringNotEqualsIfExists": { "aws:SourceVpc": "vpc-02d6770f46ef1653b" } } } ] }
Crie um endpoint de interface para o Amazon Cognito
Você pode criar um endpoint de interface para o Amazon Cognito usando o console do Amazon VPC ou o AWS Command Line Interface ().AWS CLI Para obter mais informações, consulte Criar um endpoint de interface no Guia do usuário do AWS PrivateLink .
Crie um endpoint de interface para grupos de usuários do Amazon Cognito usando o seguinte nome de serviço:
com.amazonaws.region.cognito-idp
Crie um endpoint de interface para grupos de identidade do Amazon Cognito usando o seguinte nome de serviço:
com.amazonaws.region.cognito-identity
Se você habilitar o DNS privado para o endpoint da interface, poderá fazer solicitações de API para o Amazon Cognito usando seu nome de DNS regional padrão. Por exemplo, cognito-idp.us-east-1.amazonaws.com para grupos de usuários e grupos cognito-identity.us-east-1.amazonaws.com de identidades.
Criar uma política de endpoint para o endpoint de interface
Uma política de endpoint é um recurso do IAM que pode ser anexado ao endpoint de interface. A política de endpoint padrão permite acesso total ao Amazon Cognito por meio do endpoint da interface. Para controlar o acesso permitido ao Amazon Cognito a partir da sua VPC, anexe uma política de endpoint personalizada ao endpoint da interface.
Uma política de endpoint especifica as seguintes informações:
-
As entidades principais que podem realizar ações (Contas da AWS, usuários do IAM e perfis do IAM).
-
As ações que podem ser realizadas.
-
Os recursos nos quais as ações podem ser executadas.
-
As condições que devem ser atendidas antes que a solicitação seja permitida ou negada.
Para obter mais informações, consulte Controlar o acesso aos serviços usando políticas de endpoint no Guia do AWS PrivateLink .
Exemplo: política de endpoint de VPC para ações de grupos de usuários
Veja a seguir um exemplo de uma política de endpoint personalizada para grupos de usuários. Quando você anexa essa política ao seu endpoint de interface, ela concede acesso às ações do grupo de usuários listadas para todos os diretores em todos os recursos.
{ "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": "arn:aws:iam::123456789012:assumed-role/MyWebAppRole/MyWebAppSession" }, "Effect": "Allow", "Action": [ "cognito-idp:AdminInitiateAuth", "cognito-idp:AdminRespondToAuthChallenge", "cognito-idp:AdminSetUserPassword" ], "Resource":"arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_EXAMPLE" }, { "Effect": "Allow", "Action": [ "cognito-idp:InitiateAuth", "cognito-idp:RespondToAuthChallenge", "cognito-idp:ForgotPassword", "cognito-idp:ConfirmForgotPassword" ], "Resource":"arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_EXAMPLE" } ] }
Exemplo: política de endpoint de VPC para ações de pool de identidades
Veja a seguir um exemplo de uma política de endpoint personalizada para grupos de identidades. Essa política usa chaves de contexto específicas do serviço para restringir o acesso a usuários autenticados de um grupo de identidades específico.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": [ "cognito-identity:GetId", "cognito-identity:GetCredentialsForIdentity", "cognito-identity:GetOpenIdToken" ], "Resource": "*", "Condition": { "StringEquals": { "cognito-identity-auth:IdentityPoolArn": "arn:aws:cognito-identity:us-east-1:123456789012:identitypool/us-east-1:12345678-ffff-ffff-ffff-123456" } } } ] }
Crie uma política baseada em identidade para AWS PrivateLink operações
Identity-basedpolíticas são recursos do IAM que você pode anexar aos AWS diretores. Você pode controlar o acesso ao Amazon Cognito por meio de endpoints VPC com políticas de operações baseadas em identidade. IAM-authenticated Ao contrário das políticas de endpoint, você não pode configurar permissões para operações não autenticadas em políticas baseadas em identidade. As operações autenticadas ou administrativas exigem autorização do Signature Versão 4. Para grupos de usuários, as operações autenticadas incluem solicitações de autenticação do lado do servidor AdminInitiateAuth e solicitações administrativas, como. UpdateUserPool Para grupos de identidades, as operações autenticadas incluem solicitações administrativas como DeleteIdentities e. DescribeIdentity
Uma política baseada em identidade especifica as seguintes informações:
-
As ações que podem ser realizadas.
-
Os recursos nos quais as ações podem ser executadas.
-
As condições que devem ser atendidas antes que a solicitação seja permitida ou negada.
Exemplo: política baseada em identidade para autenticação do lado do servidor do pool de usuários
O exemplo de política a seguir concede acesso às ações do grupo de usuários listadas no grupo de usuários especificado, a partir do endpoint especificado. Aplique essa política à função assumida do IAM para seu aplicativo web.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cognito-idp:AdminInitiateAuth", "cognito-idp:AdminRespondToAuthChallenge", "cognito-idp:AdminSetUserPassword" ], "Resource": "arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_EXAMPLE", "Condition": { "StringEquals": { "aws:SourceVpce": "vpce-1a2b3c4d" } } } ] }
Exemplo: política baseada em identidade para operações administrativas de grupos de identidades
O exemplo de política a seguir concede acesso às ações administrativas do pool de identidades do endpoint VPC especificado. Aplique essa política ao principal do IAM que precisa realizar a administração do pool de identidades.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cognito-identity:DeleteIdentities", "cognito-identity:DescribeIdentity" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceVpce": "vpce-1a2b3c4d" }, "StringEquals": { "cognito-identity:IdentityPoolArn": "arn:aws:cognito-identity:us-east-1:123456789012:identitypool/us-east-1:12345678-ffff-ffff-ffff-123456" } } } ] }