Identificadores do IAM - AWS Identity and Access Management

Identificadores do IAM

O IAM usa alguns identificadores diferentes para os usuários, grupos de usuários, funções, políticas e certificados de servidor. Esta seção descreve os identificadores e quando usar cada um deles.

Nomes amigáveis e caminhos

Ao criar um usuário, uma função, um grupo de usuários ou uma política, ou ao carregar um certificado de servidor, você atribui a ele um nome amigável. Exemplos incluem Bob, TestApp1, Desenvolvedores, ManageCredentialsPermissions ou ProdServerCert.

Se você usar a API do IAM ou a AWS Command Line Interface (AWS CLI) para criar recursos do IAM, poderá adicionar um caminho opcional. Você pode usar um único caminho ou aninhar vários caminhos como se fossem uma estrutura de pastas. Por exemplo, você pode usar o caminho aninhado /division_abc/subdivision_xyz/product_1234/engineering/ de acordo com a estrutura organizacional da empresa. Em seguida, você pode criar uma política para permitir que todos os usuários no caminho acessem a API do simulador de políticas. Para exibir esta política, consulte: IAM: acessar a API do simulador de política com base no caminho do usuário. Para obter informações sobre como especificar um nome simples, consulte a documentação da API do usuário. Para obter mais exemplos de como você pode usar caminhos, consulte ARNs do IAM.

Ao usar o AWS CloudFormation para criar recursos, você pode especificar um caminho para usuários, grupos de usuários e funções, além de políticas gerenciadas pelo cliente.

Se você tiver um usuário e um grupo de usuários no mesmo caminho, o IAM não colocará o usuário automaticamente nesse grupo de usuários. Por exemplo, você pode criar um grupo de usuários Desenvolvedores e especificar o caminho como /division_abc/subdivision_xyz/product_1234/engineering/. Se você criar um usuário chamado Bob e adicionar o mesmo caminho a ele, isso não colocará Bob automaticamente no grupo de usuários desenvolvedores. O IAM não impõe qualquer limite entre usuários ou grupos de usuários com base em seus caminhos. Usuários com caminhos diferentes podem usar os mesmos recursos se tiverem permissão para esses recursos. O número e o tamanho dos recursos do IAM em uma conta da AWS são limitados. Para ter mais informações, consulte IAM e cotas do AWS STS.

ARNs do IAM

A maioria dos recursos tem um nome amigável, por exemplo, um usuário chamado Bob ou um grupo de usuários chamado Developers. No entanto, a linguagem da política de permissões exige que você especifique o recurso ou recursos usando o seguinte formato de nome de recurso da Amazon (ARN).

arn:partition:service:region:account:resource

Em que:

  • partition identifica a partição do recurso. Para regiões padrão da AWS a partição é aws. Se você tem recursos em outras partições, a partição é aws-partitionname. Por exemplo, a partição de recursos na região China (Pequim) é aws-cn. Não é possível delegar acesso entre contas em partições diferentes.

  • service identifica o produto da AWS. Os recursos do IAM sempre usam iam.

  • region identifica a região do recurso. Para recursos do IAM, ela é sempre deixada em branco.

  • account especifica o ID da Conta da AWS sem hifens.

  • resource identifica o recurso específico pelo nome.

Você pode especificar ARNs do IAM e do AWS STS usando a sintaxe a seguir. A parte da região do ARN está em branco porque os recursos do IAM são globais.

Sintaxe:

arn:aws:iam::account:root arn:aws:iam::account:user/user-name-with-path arn:aws:iam::account:group/group-name-with-path arn:aws:iam::account:role/role-name-with-path arn:aws:iam::account:policy/policy-name-with-path arn:aws:iam::account:instance-profile/instance-profile-name-with-path arn:aws:sts::account:federated-user/user-name arn:aws:sts::account:assumed-role/role-name/role-session-name arn:aws:sts::account:self arn:aws:iam::account:mfa/virtual-device-name-with-path arn:aws:iam::account:u2f/u2f-token-id arn:aws:iam::account:server-certificate/certificate-name-with-path arn:aws:iam::account:saml-provider/provider-name arn:aws:iam::account:oidc-provider/provider-name

Muitos dos seguintes exemplos incluem caminhos na parte de recurso do ARN. Caminhos não podem ser criados ou manipulados no AWS Management Console. Para usar caminhos, você deve trabalhar com o recurso usando a API da AWS, a AWS CLI ou o Tools for Windows PowerShell.

Exemplos:

arn:aws:iam::123456789012:root arn:aws:iam::123456789012:user/JohnDoe arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/JaneDoe arn:aws:iam::123456789012:group/Developers arn:aws:iam::123456789012:group/division_abc/subdivision_xyz/product_A/Developers arn:aws:iam::123456789012:role/S3Access arn:aws:iam::123456789012:role/application_abc/component_xyz/RDSAccess arn:aws:iam::123456789012:role/aws-service-role/access-analyzer.amazonaws.com/AWSServiceRoleForAccessAnalyzer arn:aws:iam::123456789012:role/service-role/QuickSightAction arn:aws:iam::123456789012:policy/UsersManageOwnCredentials arn:aws:iam::123456789012:policy/division_abc/subdivision_xyz/UsersManageOwnCredentials arn:aws:iam::123456789012:instance-profile/Webserver arn:aws:sts::123456789012:federated-user/JohnDoe arn:aws:sts::123456789012:assumed-role/Accounting-Role/JaneDoe arn:aws:sts::123456789012:self arn:aws:iam::123456789012:mfa/JaneDoeMFA arn:aws:iam::123456789012:u2f/user/JohnDoe/default (U2F security key) arn:aws:iam::123456789012:server-certificate/ProdServerCert arn:aws:iam::123456789012:server-certificate/division_abc/subdivision_xyz/ProdServerCert arn:aws:iam::123456789012:saml-provider/ADFSProvider arn:aws:iam::123456789012:oidc-provider/GoogleProvider arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-west-2.amazonaws.com/id/a1b2c3d4567890abcdefEXAMPLE11111 arn:aws:iam::123456789012:oidc-provider/server.example.org

Os exemplos a seguir fornecem mais detalhes para ajudar você a entender o formato do ARN para diferentes tipos de recursos do IAM e do AWS STS.

  • Um usuário do IAM na conta:

    nota

    O nome de cada usuário do IAM é exclusivo. O nome de usuário não diferencia maiúsculas de minúsculas em situações como durante o processo de login, mas diferencia maiúsculas de minúsculas quando você o usa em uma política ou como parte de um ARN.

    arn:aws:iam::123456789012:user/JohnDoe
  • Outro usuário com um caminho que reflete um gráfico da organização:

    arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/JaneDoe
  • Um grupo de usuários do IAM:

    arn:aws:iam::123456789012:group/Developers
  • Um grupo de usuários do IAM com um caminho:

    arn:aws:iam::123456789012:group/division_abc/subdivision_xyz/product_A/Developers
  • Uma função do IAM:

    arn:aws:iam::123456789012:role/S3Access
  • Uma função vinculada a serviços:

    arn:aws:iam::123456789012:role/aws-service-role/access-analyzer.amazonaws.com/AWSServiceRoleForAccessAnalyzer
  • Uma função de serviço:

    arn:aws:iam::123456789012:role/service-role/QuickSightAction
  • Uma política gerenciada:

    arn:aws:iam::123456789012:policy/ManageCredentialsPermissions
  • Um perfil de instância que pode ser associado à uma instância do Amazon EC2:

    arn:aws:iam::123456789012:instance-profile/Webserver
  • Um usuário federado identificado no IAM como “Paulo”:

    arn:aws:sts::123456789012:federated-user/Paulo
  • A sessão ativa de alguém assumindo a função de "Accounting-Role", com um nome de sessão de função "Mary":

    arn:aws:sts::123456789012:assumed-role/Accounting-Role/Mary
  • Representa a própria sessão do chamador quando usada como recurso em uma chamada de API, como a API AWS STS SetContext, que opera na sessão de chamada:

    arn:aws:sts::123456789012:self
  • O dispositivo de autenticação multifator atribuído ao usuário chamado Jorge:

    arn:aws:iam::123456789012:mfa/Jorge
  • Um certificado de servidor:

    arn:aws:iam::123456789012:server-certificate/ProdServerCert
  • Um certificado de servidor com um caminho que reflete um gráfico da organização:

    arn:aws:iam::123456789012:server-certificate/division_abc/subdivision_xyz/ProdServerCert
  • Provedores de identidade (SAML e OIDC):

    arn:aws:iam::123456789012:saml-provider/ADFSProvider arn:aws:iam::123456789012:oidc-provider/GoogleProvider arn:aws:iam::123456789012:oidc-provider/server.example.org
  • Provedor de identidade OIDC com um caminho que reflete um URL do provedor de identidade OIDC do Amazon EKS:

    arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-west-2.amazonaws.com/id/a1b2c3d4567890abcdefEXAMPLE11111

