

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Protección de los datos en AWS CodeCommit
<a name="data-protection"></a>

Como se trata de un servicio administrado, está protegido por la seguridad de red global de AWS. Para obtener información sobre los servicios de seguridad de AWS y cómo AWSprotege la infraestructura, consulte [Seguridad en la nube de AWS](https://aws.amazon.com/security/). Para diseñar su entorno de AWS con las prácticas recomendadas de seguridad de infraestructura, consulte [Protección de la infraestructura](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html) en *Portal de seguridad de AWS Well‐Architected Framework*.

Puede utilizar llamadas a la API publicadas en AWS para acceder a través de la red. Los clientes deben admitir lo siguiente:
+ Seguridad de la capa de transporte (TLS). Exigimos TLS 1.2 y recomendamos TLS 1.3.
+ Conjuntos de cifrado con confidencialidad directa total (PFS) como DHE (Ephemeral Diffie-Hellman) o ECDHE (Elliptic Curve Ephemeral Diffie-Hellman). La mayoría de los sistemas modernos como Java 7 y posteriores son compatibles con estos modos.

Los repositorios de CodeCommit se cifran automáticamente en reposo. No se requiere ninguna acción por parte del cliente. CodeCommit también cifra los datos en tránsito del repositorio. Puede usar el protocolo HTTPS, el protocolo SSH o ambos con los repositorios de CodeCommit. Para obtener más información, consulte [Configuración de AWS CodeCommit](setting-up.md). También puede configurar el [acceso entre cuentas](cross-account.md) a los repositorios de CodeCommit.

**Topics**
+ [AWS Key Management Service y cifrado para AWS CodeCommit repositorios](encryption.md)
+ [Conexión a AWS CodeCommit repositorios con credenciales rotativas](temporary-access.md)

# AWS Key Management Service y cifrado para AWS CodeCommit repositorios
<a name="encryption"></a>

Los datos de los CodeCommit repositorios se cifran en tránsito y en reposo. Cuando los datos se introducen en un CodeCommit repositorio (por ejemplo, mediante una llamada**git push**), CodeCommit cifra los datos recibidos tal como se almacenan en el repositorio. Cuando se extraen datos de un CodeCommit repositorio (por ejemplo, mediante una llamada**git pull**), CodeCommit los descifra y, a continuación, los envía a la persona que llama. Esto supone que el usuario de IAM asociado a la solicitud de inserción o extracción ha sido autenticado por. AWS Los datos enviados o recibidos se transmiten mediante los protocolos de red cifrada HTTPS o SSH.

Puede utilizar una clave gestionada por el cliente Clave administrada de AWS o una clave gestionada por el cliente para cifrar y descifrar los datos de su repositorio. Para obtener más información sobre las diferencias entre las claves administradas por el cliente y Claves administradas por AWS, consulte [Claves administradas por el cliente y Claves administradas por AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-mgmt). Si no especificas una clave gestionada por el cliente, CodeCommit utilizará una Clave administrada de AWS para cifrar y descifrar los datos de tu repositorio. Este Clave administrada de AWS se crea automáticamente para usted en su Cuenta de AWS. La primera vez que crees un CodeCommit repositorio en una nueva Región de AWS cuenta de Amazon Web Services, si no especificas una clave gestionada por el cliente, CodeCommit crea una Clave administrada de AWS (la `aws/codecommit` clave) en esa misma cuenta Región de AWS en AWS Key Management Service (AWS KMS). Esta `aws/codecommit` clave solo la utilizan CodeCommit. Se almacena en su cuenta de Amazon Web Services. Según lo que especifique, utilizará CodeCommit la clave gestionada por el cliente o la Clave administrada de AWS para cifrar y descifrar los datos del repositorio. 

**importante**  
 CodeCommit realiza las siguientes AWS KMS acciones con la AWS KMS clave utilizada para cifrar y descifrar los datos de un repositorio. Si utilizas una Clave administrada de AWS, el usuario no necesita permisos explícitos para realizar estas acciones, pero no debe tener ninguna política adjunta que deniegue estas acciones para la `aws/codecommit` clave. Si utilizas una clave gestionada por el cliente que tiene un Cuenta de AWS identificador establecido como principal de política para esa clave, estos permisos deben estar configurados de forma explícita en`allow`. En concreto, cuando crees tu primer repositorio y si actualizas las claves de tu repositorio, no debes tener ninguno de los siguientes permisos establecidos `deny` si utilizas una Clave administrada de AWS, y debes configurarlos `allow` si utilizas una clave gestionada por el cliente con un principio de política:  
`"kms:Encrypt"`
`"kms:Decrypt"`
`"kms:ReEncrypt"` (según el contexto, esto podría requerir `kms:ReEncryptFrom`,   
`kms:ReEncryptTo`, o `kms:ReEncrypt*` no configurado en denegación)
`"kms:GenerateDataKey"`
`"kms:GenerateDataKeyWithoutPlaintext"`
`"kms:DescribeKey"`

Si desea utilizar su propia clave gestionada por el cliente, la clave debe estar disponible en el Región de AWS lugar donde se encuentra el repositorio. CodeCommit admite el uso de claves administradas por clientes de una o varias regiones. Si bien se admiten todos los tipos de origen de materiales clave, recomendamos utilizar la opción **KMS** predeterminada. Los clientes que utilizan la opción de **Almacén de claves externo** pueden sufrir retrasos por parte del proveedor de la tienda. Además. CodeCommit tiene los siguientes requisitos para las claves gestionadas por el cliente:
+ CodeCommit solo admite el uso de claves simétricas.
+ El tipo de uso de la clave debe estar establecido en **Cifrar y descifrar**.

Para obtener más información sobre la creación de claves administradas por el cliente, consulte [Conceptos](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-mgmt) y [Creación de claves](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html).

Para ver información sobre lo Clave administrada de AWS generado por CodeCommit, haga lo siguiente:

1. Inicie sesión en la consola AWS Key Management Service (AWS KMS) Consola de administración de AWS y ábrala en [https://console.aws.amazon.com/kms.](https://console.aws.amazon.com/kms)

1. Para cambiarla Región de AWS, usa el selector de regiones en la esquina superior derecha de la página.

1. En el panel de navegación de servicio, seleccione **Claves administradas por AWS**. Asegúrese de haber iniciado sesión en el Región de AWS lugar donde desea revisar las claves. 

1. En la lista de claves de cifrado, elija la Clave administrada de AWS con el alias **aws/codecommit**. Se muestra información básica sobre el Clave propiedad de AWS .

No puede cambiarlo ni eliminarlo Clave administrada de AWS. 

## Cómo se utilizan los algoritmos de cifrado para cifrar los datos del repositorio
<a name="encryption-algorithms"></a>

CodeCommit utiliza dos enfoques diferentes para cifrar los datos. Los objetos de Git individuales de menos de 6 MB se cifran utilizando AES-GCM-256, que proporciona validación de integridad de los datos. Los objetos de entre 6 MB y un máximo de 2 GB para un único blob se cifran mediante AES-CBC-256. CodeCommit siempre valida el contexto de cifrado.

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

Cada servicio integrado AWS KMS especifica un contexto de cifrado para las operaciones de cifrado y descifrado. El contexto de cifrado consta de información autenticada adicional que usa AWS KMS para comprobar la integridad de los datos. Si se ha especificado para la operación de cifrado, también debe especificarse en la operación de descifrado. De lo contrario, se produce un error en el descifrado. CodeCommit utiliza el identificador del CodeCommit repositorio para el contexto de cifrado. Puede usar el **get-repository** comando o la CodeCommit consola para buscar el ID del repositorio. Busque el ID del CodeCommit repositorio en AWS CloudTrail los registros para saber qué operaciones de cifrado se realizaron y qué clave se AWS KMS utilizó para cifrar o descifrar los datos del CodeCommit repositorio.

Para obtener más información al respecto AWS KMS, consulte la Guía para [AWS Key Management Service desarrolladores](https://docs.aws.amazon.com/kms/latest/developerguide/).

# Conexión a AWS CodeCommit repositorios con credenciales rotativas
<a name="temporary-access"></a>

Puede conceder a los usuarios acceso a sus AWS CodeCommit repositorios sin necesidad de configurar los usuarios de IAM para ellos ni utilizar una clave de acceso y una clave secreta. Para asignar permisos a identidades federadas, debe crear un rol y definir permisos para este. Cuando se autentica una identidad federada, se asocia la identidad al rol y se le conceden los permisos define el rol. Para obtener información acerca de roles de federación, consulte [Crear un rol para un proveedor de identidad de terceros (federación)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html) en la *Guía de usuario de IAM*. Si utiliza el IAM Identity Center, debe configurar un conjunto de permisos. IAM Identity Center correlaciona el conjunto de permisos con un rol en IAM para controlar a qué pueden acceder las identidades después de autenticarse. Para obtener información acerca de los conjuntos de permisos, consulta [Conjuntos de permisos](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html) en la *Guía del usuario de AWS IAM Identity Center *. *También puede configurar el acceso basado en roles para que los usuarios de IAM accedan a los CodeCommit repositorios en cuentas independientes de Amazon Web Services (una técnica conocida como acceso entre cuentas).* Para obtener un tutorial de configuración del acceso entre cuentas en un repositorio, consulte [Configura el acceso multicuenta a un repositorio mediante roles AWS CodeCommit](cross-account.md). 

También puede configurar el acceso para los usuarios que desean o deben autenticarse a través de métodos como:
+ Lenguaje de marcado para confirmaciones de seguridad (SAML)
+ Autenticación multifactor (MFA)
+ Federación
+ Login with Amazon
+ Amazon Cognito
+ Facebook
+ Google
+ Proveedor de identidad compatible con OpenID Connect (OIDC)

**nota**  
La siguiente información se aplica únicamente al uso **git-remote-codecommit** o al asistente de AWS CLI credenciales para conectarse a los repositorios. CodeCommit Dado que el enfoque recomendado para el acceso temporal o federado CodeCommit es la configuración**git-remote-codecommit**, en este tema se proporcionan ejemplos del uso de esa utilidad. Para obtener más información, consulte [Pasos de configuración para las conexiones HTTPS a AWS CodeCommit con git-remote-codecommit](setting-up-git-remote-codecommit.md).   
No puedes usar credenciales SSH o Git ni HTTPS para conectarte a CodeCommit repositorios con credenciales de acceso rotativas o temporales. 

No es necesario que realice estos pasos si se cumplen todos los requisitos siguientes:
+ Ha iniciado sesión en una instancia de Amazon EC2.
+ Está utilizando Git y HTTPS con el asistente de AWS CLI credenciales para conectarse desde la instancia de Amazon EC2 a los repositorios. CodeCommit 
+ La instancia de EC2 tiene asociado un perfil de instancia de IAM que contiene los permisos de acceso definidos en [Para conexiones HTTPS en Linux, macOS o Unix con el asistente de AWS CLI credenciales](setting-up-https-unixes.md) o [Para las conexiones HTTPS en Windows con el ayudante de credenciales AWS CLI ](setting-up-https-windows.md).
+ Ha instalado y configurado la aplicación de ayudante de credenciales de Git en la instancia de EC2 tal como se describe en [Para conexiones HTTPS en Linux, macOS o Unix con el asistente de AWS CLI credenciales](setting-up-https-unixes.md) o [Para las conexiones HTTPS en Windows con el ayudante de credenciales AWS CLI ](setting-up-https-windows.md).

Las instancias Amazon EC2 que cumplen los requisitos anteriores ya están configuradas para comunicarle las credenciales de acceso temporal CodeCommit en su nombre.

**nota**  
Puede configurar y utilizar **git-remote-codecommit** en instancias de EC2.

Para conceder a los usuarios acceso temporal a sus CodeCommit repositorios, siga estos pasos.



## Paso 1: completar los requisitos previos
<a name="temporary-access-prerequisites"></a>

Complete los pasos de configuración para proporcionar a un usuario acceso a sus CodeCommit repositorios mediante credenciales rotativas: 
+ Para obtener más información sobre el acceso entre cuentas, consulte [Tutorial: Delegación del acceso entre cuentas de Amazon Web Services mediante roles de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-walkthrough-crossacct.html) y [Configura el acceso multicuenta a un repositorio mediante roles AWS CodeCommit](cross-account.md).
+ Para conocer el SAML y la federación, consulta Cómo [usar el sistema de autenticación de tu organización para conceder acceso a AWS los recursos](https://docs.aws.amazon.com/STS/latest/UsingSTS/STSUseCases.html#IdentityBrokerApplication) y [Acerca de la federación basada en AWS STS SAML 2.0.](https://docs.aws.amazon.com/STS/latest/UsingSTS/CreatingSAML.html)
+ Para obtener más información sobre MFA, consulte [Uso de dispositivos con autenticación multifactor (MFA) con AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingMFA.html) y [Creación de credenciales de seguridad temporales para permitir el acceso a los usuarios de IAM](https://docs.aws.amazon.com/STS/latest/UsingSTS/CreatingSessionTokens.html).
+ [Para iniciar sesión con Amazon, Amazon Cognito, Facebook, Google o cualquier proveedor de identidad compatible con OIDC, consulte Acerca de Web Identity Federation. AWS STS](https://docs.aws.amazon.com/STS/latest/UsingSTS/web-identity-federation.html)

Utilice la información [Autenticación y control de acceso para AWS CodeCommit](auth-and-access-control.md) para especificar los CodeCommit permisos que quiere conceder al usuario.

## Paso 2: Obtener el nombre de rol o las credenciales de acceso
<a name="temporary-access-get-credentials"></a>

Si desea que los usuarios accedan a los repositorios asumiendo un rol, proporcione a los usuarios el nombre de recurso de Amazon (ARN) de ese rol. De lo contrario, dependiendo de la forma en que configure el acceso, el usuario puede obtener credenciales rotativas de una de las siguientes maneras:
+ Para acceder a varias cuentas, ejecuta el comando AWS CLI [assume-role](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) o llama a la API. AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)
+ [En el caso de SAML, llama al AWS CLI[assume-role-with-saml](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-saml.html)comando o a la API de SAML. AWS STS AssumeRoleWith](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)
+ Para la federación, llama a AWS CLI [assume-role](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) o [get-federation-token](https://docs.aws.amazon.com/cli/latest/reference/sts/get-federation-token.html)comandos o a o. 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, llame al AWS CLI [get-session-token](https://docs.aws.amazon.com/cli/latest/reference/sts/get-session-token.html)comando o a la API. AWS STS [GetSessionToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html)
+ Para Login with Amazon, Amazon Cognito, Facebook, Google o cualquier proveedor de identidad compatible con OIDC, llama al comando AWS CLI [assume-role-with-web-identity](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html) o a la API. AWS STS [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)



## Paso 3: Instale y configure la git-remote-codecommit AWS CLI
<a name="temporary-access-configure-credentials"></a>

Debe configurar el equipo local para que utilice las credenciales de acceso instalando [https://pypi.org/project/git-remote-codecommit/](https://pypi.org/project/git-remote-codecommit/) y configurando un perfil en la AWS CLI.

1. Siga las instrucciones que se detallan en [Configuración ](setting-up.md) para configurar la AWS CLI. Utilice el comando **aws configure** para configurar uno o varios perfiles. Considere la posibilidad de crear un perfil con nombre para usarlo cuando se conecte a CodeCommit los repositorios mediante credenciales rotativas.

1. Puede asociar las credenciales al perfil AWS CLI nombrado del usuario de una de las siguientes maneras. 
   + Si está asumiendo un rol al que acceder CodeCommit, configure un perfil con nombre con la información necesaria para asumir ese rol. Por ejemplo, si desea asumir una función nombrada *CodeCommitAccess* en la cuenta de Amazon Web Services 1111, puede configurar un perfil predeterminado para usarlo cuando trabaje con otros AWS recursos y un perfil con nombre para usarlo cuando asuma esa función. Los siguientes comandos crean un nombre de perfil con nombre asignado *CodeAccess* que asume un rol denominado*CodeCommitAccess*. El nombre de usuario *Maria\$1Garcia* está asociado a la sesión y el perfil predeterminado se establece como la fuente de sus AWS credenciales:

     ```
     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
     ```

     Si desea verificar los cambios, consulte o edite manualmente el archivo `~/.aws/config` (para Linux) o el archivo `%UserProfile%.aws\config` (para Windows) y revise la información bajo el perfil con nombre. Por ejemplo, el archivo podría tener un aspecto similar al siguiente:

     ```
     [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
     ```

      Después de configurar el perfil con nombre, puede clonar repositorios de CodeCommit con la utilidad **git-remote-codecommit** utilizando el perfil con nombre. Por ejemplo, para clonar un repositorio denominado *MyDemoRepo*: 

     ```
     git clone codecommit://CodeAccess@MyDemoRepo
     ```
   + Si utiliza la federación de identidades web y OpenID Connect (OIDC), configure un perfil con nombre que haga la llamada a la `AssumeRoleWithWebIdentity` API AWS Security Token Service (AWS STS) en su nombre para actualizar las credenciales temporales. Utilice el **aws configure set** comando o edite manualmente el `~/.aws/credentials` archivo (para Linux) o el `%UserProfile%.aws\credentials` archivo (para Windows) para añadir un perfil con AWS CLI nombre y los valores de configuración necesarios. Por ejemplo, para crear un perfil que asuma la *CodeCommitAccess* función y utilice un archivo de token de identidad 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 obtener más información, consulte [Configuración de AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) y [Uso de un rol de IAM en la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html) en la *Guía del usuario de AWS Command Line Interface *.

## Paso 4: Acceder a los repositorios CodeCommit
<a name="temporary-access-use-credentials"></a>

Suponiendo que el usuario haya seguido las instrucciones para conectarse [Conectarse a un repositorio](how-to-connect.md) a CodeCommit los repositorios, utilizará la funcionalidad ampliada proporcionada por **git-remote-codecommit** Git para llamar **git clone** y **git pull** clonar, enviar y extraer datos de los CodeCommit repositorios a los que tiene acceso. **git push** Por ejemplo, para clonar un repositorio:

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

Los comandos commit, push y pull de Git usan la sintaxis normal de Git. 

Cuando el usuario usa AWS CLI y especifica el AWS CLI nombre del perfil asociado a las credenciales de acceso rotativas, se muestran los resultados relacionados con ese perfil.

