Autenticação e controle de acesso para o AWS CodeCommit - AWS CodeCommit

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á.

Autenticação e controle de acesso para o AWS CodeCommit

O acesso ao AWS CodeCommit requer credenciais. Essas credenciais devem ter permissões para acessar os recursos da AWS, como repositórios do CodeCommit e o usuário do IAM que você usa para gerenciar suas credenciais do Git ou a chave pública SSH que você usa para estabelecer conexões com o Git. As seções a seguir fornecem detalhes sobre como você pode usar o AWS Identity and Access Management (IAM) e o CodeCommit para garantir o acesso aos recursos:

Autenticação

Como os repositórios do CodeCommit se baseiam no Git e oferecem suporte à funcionalidade básica do Git, incluindo as credenciais do Git, recomendamos que você use um usuário do IAM ao trabalhar com o CodeCommit. Você pode acessar o CodeCommit com outros tipos de identidade, mas os outros tipos de identidade estão sujeitos a limitações, conforme descrito abaixo.

Tipos de identidade:

  • Usuário do IAM: um usuário do IAM é uma identidade na sua conta da Amazon Web Services com permissões personalizadas específicas. Por exemplo, um usuário do IAM pode ter permissões para criar e gerenciar credenciais do Git para acessar repositórios do CodeCommit. Este é o tipo de usuário recomendado para trabalhar com o CodeCommit. Você pode usar uma senha e um nome de usuário do IAM para fazer login em páginas da Web seguras da AWS, como AWS Management Console, fóruns de discussão da AWS ou o AWS Support Center.

    É possível gerar credenciais do Git ou associar chaves públicas SSH com seu usuário do IAM, ou ainda instalar e configurar o git-remote-codecommit. Essas são as formas mais fáceis de configurar o Git para trabalhar com seus repositórios do CodeCommit. Com as credenciais do Git, você gera um nome de usuário e senha estáticos no IAM. Essas credenciais são usadas para conexões HTTP com o Git e qualquer outra ferramenta de terceiros com suporte para a autenticação usando o nome de usuário e a senha do Git. Com conexões SSH, você cria arquivos de chave pública e privada em sua máquina local que o Git e o CodeCommit usam para a autenticação SSH. Você associa a chave pública com o usuário do IAM e armazena a chave privada no computador local. O git-remote-codecommit estende o próprio Git e não requer a configuração das credenciais do Git para o usuário.

    Além disso, você pode gerar chaves de acesso para cada usuário. Use chaves de acesso ao acessar serviços da AWS de forma programática, seja com um dos SDKs da AWS ou usando a AWS Command Line Interface (AWS CLI). As ferramentas de SDK e de CLI usam as chaves de acesso para o cadastramento criptográfico das suas solicitações. Se você não utilizar ferramentas da AWS, cadastre as solicitações você mesmo. O CodeCommit é compatível com o Signature Version 4, um protocolo para autenticar solicitações de API de entrada. Para obter mais informações sobre a autenticação de solicitações, consulte Processo de cadastramento do Signature versão 4 na Referência geral da AWS.

  • Usuário raiz da conta da Amazon Web Services: ao se fazer login na AWS, você fornece um endereço de e-mail e senha associados à sua conta da Amazon Web Services. Estas são suas credenciais raiz e elas fornecem acesso total a todos os seus recursos da AWS. Alguns recursos do CodeCommit não estão disponíveis para usuários da conta raiz. Além disso, a única maneira de usar o Git com sua conta raiz é instalar e configurar git-remote-codecommit (recomendado) ou configurar o assistente de credenciais da AWS, que está incluído na AWS CLI. Você não pode usar as credenciais do Git ou os pares de chaves público/privada SSH com o usuário da sua conta raiz. Por esses motivos, não recomendamos usar o usuário da conta raiz ao interagir com o CodeCommit.

    Importante

    Por motivos de segurança, recomendamos que você use as credenciais raiz para criar somente um usuário administrador, que é um usuário do IAM com permissões totais à sua conta da AWS. Em seguida, você pode usar esse usuário administrador para criar outros usuários e funções IAM com permissões limitadas. Para mais informações, consulte Melhores práticas do IAM e Criar um grupo e um usuário administrador no Guia do usuário do IAM.

  • IAM Identity Center e usuários no IAM Identity Center: AWS IAM Identity Center expande os recursos do AWS Identity and Access Management para fornecer um local centralizado que reúne a administração de usuários e o acesso deles a Contas da AWS e aplicações na nuvem. Embora seja recomendado para a maioria dos usuários que trabalham com a AWS, o IAM Identity Center não fornece mecanismos para credenciais do Git ou pares de chaves SSH. Esses usuários podem instalar e configurar git-remote-codecommit para clonar localmente os repositórios do CodeCommit, mas nem todos os ambientes de desenvolvimento integrados (IDEs) são compatíveis com clonagem, pushing ou pulling com o git-remote-codecommit.

    Como prática recomendada, exija que os usuários, inclusive os que precisam de acesso de administrador, usem a federação com um provedor de identidades para acessar Serviços da AWS usando credenciais temporárias.

    Identidade federada é um usuário de seu diretório de usuários corporativos, um provedor de identidades da web AWS Directory Service, o , o diretório do Centro de Identidade ou qualquer usuário que acesse os Serviços da AWS usando credenciais fornecidas por meio de uma fonte de identidade. Quando as identidades federadas acessam Contas da AWS, elas assumem perfis que fornecem credenciais temporárias.

    Para o gerenciamento de acesso centralizado, recomendamos usar o .AWS IAM Identity Center Você pode criar usuários e grupos no Centro de Identidade do IAM ou se conectar e sincronizar com um conjunto de usuários e grupos em sua própria fonte de identidade para uso em todas as suas Contas da AWS e aplicações. Para obter mais informações sobre o Centro de Identidade do IAM, consulte O que é o Centro de Identidade do IAM? no Guia do usuário do AWS IAM Identity Center.

  • Perfil do IAM: como um usuário do IAM;, um perfil do IAM é uma identidade do IAM que você pode criar na sua conta para conceder permissões específicas.

    Um perfil do IAM é uma identidade dentro da Conta da AWS que tem permissões específicas. Ele é semelhante a um usuário do IAM, mas não está associado a uma pessoa específica. É possível assumir temporariamente um perfil do IAM no AWS Management Console alternando perfis. É possível assumir um perfil chamando uma operação de API da AWS CLI ou da AWS, ou usando um URL personalizado. Para obter mais informações sobre métodos para o uso de perfis, consulte Uso de funções do IAM no Guia do usuário do IAM.

    Perfis do IAM com credenciais temporárias são úteis nas seguintes situações:

    • Acesso de usuário federado: para atribuir permissões a identidades federadas, você pode criar um perfil e definir permissões para ele. Quando uma identidade federada é autenticada, essa identidade é associada ao perfil e recebe as permissões definidas pelo mesmo. Para obter mais informações sobre perfis para federação, consulte Criar uma função para um provedor de identidade de terceiros no Guia do usuário do IAM. Se você usar o IAM Identity Center, deverá configurar um conjunto de permissões. Para controlar o que suas identidades podem acessar após a autenticação, o Centro de identidade do IAM correlaciona o conjunto de permissões a um perfil no IAM. Para obter informações sobre conjuntos de permissões, consulte Conjuntos de permissões no Guia do usuário do AWS IAM Identity Center.

    • Permissões temporárias para usuários do IAM: um usuário ou um perfil do IAM pode assumir um perfil do IAM para obter temporariamente permissões diferentes para uma tarefa específica.

    • Acesso entre contas: é possível usar um perfil do IAM para permitir que alguém (uma entidade principal confiável) em outra conta acesse recursos em sua conta. Os perfis são a principal forma de conceder acesso entre contas. No entanto, alguns Serviços da AWS permitem que você anexe uma política diretamente a um atributo (em vez de usar um perfil como proxy). Para saber a diferença entre perfis e políticas baseadas em atributo para acesso entre contas, consulte Como os perfis do IAM diferem das políticas baseadas em atributo no Guia do usuário do IAM.

    • Acesso entre serviços: alguns Serviços da AWS usam atributos em outros Serviços da AWS. Por exemplo, quando você faz uma chamada em um serviço, é comum que esse serviço execute aplicações no Amazon EC2 ou armazene objetos no Amazon S3. Um serviço pode fazer isso usando as permissões do principal de chamada, usando um perfil de serviço ou um perfil vinculado ao serviço.

      • Encaminhamento de sessões de acesso (FAS): qualquer pessoa que utilizar uma função ou usuário do IAM para realizar ações na AWS é considerada uma entidade principal. Ao usar alguns serviços, você pode executar uma ação que inicia outra ação em um serviço diferente. O recurso FAS utiliza as permissões da entidade principal que chama um AWS service (Serviço da AWS), combinadas às permissões do AWS service (Serviço da AWS) solicitante, para realizar solicitações para serviços downstream. As solicitações de FAS só são feitas quando um serviço recebe uma solicitação que exige interações com outros Serviços da AWS ou com recursos para serem concluídas. Nesse caso, você precisa ter permissões para executar ambas as ações. Para obter detalhes da política ao fazer solicitações de FAS, consulte Encaminhar sessões de acesso.

      • Perfil de serviço: um perfil de serviço é um perfil do IAM que um serviço assume para realizar ações em seu nome. Um administrador do IAM pode criar, modificar e excluir um perfil de serviço do IAM. Para obter mais informações, consulte Criar um perfil para delegar permissões a um AWS service (Serviço da AWS) no Guia do usuário do IAM.

      • Função vinculada ao serviço: uma função vinculada a serviço é um tipo de função de serviço vinculada a um AWS service (Serviço da AWS). O serviço pode assumir o perfil para executar uma ação em seu nome. Os perfis vinculados ao serviço aparecem em sua Conta da AWS e são de propriedade do serviço. Um administrador do IAM pode exibir, mas não pode editar as permissões para perfis vinculados ao serviço.

    • Aplicações em execução no Amazon EC2: é possível usar um perfil do IAM para gerenciar credenciais temporárias para aplicações em execução em uma instância do EC2 e fazer solicitações da AWS CLI ou da AWS API. É preferível fazer isso a armazenar chaves de acesso na instância do EC2. Para atribuir um perfil da AWS a uma instância do EC2 e disponibilizá-la para todas as suas aplicações, crie um perfil de instância que esteja anexado a ela. Um perfil de instância contém a perfil e permite que os programas em execução na instância do EC2 obtenham credenciais temporárias. Para mais informações, consulte Usar um perfil do IAM para conceder permissões a aplicações em execução nas instâncias do Amazon EC2 no Guia do usuário do IAM.

    Para saber se deseja usar os perfis do IAM, consulte Quando criar um perfil do IAM (em vez de um usuário) no Guia do usuário do IAM.

    nota

    Você não pode usar as credenciais do Git ou pares de chaves pública/privada SSH com usuários federados. Além disso, preferências do usuário não estão disponíveis para usuários federados. Para obter informações sobre como configurar conexões usando acesso federado, consulte Etapas de configuração para conexões HTTPS com o AWS CodeCommit com git-remote-codecommit.

Controle de acesso

Você pode ter credenciais válidas para autenticar suas solicitações, mas a menos que tenha permissões, você não pode criar nem acessar os recursos do CodeCommit. Por exemplo, você deve ter permissões para visualizar repositórios, enviar código por push, criar e gerenciar credenciais do Git e assim por diante.

As seções a seguir descrevem como gerenciar permissões do CodeCommit. Recomendamos que você leia a visão geral primeiro.

Visão geral do gerenciamento de permissões de acesso aos recursos do CodeCommit

Todo recurso da AWS é de propriedade de uma conta da Amazon Web Services. As permissões para criar ou acessar um recurso são regidas por políticas de permissões. Um administrador de conta pode anexar políticas de permissões a identidades do IAM (ou seja, usuários, grupos e funções). Alguns serviços, como o AWS Lambda, também oferecem suporte à anexação de políticas de permissões aos recursos.

nota

Um administrador da conta (ou usuário administrador) é um usuário com privilégios de administrador. Para obter mais informações, consulte Melhores práticas do IAM no Guia do usuário do IAM.

Ao conceder permissões, você decide quem recebe as permissões, os recursos relacionados às permissões concedidas e as ações específicas que deseja permitir nesses recursos.

Recursos e operações do CodeCommit

No CodeCommit, o recurso principal é um repositório. Cada recurso possui um nome de recurso da Amazon (ARN) exclusivo associado. Em uma política, você usa um Nome de recurso da Amazon (ARN) para identificar o recurso a que a política se aplica. Para obter mais informações sobre ARNs, consulte Nomes de recurso da Amazon (ARN) e namespaces de serviço da AWS no Referência geral da Amazon Web Services. No momento, o CodeCommit não é compatível com outros tipos de recursos, chamados de sub-recursos.

A tabela a seguir descreve como especificar recursos do CodeCommit.

Tipo de recurso Formato de nome do recurso da Amazon (ARN)
Repositório

arn:aws:codecommit:region:account-id:repository-name

Todos os repositórios do CodeCommit

arn:aws:codecommit:*

Todos os repositórios do CodeCommit pertencentes à conta especificada na Região da AWS especificada

arn:aws:codecommit:region:account-id:*

nota

A maioria dos serviços AWS trata o caractere de dois-pontos (:) e a barra inclinada (/) em ARNs como o mesmo caractere. No entanto, o CodeCommit requer uma correspondência exata nos padrões e regras de recursos. Ao criar padrões de eventos, certifique-se de usar os caracteres corretos do ARN para que eles correspondam à sintaxe de ARN no recurso.

Por exemplo, é possível indicar um repositório específico (MyDemoRepo) na sua instrução usando o respectivo ARN, da seguinte maneira:

"Resource": "arn:aws:codecommit:us-west-2:111111111111:MyDemoRepo"

Para especificar todos os repositórios que pertencem a uma conta específica, use o caractere curinga (*) da seguinte maneira:

"Resource": "arn:aws:codecommit:us-west-2:111111111111:*"

Para especificar todos os ou se uma ação de API específica não for compatível com ARNs, use o caractere curinga (*) no elemento Resource, da seguinte maneira:

"Resource": "*"

Você também pode usar o caractere curinga (*) para especificar todos os recursos que correspondem à parte de um nome de repositório. Por exemplo, o seguinte ARN especifica qualquer repositório do CodeCommit que comece com o nome MyDemo e que esteja registrado na conta 111111111111 da Amazon Web Services na Região da AWS us-east-2:

arn:aws:codecommit:us-east-2:111111111111:MyDemo*

Para obter uma lista das operações disponíveis que funcionam com recursos do CodeCommit, consulte Referência de permissões do CodeCommit.

Entendendo a propriedade de recursos

A conta da Amazon Web Services tem os recursos criados na conta, independentemente de quem os criou. Mais especificamente, o proprietário do recurso é a conta da Amazon Web Services da entidade principal do (isto é, a conta raiz, um usuário do IAM ou um perfil do IAM) que autentica a solicitação de criação de recursos. Os exemplos a seguir mostram como isso funciona:

  • Se você criar um usuário do IAM na sua conta da Amazon Web Services e conceder permissões para criar recursos do CodeCommit para esse usuário, o usuário poderá criar recursos do CodeCommit. No entanto, sua conta da Amazon Web Services à qual o usuário pertence possui os recursos do CodeCommit.

  • Se você usar as credenciais da conta raiz da sua conta da Amazon Web Services para criar uma regra, sua conta da Amazon Web Services será a proprietária do recurso do CodeCommit.

  • Se você criar um perfil do IAM na sua conta da Amazon Web Services com permissões para criar recursos do CodeCommit, qualquer pessoa que possa assumir o perfil poderá criar recursos do CodeCommit. Sua conta da Amazon Web Services à qual o perfil pertence é proprietária dos recursos do CodeCommit.

Gerenciamento de acesso aos recursos

Para gerenciar o acesso aos recursos da AWS, você usa políticas de permissões. A política de permissões descreve quem tem acesso a quê. A seção a seguir explica as opções para criar políticas de permissões.

nota

Esta seção discute o uso do IAM no contexto do CodeCommit. Não são fornecidas informações detalhadas sobre o serviço IAM. Para obter mais informações sobre o IAM, consulte O que é o IAM? no Guia do usuário do IAM. Para obter mais informações sobre a sintaxe e as descrições da política do IAM, consulte a Referência de política do IAM no Guia do usuário do IAM.

Políticas de permissões que são anexadas a uma identidade do IAM são chamadas de políticas baseadas em identidade (políticas do IAM). As políticas de permissões anexadas a um recurso são chamadas de políticas baseadas em recursos. No momento, o CodeCommit é compatível apenas com políticas baseadas em identidade (políticas do IAM).

Políticas baseadas em identidade (políticas do IAM)

Para gerenciar o acesso aos recursos da AWS, você anexa políticas de permissões a identidades do IAM. No CodeCommit, você usa políticas baseadas em identidade para controlar o acesso a repositórios. Por exemplo, você pode fazer o seguinte:

  • Anexe uma política de permissões a um usuário ou um grupo em sua conta: para conceder permissões a um usuário para visualizar recursos do CodeCommit, anexe uma política de permissões baseada em identidade a um usuário ou grupo ao qual o usuário pertence.

  • Anexe uma política de permissões a um perfil (para conceder permissões entre contas): a delegação, como quando você quer conceder acesso entre contas, envolve estabelecer uma confiança entre a conta que possui o recurso (a conta confiante) e a conta que contém os usuários que precisam acessar o recurso (a conta confiável). Uma política de permissões concede ao usuário de um perfil as permissões necessárias para realizar as tarefas pretendidas no recurso. Uma política de confiança especifica quais contas confiáveis podem conceder a seus usuários permissões para assumir a função. Para obter mais informações, consulte Termos e conceitos do IAM.

    Para conceder permissões entre contas, anexe uma política de permissões baseada em identidade para um perfil do IAM. Por exemplo, o administrador na conta A pode criar um perfil para conceder permissões entre contas para outra conta da Amazon Web Services (por exemplo, conta B) ou um serviço da AWS, conforme a seguir:

    1. Um administrador da Conta A cria uma função do IAM e anexa uma política de permissões à função que concede permissões em recursos da Conta A.

    2. Um administrador da Conta A anexa uma política de confiança à função identificando a Conta B como a entidade principal, que pode assumir a função.

    3. O administrador da Conta B pode delegar permissões para assumir a função para todos os usuários na Conta B. Isso permite que os usuários na Conta B criem ou acessem recursos na Conta A. Se você quiser conceder uma permissão de serviço da AWS para assumir a função, o principal na política de confiança também pode ser o principal do serviço da AWS. Para obter mais informações, consulte Delegação, em Termos e conceitos do IAM.

    Para obter mais informações sobre o uso do IAM para delegar permissões, consulte Gerenciamento de acesso no Guia do usuário do IAM.

A política de exemplo a seguir permite que um usuário crie uma ramificação em um repositório chamado MyDemoRepo:

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codecommit:CreateBranch" ], "Resource" : "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo" } ] }

Para restringir as chamadas e os recursos aos quais os usuários da sua conta têm acesso, crie políticas do IAM específicas e, em seguida, anexe essas políticas a usuários do IAM. Para obter mais informações sobre como criar perfis do IAM e ver exemplos de declarações de política do IAM no CodeCommit, consulte Exemplos de políticas de identidade gerenciadas pelo cliente.

Políticas baseadas em recurso

Alguns serviços, como o Amazon S3, também suportam políticas de permissões baseadas em recursos. Por exemplo, você pode anexar uma política baseada em recursos a um bucket do S3 para gerenciar permissões de acesso a esse bucket. O CodeCommit não é compatível com políticas baseadas em recursos, mas você pode usar tags para identificar recursos, que podem ser usados nas políticas do IAM. Para obter um exemplo de uma política baseada em tags, consulte Políticas baseadas em identidade (políticas do IAM).

Escopo de recursos no CodeCommit

No CodeCommit, você pode definir o escopo das políticas e permissões baseadas em identidade para os recursos, conforme descrito em Recursos e operações do CodeCommit. No entanto, você não pode definir o escopo da permissão ListRepositories para um recurso. Em vez disso, você deve definir o escopo para todos os recursos (usando o curinga *). Caso contrário, a ação falhará.

Todas as outras permissões do CodeCommit podem ter escopos definidos para recursos.

Especificação de elementos de política: recursos, ações, efeitos e entidades de segurança

Você pode criar políticas para permitir ou negar aos usuários o acesso a recursos ou para permitir ou negar que os usuários realizem ações específicas nesses recursos. O CodeCommit define um conjunto de operações públicas de API que especificam como os usuários trabalham com o serviço, seja por meio do console do CodeCommit, dos SDKs, da AWS CLI ou chamando diretamente essas APIs. Para conceder permissões a essas operações da API, o CodeCommit define um conjunto de ações que podem ser especificadas em uma política.

Algumas operações de API podem exigir permissões para mais de uma ação. Para obter mais informações sobre os recursos e operações da API, consulte Recursos e operações do CodeCommit e Referência de permissões do CodeCommit.

Estes são os elementos básicos de uma política:

  • Recurso: para identificar o recurso ao qual a política se aplica, você usa um nome do recurso da Amazon (ARN). Para obter mais informações, consulte Recursos e operações do CodeCommit.

  • Ação: para identificar operações de recursos que deseja permitir ou negar, use palavras-chave de ação. Por exemplo, dependendo do Effect especificado, a permissão codecommit:GetBranch permite ou impede que o usuário realize a operação GetBranch, que obtém detalhes sobre uma ramificação em um repositório do CodeCommit.

  • Efeito: você especifica o efeito, permitir ou negar, que ocorre quando o usuário solicita a ação específica. Se você não conceder (permitir) explicitamente acesso a um recurso, o acesso estará implicitamente negado. Você também pode negar explicitamente o acesso a um recurso, para ter a certeza de que um usuário não consiga acessá-lo, mesmo que uma política diferente conceda acesso.

  • Entidade principal: em políticas baseadas em identidade (políticas do IAM), o único tipo de política compatível com o CodeCommit, o usuário ao qual a política está anexada é a entidade principal implícita.

Para saber mais sobre a sintaxe da política do IAM, consulte a Referência da política do IAM no Guia do usuário do IAM.

Para obter uma tabela que mostra todas as ações da API do CodeCommit e os recursos a que elas se aplicam, consulte Referência de permissões do CodeCommit.

Especificar condições em uma política

Ao conceder permissões, você usa a linguagem de políticas de acesso do IAM para especificar as condições em que uma política deve entrar em vigor. Por exemplo, é recomendável aplicar uma política somente após uma data específica. Para obter mais informações sobre como especificar condições em uma linguagem de política, consulte Condição e Gramática de políticas no Guia do usuário do IAM.

Para expressar condições, você usa chaves de condição predefinidas. Não existem chaves de condição específicas do CodeCommit. No entanto, existem chaves de condição em toda a AWS que você pode usar conforme apropriado. Para obter uma lista completa de chaves de toda a AWS, consulte Chaves disponíveis para condições no Guia do usuário do IAM.