

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

# Proteção de dados no AWS CodeCommit
<a name="data-protection"></a>

Por ser um serviço gerenciado, é protegido pela segurança da rede global da AWS. Para obter informações sobre serviços de segurança da AWS e como a AWS protege a infraestrutura, consulte [Segurança na Nuvem AWS](https://aws.amazon.com/security/). Para projetar seu ambiente da AWS usando as práticas recomendadas de segurança da infraestrutura, consulte [Proteção de Infraestrutura](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html) em *Pilar de Segurança: AWS Well‐Architected Framework*.

Você usa chamadas de API publicadas pela AWS para acessar por meio da rede. Os clientes devem oferecer compatibilidade com:
+ Transport Layer Security (TLS). Exigimos TLS 1.2 e recomendamos TLS 1.3.
+ Conjuntos de criptografia com perfect forward secrecy (PFS) como DHE (Ephemeral Diffie-Hellman) ou ECDHE (Ephemeral Elliptic Curve Diffie-Hellman). A maioria dos sistemas modernos, como Java 7 e versões posteriores, comporta esses modos.

Os repositórios do CodeCommit são criptografados automaticamente quando estão em repouso. Não será necessária nenhuma ação do cliente. O CodeCommit também criptografa dados em trânsito do repositório. Também é possível usar o protocolo HTTPS, o protocolo SSH ou ambos com repositórios do CodeCommit. Para obter mais informações, consulte [Configuração do AWS CodeCommit](setting-up.md). Também é possível configurar o [acesso entre contas](cross-account.md) para repositórios do CodeCommit.

**Topics**
+ [AWS Key Management Service e criptografia para AWS CodeCommit repositórios](encryption.md)
+ [Conectando-se a AWS CodeCommit repositórios com credenciais rotativas](temporary-access.md)

# AWS Key Management Service e criptografia para AWS CodeCommit repositórios
<a name="encryption"></a>

Os dados nos CodeCommit repositórios são criptografados em trânsito e em repouso. Quando os dados são enviados para um CodeCommit repositório (por exemplo, por meio de uma chamada**git push**), CodeCommit criptografa os dados recebidos à medida que são armazenados no repositório. Quando os dados são extraídos de um CodeCommit repositório (por exemplo, por meio de uma chamada**git pull**), os CodeCommit descriptografa e os envia para o chamador. Isso pressupõe que o usuário do IAM associado à solicitação push ou pull tenha sido autenticado por. AWS Os dados enviados ou recebidos são transferidos usando protocolos de rede criptografada HTTPS ou SSH.

Você pode usar uma chave gerenciada pelo cliente Chave gerenciada pela AWS ou uma chave gerenciada pelo cliente para criptografar e descriptografar os dados no seu repositório. Consulte mais informações sobre as diferenças entre chaves gerenciadas pelo cliente e Chaves gerenciadas pela AWS em [Customer managed keys and Chaves gerenciadas pela AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-mgmt). Se você não especificar uma chave gerenciada pelo cliente, CodeCommit usará uma Chave gerenciada pela AWS para criptografar e descriptografar os dados no seu repositório. Essa Chave gerenciada pela AWS é criada automaticamente para você em sua Conta da AWS. Na primeira vez que você cria um CodeCommit repositório em um novo Região da AWS em sua conta da Amazon Web Services, se você não especificar uma chave gerenciada pelo cliente, CodeCommit cria uma Chave gerenciada pela AWS (a `aws/codecommit` chave) na mesma Região da AWS em AWS Key Management Service (AWS KMS). Essa `aws/codecommit` chave é usada somente por CodeCommit. Ela é armazenada na sua conta da Amazon Web Services. Dependendo do que você especificar, CodeCommit use a chave gerenciada pelo cliente ou a Chave gerenciada pela AWS para criptografar e descriptografar os dados no repositório. 

**Importante**  
 CodeCommit executa as seguintes AWS KMS ações em relação à AWS KMS chave usada para criptografar e descriptografar dados em um repositório. Se você estiver usando um Chave gerenciada pela AWS, o usuário não precisará de permissões explícitas para essas ações, mas o usuário não deve ter nenhuma política anexada que negue essas ações para a `aws/codecommit` chave. Se você estiver usando uma chave gerenciada pelo cliente que tenha uma Conta da AWS ID definida como principal de política para essa chave, essas permissões devem ser definidas explicitamente como. `allow` Especificamente, ao criar seu primeiro repositório e atualizar as chaves do seu repositório, você não deve ter nenhuma das seguintes permissões definidas `deny` se estiver usando uma Chave gerenciada pela AWS, e deverá ser definida como `allow` se estiver usando uma chave gerenciada pelo cliente com um diretor de política:  
`"kms:Encrypt"`
`"kms:Decrypt"`
`"kms:ReEncrypt"` (dependendo do contexto, pode exigir `kms:ReEncryptFrom`,   
`kms:ReEncryptTo` ou `kms:ReEncrypt*` não configurado para negar)
`"kms:GenerateDataKey"`
`"kms:GenerateDataKeyWithoutPlaintext"`
`"kms:DescribeKey"`

Se você quiser usar sua própria chave gerenciada pelo cliente, a chave deve estar disponível no Região da AWS local onde o repositório existe. CodeCommit suporta o uso de chaves gerenciadas pelo cliente de uma e várias regiões. Embora todos os tipos de origem de material de chaves sejam compatíveis, recomendamos usar a opção padrão **KMS**. Se os clientes usarem a opção **Repositório de chaves externo** poderá haver atrasos por parte do fornecedor da loja. Além disso. CodeCommit tem os seguintes requisitos para chaves gerenciadas pelo cliente:
+ CodeCommit só suporta o uso de teclas simétricas.
+ O tipo de uso da chave deve ser definido como **Criptografar e descriptografar**.

Consulte mais informações sobre como criar chaves gerenciadas pelo cliente em [Concepts](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-mgmt) e [Creating keys](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html).

Para ver as informações sobre o Chave gerenciada pela AWS gerado por CodeCommit, faça o seguinte:

1. Faça login no console Console de gerenciamento da AWS e abra o AWS Key Management Service (AWS KMS) em [https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms).

1. Para alterar o Região da AWS, use o seletor de região no canto superior direito da página.

1. No painel de navegação de serviço, selecione **Chaves gerenciadas pela AWS**. Verifique se você está conectado ao Região da AWS local em que deseja revisar as chaves. 

1. Na lista de chaves de criptografia, escolha a Chave gerenciada pela AWS com o alias **aws/codecommit**. As informações básicas sobre o Chave pertencente à AWS são exibidas.

Você não pode alterar ou excluir isso Chave gerenciada pela AWS. 

## Como os algoritmos de criptografia são usados para criptografar dados do repositório
<a name="encryption-algorithms"></a>

CodeCommit usa duas abordagens diferentes para criptografar dados. Objetos Git individuais com menos de 6 MB são criptografados usando AES-GCM-256, que fornece validação de integridade de dados. Objetos entre 6 MB e o máximo de 2 GB para um único blob são criptografados usando AES-CBC-256. CodeCommit sempre valida o contexto de criptografia.

## Contexto de criptografia
<a name="encryption-context"></a>

Cada serviço integrado ao AWS KMS especifica um contexto de criptografia para as operações de criptografia e descriptografia. O contexto de criptografia significa informações adicionais autenticadas que o AWS KMS usa para verificar a integridade dos dados. Quando especificado para a operação de criptografia, ele também deve ser especificado na operação de descriptografia. Caso contrário, a decodificação falhará. CodeCommit usa o ID do CodeCommit repositório para o contexto de criptografia. Você pode usar o **get-repository** comando ou o CodeCommit console para encontrar o ID do repositório. Pesquise o ID do CodeCommit repositório nos AWS CloudTrail registros para entender quais operações de criptografia foram realizadas em qual chave AWS KMS para criptografar ou descriptografar dados no repositório. CodeCommit 

Para obter mais informações sobre AWS KMS, consulte o [Guia do AWS Key Management Service desenvolvedor](https://docs.aws.amazon.com/kms/latest/developerguide/).

# Conectando-se a AWS CodeCommit repositórios com credenciais rotativas
<a name="temporary-access"></a>

Você pode dar aos usuários acesso aos seus AWS CodeCommit repositórios sem configurar usuários do IAM para eles ou usar uma chave de acesso e uma chave secreta. Para atribuir permissões a identidades federadas, você cria um perfil e define permissões para a perfil. Quando uma identidade federada é autenticada, essa identidade é associada ao perfil e recebe as permissões definidas por ele. Para ter mais informações sobre perfis para federação, consulte [Criar um perfil para um provedor de identidade de terceiros (federação)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html) no *Guia do usuário do IAM*. Se usar o Centro de Identidade do IAM, configure 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](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html) no *Guia do Usuário do Centro de Identidade do AWS IAM *. Você também pode configurar o acesso baseado em funções para que os usuários do IAM acessem CodeCommit repositórios em contas separadas da Amazon Web Services (uma técnica conhecida como acesso *entre* contas). Para obter uma explicação detalhada sobre como configurar o acesso entre várias contas de um repositório, consulte [Configurar o acesso entre contas a um AWS CodeCommit repositório usando funções](cross-account.md). 

É possível configurar o acesso para usuários que desejam ou devem ser autenticados por meio de métodos como:
+ Security Assertion Markup Language (SAML)
+ Autenticação multifatorial (MFA)
+ Federação
+ Login da Amazon
+ Amazon Cognito
+ Facebook
+ Google
+ Provedor de identidade compatível com OpenID Connect (OIDC)

**nota**  
As informações a seguir se aplicam somente ao uso **git-remote-codecommit** ou ao auxiliar de AWS CLI credenciais para se conectar aos CodeCommit repositórios. Como a abordagem recomendada para acesso temporário ou federado CodeCommit é a configuração**git-remote-codecommit**, este tópico fornece exemplos de uso desse utilitário. Para obter mais informações, consulte [Etapas de configuração para conexões HTTPS AWS CodeCommit com git-remote-codecommit](setting-up-git-remote-codecommit.md).   
Você não pode usar credenciais SSH ou Git e HTTPS para se conectar a repositórios com credenciais de CodeCommit acesso rotativo ou temporário. 

Não será necessário executar estas etapas se todas as seguintes condições forem verdadeiras:
+ Você está conectado a uma instância do Amazon EC2.
+ Você está usando o Git e o HTTPS com o auxiliar de AWS CLI credenciais para se conectar da instância do Amazon EC2 aos repositórios. CodeCommit 
+ A instância do Amazon EC2 tem um perfil de instância do IAM anexado que contém as permissões de acesso descritas em [Para conexões HTTPS no Linux, macOS ou Unix com o auxiliar de credenciais AWS CLI ](setting-up-https-unixes.md) ou [Para conexões HTTPS no Windows com o auxiliar de AWS CLI credenciais](setting-up-https-windows.md).
+ Você instalou e configurou o assistente de credenciais do Git na instância do Amazon EC2, conforme descrito em [Para conexões HTTPS no Linux, macOS ou Unix com o auxiliar de credenciais AWS CLI ](setting-up-https-unixes.md) ou [Para conexões HTTPS no Windows com o auxiliar de AWS CLI credenciais](setting-up-https-windows.md).

As instâncias do Amazon EC2 que atendem aos requisitos anteriores já estão configuradas para comunicar credenciais de acesso temporário em seu CodeCommit nome.

**nota**  
Você pode configurar e usar **git-remote-codecommit** em instâncias do Amazon EC2.

Para dar aos usuários acesso temporário aos seus CodeCommit repositórios, conclua as etapas a seguir.



## Etapa 1: Concluir os pré-requisitos
<a name="temporary-access-prerequisites"></a>

Conclua as etapas de configuração para fornecer ao usuário acesso aos seus CodeCommit repositórios usando credenciais rotativas: 
+ Para acesso entre contas, consulte [Passo a passo: delegar acesso entre contas da Amazon Web Services usando perfis do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-walkthrough-crossacct.html) e [Configurar o acesso entre contas a um AWS CodeCommit repositório usando funções](cross-account.md).
+ Para SAML e federação, consulte [Usando o sistema de autenticação da sua organização para conceder acesso a AWS recursos e Sobre a](https://docs.aws.amazon.com/STS/latest/UsingSTS/STSUseCases.html#IdentityBrokerApplication) [federação baseada em AWS STS SAML 2.0.](https://docs.aws.amazon.com/STS/latest/UsingSTS/CreatingSAML.html)
+ Para saber mais sobre MFA, consulte [Usar dispositivos de autenticação multifator (MFA) com a AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingMFA.html) e [Criar credencias de segurança temporárias para habilitar o acesso de usuários do IAM](https://docs.aws.amazon.com/STS/latest/UsingSTS/CreatingSessionTokens.html).
+ [Para Login com Amazon, Amazon Cognito, Facebook, Google ou qualquer provedor de identidade compatível com OIDC, consulte Sobre a Web Identity Federation. AWS STS](https://docs.aws.amazon.com/STS/latest/UsingSTS/web-identity-federation.html)

Use as informações em [Autenticação e controle de acesso para AWS CodeCommit](auth-and-access-control.md) para especificar as CodeCommit permissões que você deseja conceder ao usuário.

## Etapa 2: obter nome do perfil ou credenciais de acesso
<a name="temporary-access-get-credentials"></a>

Se você quiser que seus usuários acessem repositórios assumindo uma função, forneça aos usuários o nome de recurso da Amazon (ARN) dessa função. Caso contrário, dependendo da forma como você configura o acesso, seu usuário pode obter credenciais rotativas de uma das seguintes maneiras:
+ Para acesso entre contas, chame o comando AWS CLI [assume-role](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) ou chame a API. AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)
+ Para SAML, chame o AWS CLI [assume-role-with-saml](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-saml.html)comando ou a API AWS STS [AssumeRoleWithSAML.](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)
+ Para federação, chame os [get-federation-token](https://docs.aws.amazon.com/cli/latest/reference/sts/get-federation-token.html)comandos AWS CLI [assume-role](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) ou ou. AWS STS [AssumeRole[GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html)](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) APIs
+ Para MFA, chame o AWS CLI [get-session-token](https://docs.aws.amazon.com/cli/latest/reference/sts/get-session-token.html)comando ou a AWS STS [GetSessionToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html)API.
+ Para Login with Amazon, Amazon Cognito, Facebook, Google ou qualquer provedor de identidade compatível com OIDC, chame o comando AWS CLI [assume-role-with-web-identity](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html) ou a API. AWS STS [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)



## Etapa 3: instalar git-remote-codecommit e configurar o AWS CLI
<a name="temporary-access-configure-credentials"></a>

É necessário configurar o computador local para usar as credenciais de acesso instalando [https://pypi.org/project/git-remote-codecommit/](https://pypi.org/project/git-remote-codecommit/) e configurando um perfil na AWS CLI.

1. Siga as instruções em [Configurando ](setting-up.md) para configurar a AWS CLI. Use o comando **aws configure** para configurar um ou mais perfis. Considere criar um perfil nomeado para usar ao se conectar aos CodeCommit repositórios usando credenciais rotativas.

1. Você pode associar as credenciais ao perfil AWS CLI nomeado do usuário de uma das seguintes formas. 
   + Se você estiver assumindo uma função para acessar CodeCommit, configure um perfil nomeado com as informações necessárias para assumir essa função. Por exemplo, se você quiser assumir uma função nomeada *CodeCommitAccess* na conta 11111111111111 da Amazon Web Services, você pode configurar um perfil padrão para usar ao trabalhar com outros AWS recursos e um perfil nomeado para usar ao assumir essa função. Os comandos a seguir criam um perfil nomeado chamado *CodeAccess* que assume uma função chamada*CodeCommitAccess*. O nome do usuário *Maria\$1Garcia* está associado à sessão e o perfil padrão é definido como a origem de suas AWS credenciais:

     ```
     aws configure set role_arn arn:aws:iam::111111111111:role/CodeCommitAccess --profile CodeAccess
     aws configure set source_profile default --profile CodeAccess
     aws configure set role_session_name "Maria_Garcia" --profile CodeAccess
     ```

     Se você quiser verificar as alterações, visualize ou edite manualmente o arquivo `~/.aws/config` (para Linux) ou o arquivo `%UserProfile%.aws\config` (para Windows) e revise as informações sob o perfil nomeado. Por exemplo, o arquivo pode ser semelhante ao seguinte:

     ```
     [default]
     region = us-east-1
     output = json
     
     [profile CodeAccess]
     source_profile = default
     role_session_name = Maria_Garcia
     role_arn = arn:aws:iam::111111111111:role/CodeCommitAccess
     ```

      Depois de configurar seu perfil nomeado, você poderá clonar repositórios do CodeCommit com o utilitário **git-remote-codecommit** usando o perfil nomeado. Por exemplo, para excluir um repositório denominado *MyDemoRepo*: 

     ```
     git clone codecommit://CodeAccess@MyDemoRepo
     ```
   + Se você estiver usando a federação de identidade da web e o OpenID Connect (OIDC), configure um perfil nomeado que faça a chamada da `AssumeRoleWithWebIdentity` API AWS Security Token Service (AWS STS) em seu nome para atualizar as credenciais temporárias. Use o **aws configure set** comando ou edite manualmente o `~/.aws/credentials` arquivo (para Linux) ou o `%UserProfile%.aws\credentials` arquivo (para Windows) para adicionar um perfil AWS CLI nomeado com os valores de configuração necessários. Por exemplo, para criar um perfil que assume a *CodeCommitAccess* função e usa um arquivo de token de identidade da web \$1/: *my-credentials* */my-token-file*

     ```
     [CodeCommitWebIdentity]
     role_arn = arn:aws:iam::111111111111:role/CodeCommitAccess
     web_identity_token_file=~/my-credentials/my-token-file
     role_session_name = Maria_Garcia
     ```

   Para obter mais informações, consulte [Configurar a AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) e [Usar um perfil do IAM na AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html) no *Guia do usuário do AWS Command Line Interface *.

## Etapa 4: acessar os CodeCommit repositórios
<a name="temporary-access-use-credentials"></a>

Supondo que seu usuário tenha seguido as instruções [Conexão a um repositório](how-to-connect.md) para se conectar aos CodeCommit repositórios, o usuário então usa a funcionalidade estendida fornecida pelo **git-remote-codecommit** Git para chamar **git clone****git push**, **git pull** clonar, enviar e extrair dos CodeCommit repositórios aos quais ele ou ela tem acesso. Por exemplo, para clonar um repositório:

```
git clone codecommit://CodeAccess@MyDemoRepo
```

Os comandos commit, push e pull do Git usam sintaxe regular do Git. 

Quando o usuário usa AWS CLI e especifica o perfil AWS CLI nomeado associado às credenciais de acesso rotativas, os resultados com escopo para esse perfil são retornados.

