Autenticación y control de acceso para AWS CodeCommit - AWS CodeCommit

AWS CodeCommit ya no está disponible para los nuevos clientes. Los clientes existentes de AWS CodeCommit pueden seguir utilizando el servicio con normalidad. Más información"

Autenticación y control de acceso para AWS CodeCommit

El acceso a AWS CodeCommit requiere credenciales. Estas credenciales deben tener permisos para obtener acceso a los recursos de AWS, como repositorios de CodeCommit y su usuario de IAM, que se utiliza para administrar las credenciales de Git o la clave pública SSH que sirve para realizar las conexiones de Git. En las secciones siguientes se incluye información detallada sobre cómo usar AWS Identity and Access Management (IAM) y CodeCommit para proteger el acceso a sus recursos:

Autenticación

Dado que los repositorios de CodeCommit están basados en Git y admiten la funcionalidad básica de Git, incluidas las credenciales de Git, le recomendamos que utilice un usuario de IAM cuando trabaje con CodeCommit. Puede acceder a CodeCommit con otros tipos de identidades, pero están sujetos a limitaciones, tal y como se describe a continuación.

Tipos de identidades:

  • Usuario de IAM: un usuario de IAM es simplemente una identidad en su Amazon Web Services que tiene permisos personalizados específicos. Por ejemplo, un usuario de IAM puede tener permisos para crear y administrar las credenciales de Git para obtener acceso a repositorios de CodeCommit. Este es el tipo de usuario recomendado para trabajar con CodeCommit. Puede usar una contraseña y un nombre de usuario de IAM para iniciar sesión en páginas web de AWSseguras, como Consola de administración de AWS, Foros de debate de AWSo el Centro de AWS Support.

    Puede generar credenciales de Git o asociar claves SSH públicas a su usuario de IAM o puede instalar y configurar git-remote-codecommit. Estas son las formas más sencillas de configurar Git para trabajar con sus repositorios de CodeCommit. Con las credenciales de Git, puede generar un nombre de usuario y contraseña estáticos en IAM. Seguidamente, puede utilizar estas credenciales para las conexiones HTTPS con Git y cualquier herramienta de terceros que admita la autenticación con nombre de usuario y contraseña de Git. Con conexiones SSH, debe crear archivos de claves públicas y privadas en su equipo local que Git y CodeCommit utilizarán para la autenticación SSH. Asocie la clave pública con el usuario de IAM y almacene la clave privada en el equipo local. git-remote-codecommit amplía la funcionalidad de Git y no requiere la configuración de credenciales de Git para el usuario.

    Además, puede generar claves de acceso para cada usuario. Utilice estas claves cuando obtenga acceso a los servicios de AWS mediante programación, ya sea a través de uno de los distintos SDK de AWS o mediante la AWS Command Line Interface (AWS CLI). El SDK y las herramientas de CLI usan claves de acceso para firmar criptográficamente las solicitudes. Si no utiliza las herramientas de AWS, debe firmar usted mismo las solicitudes. CodeCommit es compatible con Signature Version 4, un protocolo para autenticar solicitudes de API de entrada. Para obtener más información acerca de la autenticación de solicitudes, consulte Proceso de firma Signature Version 4 en la Referencia general de AWS.

  • Usuario raíz de la cuenta de Amazon Web Services: cuando se registra en AWS, proporciona una dirección de correo electrónico y contraseña asociada a su cuenta de Amazon Web Services. Estas son las credenciales raíz y proporcionan acceso completo a todos los recursos de AWS. Algunas características de CodeCommit no están disponibles para los usuarios de la cuenta raíz. Además, la única forma de usar Git con su cuenta raíz es instalar y configurar git-remote-codecommit(recomendado) o configurar la aplicación ayudante de credenciales de AWS, que se incluye con la AWS CLI. No puede utilizar las credenciales de Git o pares de claves públicas y privadas SSH con su usuario de la cuenta raíz. Por estas razones, no le recomendamos utilizar el usuario de la cuenta raíz cuando interactúe con CodeCommit.

    importante

    Por motivos de seguridad, le recomendamos que utilice las credenciales raíz solo para crear un usuario administrador, que es un usuario de IAM con permiso total para administrar su cuenta de AWS. A continuación, puede utilizar este usuario administrador para crear otros usuarios y roles de IAM; con permisos limitados. Para obtener más información, consulte Prácticas recomendadas de IAM y Creación de un grupo y usuario administrador en la Guía del usuario de IAM.

  • IAM Identity Center y sus usuarios: AWS IAM Identity Center amplía las capacidades de AWS Identity and Access Management para proporcionar un lugar central que reúna la administración de usuarios y su acceso a Cuentas de AWS y aplicaciones en la nube. Si bien es una práctica recomendada para la mayoría de los usuarios que trabajan con AWS, IAM Identity Center actualmente no proporciona mecanismos para las credenciales de Git o los pares de claves SSH. Estos usuarios pueden instalar y configurar git-remote-codecommit para clonar localmente los repositorios de CodeCommit, pero no todos los entornos de desarrollo integrados (IDE) admiten la clonación, inserción o extracción con git-remote-codecommit.

    Como práctica recomendada, exija a los usuarios humanos que utilicen la federación con un proveedor de identidades para acceder a Servicios de AWS con credenciales temporales.

    Una identidad federada es un usuario del directorio empresarial, proveedor de identidades web o Directory Service que accede a Servicios de AWS mediante credenciales de un origen de identidad. Las identidades federadas asumen roles que proporcionan credenciales temporales.

    Para una administración de acceso centralizada, le recomendamos AWS IAM Identity Center. Para obtener más información, consulte ¿Qué es el Centro de identidades de IAM? en la Guía del usuario de AWS IAM Identity Center.

  • Rol de IAM: al igual que un usuario de IAM, un rol de IAM es una identidad de IAM que puede crear en la cuenta para conceder permisos específicos.

    Un rol de IAM es una identidad con permisos específicos que proporciona credenciales temporales. Puede asumir un rol cambiando de un usuario a un rol de IAM (consola) o llamando a una operación de la API de la AWS CLI o AWS. Para obtener más información, consulte Métodos para asumir un rol en la Guía del usuario de IAM.

    Los roles de IAM son útiles para el acceso de usuarios federados, los permisos de usuario de IAM temporales, el acceso entre cuentas, el acceso entre servicios y las aplicaciones que se ejecutan en Amazon EC2. Para obtener más información, consulte Acceso a recursos entre cuentas en IAM en la Guía del usuario de IAM.

    nota

    No puede utilizar las credenciales de Git o pares de claves públicas y privadas SSH con usuarios federados. Además, las preferencias del usuario no están disponibles para los usuarios federados. Para obtener información acerca de cómo configurar conexiones mediante el acceso federado, consulte Pasos de configuración para conexiones HTTPS a AWS CodeCommit con git-remote-codecommit.

Control de acceso

Aunque disponga de credenciales válidas para autenticar las solicitudes, si no tiene permisos, no podrá crear recursos de CodeCommit ni obtener acceso a ellos. Por ejemplo, debe disponer de permisos para ver repositorios, enviar código, crear y administrar credenciales de Git, etc.

En las secciones siguientes, se describe cómo administrar los permisos de CodeCommit. Recomendamos que lea primero la información general.

Información general sobre la administración de los permisos de acceso a los recursos de CodeCommit

Todos los recursos de AWS son propiedad de una cuenta de Amazon Web Services. Los permisos de creación o acceso a un recurso se rigen por políticas de permisos. Un administrador de cuentas puede asociar políticas de permisos a identidades de IAM (es decir, usuarios, grupos y funciones). Algunos servicios, como AWS Lambda, también permiten asociar políticas de permisos a los recursos.

nota

Un administrador de cuentas (o usuario administrador) es un usuario que tiene privilegios de administrador. Para obtener más información, consulte Prácticas recomendadas de IAM en la Guía del usuario de IAM.

Al conceder permisos, usted decide quién obtiene los permisos, para qué recursos se obtienen permisos y qué acciones específicas desea permitir en esos recursos.

Recursos y operaciones de CodeCommit

En CodeCommit, el recurso principal es un repositorio. Cada recurso tiene asociado un nombre de recurso de Amazon (ARN) único. En las políticas se emplean nombres de recurso de Amazon (ARN) para identificar los recursos a los que se aplican las políticas. Para obtener más información sobre los ARN, consulte Nombres de recursos de Amazon (ARN) y espacios de nombres de servicios de AWS en la Referencia general de Amazon Web Services. CodeCommit no admite actualmente otros tipos de recursos, que se denominan subrecursos.

En la tabla siguiente se describe cómo especificar recursos de CodeCommit.

Tipo de recurso Formato de ARN
Repositorio

arn:aws:codecommit:región:id-cuenta:nombre-repositorio

Todos los repositorios de CodeCommit

arn:aws:codecommit:*

Todos los repositorios de CodeCommit que pertenecen a la cuenta especificada en la Región de AWS especificada

arn:aws:codecommit:región:id-cuenta:*

nota

La mayoría de los servicios de AWS tratan el carácter de dos puntos (:) o la barra diagonal (/) como si fueran el mismo carácter en los ARN. Sin embargo, CodeCommit requiere una coincidencia exacta en las reglas y los patrones de los recursos. Al crear patrones de eventos, asegúrese de utilizar los caracteres de ARN correctos para que coincidan con la sintaxis de ARN en el recurso.

Por ejemplo, puede indicar un repositorio específico (MyDemoRepo) en la instrucción usando su ARN de este modo:

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

Para especificar todos los repositorios que pertenecen a una cuenta específica, use el carácter comodín (*) del modo siguiente:

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

Para especificar todos los recursos o cuando una acción de API no admite ARN, utilice el carácter comodín (*) en el elemento Resource de la siguiente manera:

"Resource": "*"

También puede utilizar el carácter comodín (*) para especificar todos los recursos que coinciden con parte de un nombre de repositorio. Por ejemplo, el siguiente ARN especifica cualquier repositorio de CodeCommit que comience por el nombre MyDemo y que esté registrado en la cuenta de Amazon Web Services 111111111111 en la Región de AWSus-east-2:

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

Para obtener una lista de las operaciones disponibles que funcionan con los recursos de CodeCommit, consulte Referencia de permisos de CodeCommit.

Titularidad de los recursos

La cuenta de Amazon Web Services es la propietaria de los recursos que se crean en la cuenta, independientemente de quién los haya creado. En concreto, el propietario de los recursos es la cuenta de Amazon Web Services es la entidad principal (es decir, la cuenta raíz, un usuario de IAM o un rol de IAM) que autentica la solicitud de creación de recursos. Los siguientes ejemplos ilustran cómo funciona:

  • Si crea un usuario de IAM en su cuenta de Amazon Web Services y le concede permisos para crear recursos de CodeCommit para ese usuario, el usuario podrá crear recursos de CodeCommit. Sin embargo, su cuenta de Amazon Web Services, a la que pertenece el usuario, será la propietaria de los recursos de CodeCommit.

  • Si utiliza las credenciales de cuenta de usuario raíz de su cuenta de Amazon Web Services para crear una regla, la cuenta de Amazon Web Services será la propietaria del recurso de CodeCommit.

  • Si crea un rol de IAM en su cuenta de Amazon Web Services con permisos para crear recursos de CodeCommit, cualquier persona que pueda asumir el rol podrá crear recursos de CodeCommit. La cuenta de Amazon Web Services a la que pertenece el rol será la propietaria de los recursos de CodeCommit.

Administración del acceso a los recursos

Para administrar el acceso a los recursos de AWS, utilice políticas de permisos. Una política de permisos describe quién tiene acceso a qué. En la siguiente sección se explican las opciones para crear políticas de permisos.

nota

En esta sección se explica el uso de IAM en el contexto de CodeCommit. No se proporciona información detallada sobre el servicio de IAM. Para obtener más información acerca de IAM, consulte ¿Qué es IAM? en la Guía del usuario de IAM. Para obtener más información acerca de la sintaxis y las descripciones de las políticas del IAM, consulte Referencia de políticas de IAM de en la Guía del usuario de IAM.

Las políticas de permisos que se asocian a una identidad de IAM se denominan políticas basadas en la identidad (políticas de IAM). Las políticas de permisos que se asocian a un recurso se denominan políticas basadas en recursos. Actualmente, CodeCommit solo admite políticas basadas en identidad (políticas de IAM).

Políticas basadas en identidades (políticas de IAM)

Para administrar el acceso a los recursos de AWS, las políticas de permisos se asocian a identidades de IAM. En CodeCommit, las políticas basadas en identidad se utilizan para controlar el acceso a repositorios. Por ejemplo, puede hacer lo siguiente:

  • Asociar una política de permisos a un usuario o un grupo de su cuenta: para conceder permisos a un usuario para ver recursos de CodeCommit en la consola de CodeCommit, puede asociar una política de permisos basada en identidad a un usuario o a un grupo al que pertenezca el usuario.

  • Asociar una política de permisos a un rol (para conceder permisos entre cuentas): la delegación como, por ejemplo, cuando se desea conceder acceso entre cuentas, implica el establecimiento de una relación de confianza entre la cuenta que posee el recurso (la cuenta que confía) y la cuenta que contiene los usuarios que necesitan acceder al recurso (la cuenta en la que se confía). Una política de permisos concede al usuario del rol los permisos necesarios para realizar las tareas previstas en el recurso. Una política de confianza especifica las cuentas de confianza que pueden conceder permisos a sus usuarios para asumir el rol. Para obtener más información, consulte Términos y conceptos sobre IAM.

    Para conceder permisos entre cuentas, asocie una política de permisos basada en identidad a un rol de IAM. Por ejemplo, el administrador de la CuentaA puede crear un rol para conceder permisos entre cuentas a otra cuenta de Amazon Web Services (por ejemplo, a la Cuenta B) o a un servicio de AWS, tal y como se indica a continuación:

    1. El administrador de la CuentaA crea un rol de IAM y asocia una política de permisos a dicho rol, que concede permisos sobre los recursos de la CuentaA.

    2. El administrador de la CuentaA asocia una política de confianza al rol que identifica la Cuenta B como la entidad principal que puede asumir el rol.

    3. A continuación, el administrador de la Cuenta B puede delegar a cualquier usuario de la Cuenta B permisos para asumir la función. De este modo, los usuarios de la Cuenta B podrán crear recursos y tener acceso a ellos en la CuentaA. Si desea conceder a un servicio de AWS permisos para asumir la función, la entidad principal de la política de confianza deberá ser también una entidad principal de AWS. Para obtener más información, consulte Delegación en Términos y conceptos sobre IAM.

    Para obtener más información sobre el uso de IAM para delegar permisos, consulte Administración de accesos en la Guía del usuario de IAM.

La siguiente política de ejemplo permite a un usuario crear una ramificación en un repositorio denominado MyDemoRepo:

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

Para restringir las llamadas y los recursos a los que los usuarios de su cuenta tienen acceso, cree políticas específicas de IAM y, a continuación, asocie esas políticas a usuarios de IAM. Para obtener más información sobre cómo crear roles de IAM y para ver instrucciones de políticas de IAM de ejemplo para CodeCommit, consulte Ejemplos de políticas de identidad administradas por los clientes.

Políticas basadas en recursos

Algunos servicios, como Amazon S3, también admiten políticas de permisos basadas en recursos. Por ejemplo, puede asociar una política basada en recursos a un bucket de S3 para administrar los permisos de acceso a dicho bucket. CodeCommit no admite políticas basadas en recursos, pero puede usar etiquetas para identificar los recursos, que luego puede usar en las políticas de IAM. Para ver un ejemplo de una política basada en etiquetas, consulte Políticas basadas en identidades (políticas de IAM).

Alcance de recursos en CodeCommit

En CodeCommit, puede definir el ámbito de las políticas basadas en identidad y los permisos para recursos, tal y como se describe en Recursos y operaciones de CodeCommit. Sin embargo, no puede definir el ámbito del permiso ListRepositories para un recurso. En su lugar, debe definir el ámbito para todos los recursos (utilizando el comodín *). De no hacerlo, la acción dará error.

Se puede definir el ámbito de todos los demás permisos de CodeCommit para los recursos.

Especificar elementos de políticas: recursos, acciones, efectos y entidades principales

Puede crear políticas para permitir o denegar a los usuarios el acceso a los recursos o permitir o denegar a los usuarios que realicen acciones específicas en esos recursos. CodeCommit define un conjunto de operaciones API públicas que definen cómo trabajan los usuarios con el servicio, si es a través de la consola de CodeCommit, los SDK, la AWS CLI o llamando directamente a esas API. Para conceder permisos para estas operaciones de API, CodeCommit define un conjunto de acciones que usted puede especificar en una política.

Algunas operaciones API pueden requerir permisos para realizar más de una acción. Para obtener más información sobre los recursos y las operaciones de API, consulte Recursos y operaciones de CodeCommit y Referencia de permisos de CodeCommit.

A continuación se indican los elementos básicos de una política:

  • Recurso: para identificar el recurso al que se aplica la política, use un nombre de recurso de Amazon (ARN). Para obtener más información, consulte Recursos y operaciones de CodeCommit.

  • Acción: para identificar las operaciones del recurso que desea permitir o denegar, utilice palabras de clave de acción. Por ejemplo, en función del Effect especificado, el permiso de codecommit:GetBranch permite o deniega al usuario que realice la operación de GetBranch, que obtiene información acerca de una ramificación en un repositorio de CodeCommit.

  • Efecto: especifique el efecto que se producirá cuando el usuario solicite la acción específica, ya sea permitir o denegar. Si no concede acceso de forma explícita (permitir) a un recurso, el acceso se deniega implícitamente. También puede denegar explícitamente el acceso a un recurso para asegurarse de que un usuario no pueda obtener acceso a él, aunque otra política le conceda acceso.

  • Entidad principal: en las políticas basadas en identidad (políticas de IAM), que es el único tipo de política que admite CodeCommit, el usuario al que se asocia esta política es la entidad principal implícita.

Para obtener más información sobre la sintaxis de las políticas de IAM consulte la Referencia sobre la política de IAM en la Guía del usuario de IAM.

Para ver una tabla con todas las acciones de la API de CodeCommit y los recursos a los que se aplican, consulte Referencia de permisos de CodeCommit.

Especificación de las condiciones de una política

Al conceder permisos, puede utilizar el lenguaje de la política de acceso de IAM para especificar las condiciones en las que se debe aplicar una política. Por ejemplo, es posible que desee que solo se aplique una política después de una fecha específica. Para obtener más información sobre cómo especificar condiciones en un lenguaje de política, consulte Condición y Gramática de políticas en la Guía de usuario de IAM.

Cómo expresar condiciones, se usan claves de condición predefinidas. No hay claves de condición específicas para CodeCommit. No obstante, existen claves de condición que se aplican a todo AWS que puede utilizar cuando corresponda. Para ver una lista completa de las claves que se aplican a todo AWS, consulte Claves disponibles para las condiciones en la Guía del usuario de IAM.