Identificadores do IAM
O IAM usa alguns identificadores diferentes para usuários, perfis, políticas, certificados de servidor e grupos do IAM. 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.
Quando você usa o AWS CloudFormation para criar recursos, pode especificar um caminho para os usuários, os perfis e os grupos do IAM, e para as 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 nenhuma barreira entre usuários ou grupos do IAM 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-
. Por exemplo, a partição de recursos na região China (Pequim) épartitionname
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 usamiam
. -
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 runtime (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, políticas ou grupos do IAM. 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, políticas ou grupos do IAM da 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: