Limite los empujes y las fusiones a las ramificaciones AWS CodeCommit - AWS CodeCommit

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

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.

Limite los empujes y las fusiones a las ramificaciones AWS CodeCommit

De forma predeterminada, cualquier usuario del CodeCommit repositorio que tenga permisos suficientes para insertar código en el repositorio puede contribuir a cualquier rama de ese repositorio. Esto se aplica independientemente de cómo se agregue una ramificación al repositorio, ya sea desde la consola, la línea de comandos o Git. Sin embargo, es posible que desee configurar una ramificación de tal forma que solo algunos usuarios del repositorio puedan insertar o combinar el código en ella. Por ejemplo, puede que desee configurar una ramificación que se use para el código de producción de modo que únicamente un subconjunto de los desarrolladores sénior puedan insertar o combinar cambios en ella. Los demás desarrolladores podrán extraer código de la ramificación, crear sus propias ramificaciones y crear solicitudes de extracción, pero no podrán insertar ni combinar cambios en ella. Puedes configurar este acceso creando una política condicional que utilice una clave de contexto para una o más sucursalesIAM.

nota

Para completar algunos de los procedimientos de este tema, debe iniciar sesión con un usuario administrativo que tenga permisos suficientes para configurar y aplicar IAM políticas. Para obtener más información, consulte Creación de un usuario y un IAM grupo de administradores.

Configure una IAM política para limitar las transferencias y fusiones en una sucursal

Puedes crear una política IAM que impida que los usuarios actualicen una sucursal, lo que incluye enviar las confirmaciones a una sucursal y fusionar las solicitudes de incorporación de cambios a una sucursal. Para ello, la política usa una instrucción condicional, de tal forma que el efecto de la instrucción Deny se aplique únicamente si se cumple la condición. Lo APIs que incluya en la Deny declaración determinará qué acciones no están permitidas. Puede configurar esta política de modo que solo se aplique a una ramificación del repositorio, a varias de ellas en el mismo repositorio o a todas las ramificaciones que coincidan con los criterios de todos los repositorios de una cuenta de Amazon Web Services.

Para crear una política condicional para las ramificaciones
  1. Inicie sesión en AWS Management Console y abra la IAM consola en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación, seleccione Políticas.

  3. Elija Create Policy (Crear política).

  4. Elija y JSON, a continuación, pegue el siguiente ejemplo de política. Sustituya el valor Resource ARN de por el del repositorio que contiene la rama a la que desea restringir el acceso. Reemplace el valor codecommit:References por una referencia a la ramificación o ramificaciones a las que desee restringir el acceso. Por ejemplo, esta política prohíbe enviar confirmaciones, fusionar ramas, eliminar ramas, eliminar archivos, fusionar solicitudes de incorporación de cambios y añadir archivos a una rama llamada main y una rama nombrada prod en un repositorio llamada: MyDemoRepo

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codecommit:GitPush", "codecommit:DeleteBranch", "codecommit:DeleteFile", "codecommit:PutFile", "codecommit:MergeBranchesByFastForward", "codecommit:MergeBranchesBySquash", "codecommit:MergeBranchesByThreeWay", "codecommit:MergePullRequestByFastForward", "codecommit:MergePullRequestBySquash", "codecommit:MergePullRequestByThreeWay" ], "Resource": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "Condition": { "StringEqualsIfExists": { "codecommit:References": [ "refs/heads/main", "refs/heads/prod" ] }, "Null": { "codecommit:References": "false" } } } ] }

    Las ramas en Git son simplemente indicadores (referencias) al valor SHA -1 de la confirmación principal, por lo que la condición usaReferences. La instrucción Null es obligatoria en todas las políticas cuyo efecto sea Deny y en las que una de las acciones sea GitPush. Esto es necesario debido a la forma en que Git y Git git-receive-pack funcionan cuando se envían cambios desde un repositorio local a CodeCommit.

    sugerencia

    Para crear una política que se aplique a todas las ramas denominadas main en todos los repositorios de una cuenta de Amazon Web Services, cambie el valor de Resource from ARN a repository a un asterisco ()*.

  5. Elija Revisar política. Corrija los errores de la instrucción de la política y, a continuación, continúe con Create policy (Crear política).

  6. Cuando JSON se valida, aparece la página de creación de políticas. Se muestra una advertencia en la sección Summary (Resumen) que le informa de que esta política no concede permisos. Esto es normal.

    • En Name (Nombre), escriba un nombre para esta política; por ejemplo, DenyChangesToMain.

    • En Description (Descripción), introduzca una descripción de la finalidad de la política. Esto es opcional, pero recomendable.

    • Elija Crear política.

Aplique la IAM política a un IAM grupo o rol

Ha creado una política que limita las inserciones y fusiones en una sucursal, pero la política no surtirá efecto hasta que no la aplique a un IAM usuario, grupo o rol. Como práctica recomendada, considera la posibilidad de aplicar la política a un IAM grupo o rol. La aplicación de políticas a IAM usuarios individuales no se adapta bien.

Para aplicar la política condicional a un grupo o función
  1. Inicie sesión en AWS Management Console y abra la IAM consola en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación, si desea aplicar la política a un IAM grupo, elija Grupos. Si desea aplicar la política a un rol que asuman los usuarios, elija Rol. Seleccione el nombre del grupo o la función.

  3. En la pestaña Permissions, elija Attach Policy.

  4. Seleccione la política condicional que ha creado en la lista de políticas y, a continuación, elija Attach policy (Adjuntar política).

Para obtener más información, consulte Adjuntar y separar IAM políticas.

Comprobación de la política

Debe probar los efectos de la política que ha aplicado al grupo o función para asegurarse de que actúa según lo previsto. Existen muchas formas de realizar esta operación. Por ejemplo, para probar una política similar a la que se muestra anteriormente, puede hacer lo siguiente:

  • Inicie sesión en la CodeCommit consola con un IAM usuario que sea miembro de un IAM grupo al que se haya aplicado la política o que asuma un rol al que se le haya aplicado la política. En la consola, agregue un archivo en la ramificación a la que se aplican las restricciones. Debería aparecer un mensaje de error al intentar guardar o cargar un archivo en esa ramificación. Agregue un archivo a otra ramificación. La operación debería realizarse correctamente.

  • Inicie sesión en la CodeCommit consola con un IAM usuario que sea miembro de un IAM grupo al que se haya aplicado la política o que asuma un rol al que se le haya aplicado la política. Cree una solicitud de extracción que se combine con la ramificación a la que se aplican las restricciones. Debería poder crear la solicitud de extracción, pero debería aparecer un error si intenta combinarla.

  • Desde el terminal o la línea de comandos, crea una confirmación en la rama en la que se aplican las restricciones y, a continuación, envía esa confirmación al CodeCommit repositorio. Debería aparecer un mensaje de error. Las confirmaciones e inserciones realizadas desde otras ramificaciones deberían funcionar normalmente.