Outro ARN importante é o ARN do usuário raiz. Embora esse não seja um recurso do IAM, você deve estar familiarizado com o formato desse ARN. Ele costuma ser usado no elemento Principal de uma política baseada em recursos.

  • A Conta da AWS exibe o seguinte:

    arn:aws:iam::123456789012:root

O exemplo a seguir mostra uma política que você pode atribuir a Richard para permitir que ele gerencie suas próprias chaves de acesso. Observe que o recurso é o usuário do IAM Richard.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageRichardAccessKeys", "Effect": "Allow", "Action": [ "iam:*AccessKey*", "iam:GetUser" ], "Resource": "arn:aws:iam::*:user/division_abc/subdivision_xyz/Richard" }, { "Sid": "ListForConsole", "Effect": "Allow", "Action": "iam:ListUsers", "Resource": "*" } ] }
nota

Ao usar ARNs para identificar recursos em uma política do IAM, você pode incluir variáveis de política. As variáveis de política podem incluir espaços reservados para informações de tempo de execução (como o nome do usuário) como parte do ARN. Para obter mais informações, consulte Elementos de política do IAM: variáveis e etiquetas

Uso de curingas e caminhos em ARNs

Você pode usar caracteres curinga na parte recurso do ARN para especificar vários usuários, grupos de usuários ou políticas. Por exemplo, para especificar todos os usuários trabalhando em product_1234, você usa:

arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/product_1234/*

Se tiver usuários cujos nomes começam com a string app_, você pode se referir a todos eles com o seguinte ARN:

arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/product_1234/app_*

Para especificar todos os usuários, grupos de usuários ou políticas na sua Conta da AWS, use um caractere curinga após a parte user/, group/ ou policy/ do ARN, respectivamente.

arn:aws:iam::123456789012:user/* arn:aws:iam::123456789012:group/* arn:aws:iam::123456789012:policy/*

Se você especificar o seguinte ARN para um usuário arn:aws:iam::111122223333:user/*, ele corresponderá a ambos os exemplos a seguir.

arn:aws:iam::111122223333:user/JohnDoe arn:aws:iam::111122223333:user/division_abc/subdivision_xyz/JaneDoe

Mas, se você especificar o ARN a seguir para um usuário arn:aws:iam::111122223333:user/division_abc*, ele corresponderá ao segundo exemplo, mas não ao primeiro.

arn:aws:iam::111122223333:user/JohnDoe arn:aws:iam::111122223333:user/division_abc/subdivision_xyz/JaneDoe

Não use um curinga na parte user/, group/ ou policy/ do ARN. Por exemplo, o IAM não permite o seguinte:

arn:aws:iam::123456789012:u*
exemplo Exemplo de uso de caminhos e ARNs para um grupo de usuários baseado em projeto

Caminhos não podem ser criados ou manipulados no AWS Management Console. Para usar caminhos, você deve trabalhar com o recurso usando a API da AWS, a AWS CLI ou o Tools for Windows PowerShell.

Neste exemplo, Jules do grupo de usuários Marketing_Admin cria um grupo de usuários baseado em projeto no caminho /marketing/. Jules atribui usuários de diferentes partes da empresa ao grupo de usuários. Este exemplo mostra que o caminho de um usuário não está relacionado aos grupos de usuários em que o usuário está.

O grupo de marketing tem um novo produto para lançamento, portanto, Jules cria um novo grupo de usuários no caminho /marketing/ chamado Widget_Launch. Jules então atribui a seguinte política ao grupo de usuários, que fornece ao grupo de usuários acesso a objetos na parte do example_bucket designada para esse lançamento em particular.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::example_bucket/marketing/newproductlaunch/widget/*" }, { "Effect": "Allow", "Action": "s3:ListBucket*", "Resource": "arn:aws:s3:::example_bucket", "Condition": {"StringLike": {"s3:prefix": "marketing/newproductlaunch/widget/*"}} } ] }

Jules então atribui os usuários que estão trabalhando neste lançamento ao grupo de usuários. Isso inclui Patrícia e Eli do caminho /marketing/. E também inclui Chris e Chloe do caminho /sales/ e Alice e Jim do caminho /legal/.

Identificadores exclusivos

Quando o IAM cria um usuário, grupo de usuários, função, política, perfil de instância ou certificado de servidor, ele atribui a cada recurso um ID exclusivo. O ID exclusivo é semelhante a:

AIDAJQABLZS4A3QDU576Q

Na maioria dos casos, use nomes amigáveis e ARNs ao trabalhar com recursos do IAM. Dessa forma, você não precisa saber o ID exclusivo de um recurso específico. No entanto, o ID exclusivo às vezes pode ser útil quando não é prático usar nomes amigáveis.

Um exemplo reutiliza nomes amigáveis na sua Conta da AWS. Dentro de sua conta, um nome amigável para um usuário, um grupo de usuários, função ou uma política deve ser exclusivo. Por exemplo, você pode criar um usuário do IAM chamado John. Sua empresa usa o Amazon S3 e tem um bucket com pastas para cada funcionário. O usuário do IAM John é membro de um grupo de usuários do IAM chamado User-S3-Access com permissões que permitem aos usuários acessar apenas suas próprias pastas no bucket. Para obter um exemplo de como você pode criar uma política baseada em identidade que permita que usuários do IAM acessem seu próprio objeto de bucket no S3 usando o nome amigável de usuários, consulte Amazon S3: permite que usuários do IAM acessem seus diretórios base do S3 de forma programática e no console.

Suponha que o funcionário chamado John deixe sua empresa e você exclua o usuário do IAM correspondente chamado John. Posteriormente, outro funcionário chamado John começa a trabalhar e você cria um novo usuário do IAM chamado John. Você adiciona o novo usuário do IAM chamado John ao grupo de usuários do IAM User-S3-Access existente. Se a política associada ao grupo de usuários especificar o nome amigável de usuário do IAM John, ela permitirá que o novo John acesse informações deixadas pelo antigo John.

Em geral, recomendamos que você especifique o ARN do recurso em suas políticas em vez de seu ID exclusivo. No entanto, todo usuário do IAM tem um ID exclusivo, mesmo se você criar um novo usuário do IAM que reutilize um nome amigável que você excluiu antes. No exemplo, o antigo usuário do IAM John e o novo usuário do IAM John têm IDs exclusivos diferentes. Você pode criar políticas baseadas em recurso que concedem acesso por ID exclusivo e não apenas por nome de usuário. Isso reduz a chance de você, inadvertidamente, conceder acesso a informações que um funcionário não deve ter.

O exemplo a seguir mostra como é possível especificar IDs exclusivos no elemento Principal de uma política baseada em recursos.

"Principal": { "AWS": [ "arn:aws:iam::111122223333:role/role-name", "AIDACKCEVSQ6C2EXAMPLE", "AROADBQP57FF2AEXAMPLE" }

O exemplo a seguir mostra como é possível especificar IDs exclusivos no elemento Condition de uma política usando uma chave de condição global aws:userid.

"Condition": { "StringLike": { "aws:userId": [ "AIDACKCEVSQ6C2EXAMPLE", "AROADBQP57FF2AEXAMPLE:role-session-name", "AROA1234567890EXAMPLE:*", "111122223333" ] } }

Outro exemplo em que IDs de usuário podem ser úteis é se você mantiver seu próprio banco de dados (ou outro armazenamento) de informações de perfil ou de usuário do IAM. O ID exclusivo pode fornecer um identificador exclusivo para cada perfil ou usuário do IAM criado. Esse é o caso quando há perfis ou usuários do IAM que reutilizam um nome, como no exemplo anterior.

Noções básicas sobre prefixos exclusivos de IDs

O IAM usa os prefixos a seguir para indicar a qual tipo de recurso cada ID exclusivo se aplica. Os prefixos podem variar com base em quando foram criados.

Prefixo Tipo de recurso
ABIA Token de portador de serviço do AWS STS
ACCA Credencial específica de contexto

AGPA

Grupo de usuários

AIDA

IAM user (Usuário do IAM)

AIPA Perfil de instância do Amazon EC2
AKIA Chave de acesso
ANPA

Política gerenciada

ANVA

Versão em uma política gerenciada

APKA Chave pública
AROA Função
ASCA Certificado

ASIA

IDs de chave de acesso temporárias (AWS STS) usam esse prefixo, mas são exclusivas somente em combinação com a chave de acesso secreta e o token da sessão.

Obter o identificador exclusivo

O ID exclusivo para um recurso do IAM não está disponível no console do IAM. Para obter o ID exclusivo, você pode usar os seguintes comandos da AWS CLI ou chamadas de API do IAM.

AWS CLI:

API do IAM: