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

AWS CodeCommit não está mais disponível para novos clientes. Os clientes atuais do AWS CodeCommit podem continuar usando o serviço normalmente. Saiba mais

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 a AWS CodeCommit requer credenciais. Essas credenciais devem ter permissões para acessar AWS recursos, como CodeCommit repositórios, e seu IAM usuário, que você usa para gerenciar suas credenciais do Git ou a chave SSH pública que você usa para fazer conexões do Git. As seções a seguir fornecem detalhes sobre como você pode usar AWS Identity and Access Management (IAM) e ajudar CodeCommit a proteger o acesso aos seus recursos:

Autenticação

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

Tipos de identidade:

  • IAMusuário — Um IAMusuário é uma identidade dentro da sua conta da Amazon Web Services que tem permissões personalizadas específicas. Por exemplo, um IAM usuário pode ter permissões para criar e gerenciar credenciais do Git para acessar repositórios. CodeCommit Esse é o tipo de usuário recomendado para trabalhar com CodeCommit. Você pode usar um nome de IAM usuário e uma senha para entrar em AWS páginas da Web seguras AWS Management Console, como os Fóruns de AWS Discussão ou o AWS Support Centro.

    Você pode gerar credenciais do Git ou associar chaves SSH públicas ao seu IAM usuário, ou pode instalar e configurar. git-remote-codecommit Essas são as maneiras mais fáceis de configurar o Git para trabalhar com seus CodeCommit repositórios. Com as credenciais do Git, você gera um nome de usuário e senha estáticos no. IAM Em seguida, você usa essas credenciais para HTTPS conexões com o Git e qualquer ferramenta de terceiros que ofereça suporte à autenticação de nome de usuário e senha do Git. Com SSH as conexões, você cria arquivos de chave pública e privada em sua máquina local que o Git CodeCommit usa para SSH autenticação. Você associa a chave pública ao seu IAM usuário e armazena a chave privada na sua máquina local. git-remote-codecommitestende o Git em si e não exige a configuração de credenciais do Git para o usuário.

    Além disso, você pode gerar chaves de acesso para cada usuário. Use as teclas de acesso ao acessar AWS serviços de forma programática, seja por meio de um dos AWS SDKs ou usando o AWS Command Line Interface ()AWS CLI. As CLI ferramentas SDK e usam as chaves de acesso para assinar criptograficamente suas solicitações. Se você não usa as AWS ferramentas, você mesmo deve assinar as solicitações. CodeCommit suporta o Signature Version 4, um protocolo para autenticar solicitações de entradaAPI. 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 Amazon Web Services — Ao se cadastrar AWS, você fornece um endereço de e-mail e uma 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 CodeCommit recursos não estão disponíveis para usuários da conta root. Além disso, a única maneira de usar o Git com sua conta root é instalar e configurar git-remote-codecommit (recomendado) ou configurar o auxiliar de AWS credenciais, que está incluído no. AWS CLI Você não pode usar credenciais do Git ou pares de chaves SSH públicas-privadas com o usuário da sua conta raiz. Por esses motivos, não recomendamos usar o usuário da sua conta root ao interagir com CodeCommit.

    Importante

    Por motivos de segurança, recomendamos que você use as credenciais raiz somente para criar um usuário administrador, que é um IAMusuário com permissões completas para sua AWS conta. Em seguida, você pode usar esse usuário administrador para criar outros IAM usuários e funções com permissões limitadas. Para obter mais informações, consulte Práticas IAM recomendadas e criação de um usuário e grupo de administradores no Guia IAM do usuário.

  • IAMIdentity Center e usuários no IAM Identity Center — AWS IAM Identity Center expande os recursos de AWS Identity and Access Management fornecer um local central que reúne a administração dos usuários e seu acesso aos Contas da AWS aplicativos em nuvem. Embora seja recomendado como uma prática recomendada para a maioria dos usuários que trabalham com AWS, o IAM Identity Center atualmente não fornece mecanismos para credenciais ou SSH pares de chaves do Git. Esses usuários podem instalar e configurar CodeCommit repositórios git-remote-codecommit para clonar localmente, mas nem todos os ambientes de desenvolvimento integrados (IDEs) suportam clonagem, envio ou extração. git-remote-codecommit

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

    Uma identidade federada é um usuário do seu diretório de usuários corporativo, de um provedor de identidade da web AWS Directory Service, do diretório do Identity Center ou de qualquer usuário que acesse usando credenciais fornecidas Serviços da AWS por meio de uma fonte de identidade. Quando as identidades federadas são acessadas Contas da AWS, elas assumem funções, e as funções 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 IAM Identity Center ou pode se conectar e sincronizar com um conjunto de usuários e grupos em sua própria fonte de identidade para uso em todos os seus Contas da AWS aplicativos. Para obter informações sobre o IAM Identity Center, consulte O que é o IAM Identity Center? no Guia do AWS IAM Identity Center usuário.

  • IAMfunção — Assim como um IAM usuário, uma IAMfunção é uma IAM identidade que você pode criar em sua conta para conceder permissões específicas.

    Uma IAMfunção é uma identidade dentro da sua Conta da AWS que tem permissões específicas. É semelhante a um IAM usuário, mas não está associado a uma pessoa específica. Para assumir temporariamente uma IAM função no AWS Management Console, você pode alternar de usuário para IAM função (console). Você pode assumir uma função chamando uma AWS API operação AWS CLI or ou usando uma personalizadaURL. Para obter mais informações sobre métodos de uso de funções, consulte Métodos para assumir uma função no Guia IAM do usuário.

    IAMfunções 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 informações sobre funções para federação, consulte Criar uma função para um provedor de identidade terceirizado (federação) no Guia IAM do usuário. Se você usa o IAM Identity Center, configura um conjunto de permissões. Para controlar o que suas identidades podem acessar após a autenticação, o IAM Identity Center correlaciona o conjunto de permissões a uma função em. IAM Para obter informações sobre conjuntos de permissões, consulte Conjuntos de Permissões no Manual do Usuário do AWS IAM Identity Center .

    • Permissões temporárias IAM de IAM usuário — Um usuário ou função pode assumir uma IAM função para assumir temporariamente permissões diferentes para uma tarefa específica.

    • Acesso entre contas — Você pode usar uma IAM função para permitir que alguém (um diretor confiável) em uma conta diferente acesse recursos em sua conta. Os perfis são a principal forma de conceder acesso entre contas. No entanto, com alguns Serviços da AWS, você pode anexar uma política diretamente a um recurso (em vez de usar uma função como proxy). Para saber a diferença entre funções e políticas baseadas em recursos para acesso entre contas, consulte Acesso a recursos entre contas IAM no Guia do IAM usuário.

    • Acesso entre serviços — Alguns Serviços da AWS usam recursos em outros Serviços da AWS. Por exemplo, quando você faz uma chamada em um serviço, é comum que esse serviço execute aplicativos na 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 a serviço.

      • Sessões de acesso direto (FAS) — Quando você usa um IAM usuário ou uma função para realizar ações em AWS, você é considerado principal. Ao usar alguns serviços, você pode executar uma ação que inicia outra ação em um serviço diferente. FASusa as permissões do diretor chamando um AWS service (Serviço da AWS), combinadas com a solicitação AWS service (Serviço da AWS) para fazer solicitações aos serviços posteriores. FASas solicitações são feitas somente quando um serviço recebe uma solicitação que requer interações com outros Serviços da AWS ou com recursos para ser concluída. Nesse caso, você precisa ter permissões para executar ambas as ações. Para obter detalhes da política ao fazer FAS solicitações, consulte Encaminhar sessões de acesso.

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

      • Função vinculada ao serviço — Uma função vinculada ao 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. As funções vinculadas ao serviço aparecem em você Conta da AWS e são de propriedade do serviço. Um IAM administrador pode visualizar, mas não editar, as permissões das funções vinculadas ao serviço.

    • Aplicativos em execução na Amazon EC2 — Você pode usar uma IAM função para gerenciar credenciais temporárias para aplicativos que estão sendo executados em uma EC2 instância e fazendo AWS CLI AWS API solicitações. Isso é preferível ao armazenamento de chaves de acesso na EC2 instância. Para atribuir uma AWS função a uma EC2 instância e disponibilizá-la para todos os aplicativos, você cria um perfil de instância anexado à instância. Um perfil de instância contém a função e permite que os programas em execução na EC2 instância recebam credenciais temporárias. Para obter mais informações, consulte Usar uma IAM função para conceder permissões a aplicativos executados em EC2 instâncias da Amazon no Guia IAM do usuário.

    nota

    Você não pode usar credenciais do Git ou pares de chaves SSH públicas-privadas 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 HTTPS conexões 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, não poderá criar ou acessar CodeCommit recursos. 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 para CodeCommit. Recomendamos que você leia a visão geral primeiro.

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

Cada AWS recurso é 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 da conta pode anexar políticas de permissões às IAM identidades (ou seja, usuários, grupos e funções). Alguns serviços, como 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 as IAM melhores práticas no Guia IAM do usuário.

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.

CodeCommit recursos e operações

Em CodeCommit, o recurso principal é um repositório. Cada recurso tem um Amazon Resource Names (ARN) exclusivo associado a ele. Em uma política, você usa um Amazon Resource Name (ARN) para identificar o recurso ao qual a política se aplica. Para obter mais informações sobreARNs, consulte Amazon Resource Names (ARN) e AWS Service Namespaces no. Referência geral da Amazon Web Services CodeCommit atualmente não oferece suporte a outros tipos de recursos, chamados de sub-recursos.

A tabela a seguir descreve como especificar CodeCommit recursos.

Tipo de recurso ARNFormato
Repositório

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

Todos os CodeCommit repositórios

arn:aws:codecommit:*

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

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

nota

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

Por exemplo, você pode indicar um repositório específico (MyDemoRepo) em sua declaração usando ARN o seguinte:

"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 recursos, ou se uma API ação específica não for compatívelARNs, use o caractere curinga (*) no Resource elemento da seguinte forma:

"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 CodeCommit repositório que comece com o nome MyDemo e esteja registrado na conta da Amazon Web Services 111111111111 no: us-east-2 Região da AWS

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

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

Informações sobre propriedade de recursos

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

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

  • 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 é a proprietária do CodeCommit recurso.

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

Gerenciar acesso aos recursos da

Para gerenciar o acesso aos AWS recursos, 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 IAM no contexto de CodeCommit. Ele não fornece informações detalhadas sobre o IAM serviço. Para obter mais informações sobreIAM, consulte O que éIAM? no Guia do IAM usuário. Para obter informações sobre a IAM sintaxe e as descrições das IAMpolíticas, consulte Referência de políticas no Guia do IAM usuário.

As políticas de permissões anexadas a uma IAM identidade são chamadas de políticas baseadas em identidade (IAMpolíticas). As políticas de permissões anexadas a um recurso são chamadas de políticas baseadas em recursos. Atualmente, CodeCommit oferece suporte somente a políticas baseadas em identidade (IAMpolíticas).

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

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

  • Anexe uma política de permissões a um usuário ou grupo em sua conta — Para conceder a um usuário permissões para visualizar CodeCommit recursos no CodeCommit console, anexe uma política de permissões baseada em identidade a um usuário ou grupo ao qual o usuário pertença.

  • 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 IAMTermos e conceitos.

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

    1. O administrador da Conta A cria uma IAM função e anexa uma política de permissões à função que concede permissões sobre recursos na 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 então delegar permissões para assumir a função a qualquer usuário na Conta B. Isso permite que os usuários da Conta B criem ou acessem recursos na Conta A. Se você quiser conceder a um AWS serviço permissão para assumir a função, o principal na política de confiança também pode ser um diretor de AWS serviço. Para obter mais informações, consulte Delegação em IAMtermos e conceitos.

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

O exemplo de política 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 IAM políticas específicas e, em seguida, anexe essas políticas aos IAM usuários. Para obter mais informações sobre como criar IAM funções e explorar exemplos de declarações IAM de política para CodeCommit, consulteExemplos de políticas de identidade gerenciadas pelo cliente.

Políticas baseadas no 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 as permissões de acesso a esse bucket. CodeCommit não oferece suporte a políticas baseadas em recursos, mas você pode usar tags para identificar recursos, que podem ser usados nas IAM políticas. Para obter um exemplo de uma política baseada em tags, consulte Políticas baseadas em identidade (políticas) IAM.

Escopo de recursos em CodeCommit

Em CodeCommit, você pode definir o escopo de políticas e permissões baseadas em identidade para recursos, conforme descrito em. CodeCommit recursos e operações 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 CodeCommit permissões podem ser atribuídas aos 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 aos recursos, ou permitir ou negar que os usuários realizem ações específicas nesses recursos. CodeCommit define um conjunto de API operações públicas que definem como os usuários trabalham com o serviço, seja por meio do CodeCommit consoleSDKs, do AWS CLI, do ou chamando-os diretamenteAPIs. Para conceder permissões para essas API operações, CodeCommit define um conjunto de ações que você pode especificar em uma política.

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

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 de recurso da Amazon (ARN). Para obter mais informações, consulte CodeCommit recursos e operações.

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

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

  • Principal — Em políticas baseadas em identidade (IAMpolíticas), o único tipo de política CodeCommit compatível, o usuário ao qual a política está vinculada é o principal implícito.

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

Para ver uma tabela mostrando todas as CodeCommit API ações e os recursos aos quais elas se aplicam, consulteReferência de permissões do CodeCommit.

Especificar condições em uma política

Ao conceder permissões, você usa a linguagem da política de acesso IAM para especificar as condições sob as quais 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 a especificação de condições em um idioma de política, consulte Condição e gramática de políticas no Guia do IAMusuário.

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