Ejemplos de políticas administradas por el cliente - 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.

Ejemplos de políticas administradas por el cliente

Puede crear sus propias IAM políticas personalizadas para permitir permisos para CodeCommit acciones y recursos. Puede adjuntar estas políticas personalizadas a los IAM usuarios o grupos que requieren esos permisos. También puede crear sus propias IAM políticas personalizadas para la integración entre CodeCommit y otros AWS servicios.

Ejemplos de políticas de identidad administradas por los clientes

Los siguientes ejemplos de IAM políticas conceden permisos para diversas CodeCommit acciones. Úselas para limitar el CodeCommit acceso de sus IAM usuarios y roles. Estas políticas controlan la capacidad de realizar acciones con la CodeCommit consolaAPI, AWS SDKs, o el AWS CLI.

nota

Todos los ejemplos utilizan la región EE.UU. Oeste (Oregón) (us-west-2) y contienen una cuenta ficticia. IDs

Ejemplos

Ejemplo 1: permitir que un usuario realice CodeCommit operaciones en una sola Región de AWS

La siguiente política de permisos utiliza un carácter comodín ("codecommit:*") para permitir a los usuarios realizar todas CodeCommit las acciones en la región us-east-2 y no desde otras. Regiones de AWS

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codecommit:*", "Resource": "arn:aws:codecommit:us-east-2:111111111111:*", "Condition": { "StringEquals": { "aws:RequestedRegion": "us-east-2" } } }, { "Effect": "Allow", "Action": "codecommit:ListRepositories", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": "us-east-2" } } } ] }

Ejemplo 2: permitir a un usuario utilizar Git para un solo repositorio

En CodeCommit, los permisos GitPull IAM de la política se aplican a cualquier comando del cliente Git del que se recuperen datos CodeCommit git fetchgit clone, incluidos, etc. Del mismo modo, los permisos GitPush IAM de la política se aplican a cualquier comando del cliente Git al que se envíen los datos CodeCommit. Por ejemplo, si el permiso GitPush IAM de la política está establecido enAllow, un usuario puede solicitar la eliminación de una rama mediante el protocolo Git. Ese envío no se ve afectado por ningún permiso aplicado a la DeleteBranch operación para ese IAM usuario. El DeleteBranch permiso se aplica a las acciones realizadas con la consola AWS CLI SDKs, el protocolo Git y el protocolo GitAPI, pero no con él.

El siguiente ejemplo permite al usuario especificado extraer datos del CodeCommit repositorio denominado y enviarlos a élMyDemoRepo:

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

Ejemplo 3: permitir a un usuario conectarse desde un rango de direcciones IP específicas para obtener acceso a un repositorio

Puede crear una política que solo permita a los usuarios conectarse a un CodeCommit repositorio si su dirección IP se encuentra dentro de un intervalo de direcciones IP determinado. Para ello, existen dos enfoques igualmente válidos. Puede crear una Deny política que prohíba CodeCommit las operaciones si la dirección IP del usuario no está dentro de un bloque específico, o puede crear una Allow política que permita CodeCommit las operaciones si la dirección IP del usuario está dentro de un bloque específico.

Puede crear una política Deny que deniegue el acceso a todos los usuarios que no están en un determinado rango de IP. Por ejemplo, puedes adjuntar la política AWSCodeCommitPowerUser administrada y una política administrada por el cliente a todos los usuarios que necesiten acceder a tu repositorio. El siguiente ejemplo de política deniega todos los CodeCommit permisos a los usuarios cuyas direcciones IP no estén dentro del bloque de direcciones IP especificado de 203.0.113.0/16:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codecommit:*" ], "Resource": "*", "Condition": { "NotIpAddress": { "aws:SourceIp": [ "203.0.113.0/16" ] } } } ] }

El siguiente ejemplo de política permite al usuario especificado acceder a un CodeCommit repositorio nombrado MyDemoRepo con los permisos equivalentes a los de la política AWSCodeCommitPowerUser administrada solo si su dirección IP se encuentra dentro del bloque de direcciones especificado de 203.0.113.0/16:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:BatchGetRepositories", "codecommit:CreateBranch", "codecommit:CreateRepository", "codecommit:Get*", "codecommit:GitPull", "codecommit:GitPush", "codecommit:List*", "codecommit:Put*", "codecommit:Post*", "codecommit:Merge*", "codecommit:TagResource", "codecommit:Test*", "codecommit:UntagResource", "codecommit:Update*" ], "Resource": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "Condition": { "IpAddress": { "aws:SourceIp": [ "203.0.113.0/16" ] } } } ] }

Ejemplo 4: denegar o permitir acciones en las ramificaciones

Puede crear una política que deniegue a los usuarios permisos para realizar las acciones que especifique en una o varias ramificaciones. Si lo prefiere, puede crear una política que permita realizar en una o varias ramificaciones acciones que no estén disponibles en otras ramificaciones del repositorio. Puede utilizar estas políticas con las políticas administradas (predefinidas) apropiadas. Para obtener más información, consulte Limite los empujes y las fusiones a las ramificaciones AWS CodeCommit.

Por ejemplo, puedes crear una Deny política que niegue a los usuarios la posibilidad de realizar cambios en una rama denominada main, incluida la eliminación de esa rama, en un repositorio denominado MyDemoRepo. Puede utilizar esta política con la política AWSCodeCommitPowerUsergestionada. Los usuarios que apliquen estas dos políticas podrán crear y eliminar ramas, crear solicitudes de extracción y todas las demás acciones que permitan AWSCodeCommitPowerUser, pero no podrán insertar cambios en la rama denominada main, añadir o editar un archivo en la rama principal de la CodeCommit consola, ni fusionar ramas o una solicitud de extracción en la rama principal. Debido a que Deny se aplica a GitPush, debe incluir una instrucción Null en la política para permitir analizar la validez de las llamadas iniciales a GitPush cuando los usuarios lleven a cabo inserciones desde sus repositorios locales.

sugerencia

Si desea crear una política que se aplique a todas las sucursales denominadas main en todos los repositorios de su cuenta de Amazon Web ServicesResource, especifique un asterisco (*) en lugar de un repositorio. ARN

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codecommit:GitPush", "codecommit:DeleteBranch", "codecommit:PutFile", "codecommit:Merge*" ], "Resource": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "Condition": { "StringEqualsIfExists": { "codecommit:References": [ "refs/heads/main" ] }, "Null": { "codecommit:References": "false" } } } ] }

En el siguiente ejemplo de política se permite a un usuario realizar cambios en una ramificación denominada principal en todos los repositorios de una cuenta de Amazon Web Services. No permite cambios en ninguna otra ramificación. Puedes usar esta política junto con la política AWSCodeCommitReadOnly administrada para permitir las transferencias automatizadas al repositorio de la rama principal. Como el efecto esAllow, este ejemplo de política no funcionaría con políticas gestionadas como AWSCodeCommitPowerUser.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:GitPush", "codecommit:Merge*" ], "Resource": "*", "Condition": { "StringEqualsIfExists": { "codecommit:References": [ "refs/heads/main" ] } } } ] }

Ejemplo 5: denegar o permitir acciones en repositorios con etiquetas

Puede crear una política que permita o deniegue acciones en los repositorios en función de las AWS etiquetas asociadas a esos repositorios y, a continuación, aplicar esas políticas a los IAM grupos que configure para administrar IAM los usuarios. Por ejemplo, puedes crear una política que deniegue todas CodeCommit las acciones en cualquier repositorio con la clave de AWS etiqueta Status y el valor clave Secret y, a continuación, aplicar esa política al IAM grupo que creaste para desarrolladores generales (Developers). Luego, debes asegurarte de que los desarrolladores que trabajan en esos repositorios etiquetados no sean miembros de ese grupo general Developers grupo, sino que pertenecen a un IAM grupo diferente al que no se ha aplicado la política restrictiva (SecretDevelopers).

El siguiente ejemplo deniega todas CodeCommit las acciones en los repositorios etiquetados con la clave Status y el valor clave Secret:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codecommit:Associate*", "codecommit:Batch*", "codecommit:CancelUploadArchive", "codecommit:CreateBranch", "codecommit:CreateCommit", "codecommit:CreatePullRequest*", "codecommit:CreateRepository", "codecommit:CreateUnreferencedMergeCommit", "codecommit:DeleteBranch", "codecommit:DeleteCommentContent", "codecommit:DeleteFile", "codecommit:DeletePullRequest*", "codecommit:DeleteRepository", "codecommit:Describe*", "codecommit:DisassociateApprovalRuleTemplateFromRepository", "codecommit:EvaluatePullRequestApprovalRules", "codecommit:GetBlob", "codecommit:GetBranch", "codecommit:GetComment*", "codecommit:GetCommit", "codecommit:GetDifferences*", "codecommit:GetFile", "codecommit:GetFolder", "codecommit:GetMerge*", "codecommit:GetObjectIdentifier", "codecommit:GetPullRequest*", "codecommit:GetReferences", "codecommit:GetRepository*", "codecommit:GetTree", "codecommit:GetUploadArchiveStatus", "codecommit:Git*", "codecommit:ListAssociatedApprovalRuleTemplatesForRepository", "codecommit:ListBranches", "codecommit:ListPullRequests", "codecommit:ListTagsForResource", "codecommit:Merge*", "codecommit:OverridePullRequestApprovalRules", "codecommit:Post*", "codecommit:Put*", "codecommit:TagResource", "codecommit:TestRepositoryTriggers", "codecommit:UntagResource", "codecommit:UpdateComment", "codecommit:UpdateDefaultBranch", "codecommit:UpdatePullRequest*", "codecommit:UpdateRepository*", "codecommit:UploadArchive" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Status": "Secret" } } } ] }

Puede restringir aún más esta estrategia especificando repositorios concretos, en lugar de todos los repositorios, como recursos. También puedes crear políticas que permitan CodeCommit realizar acciones en todos los repositorios que no estén etiquetados con etiquetas específicas. Por ejemplo, la siguiente política permite el equivalente a AWSCodeCommitPowerUserlos permisos para CodeCommit las acciones, excepto que solo permite CodeCommit acciones en los repositorios que no estén etiquetados con las etiquetas especificadas:

nota

Este ejemplo de política solo incluye acciones para CodeCommit. No incluye acciones para otros AWS servicios que están incluidos en la política AWSCodeCommitPowerUsergestionada. Para obtener más información, consulte AWS política gestionada: AWSCodeCommitPowerUser.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:Associate*", "codecommit:Batch*", "codecommit:CancelUploadArchive", "codecommit:CreateBranch", "codecommit:CreateCommit", "codecommit:CreatePullRequest*", "codecommit:CreateRepository", "codecommit:CreateUnreferencedMergeCommit", "codecommit:DeleteBranch", "codecommit:DeleteCommentContent", "codecommit:DeleteFile", "codecommit:DeletePullRequest*", "codecommit:Describe*", "codecommit:DisassociateApprovalRuleTemplateFromRepository", "codecommit:EvaluatePullRequestApprovalRules", "codecommit:GetBlob", "codecommit:GetBranch", "codecommit:GetComment*", "codecommit:GetCommit", "codecommit:GetDifferences*", "codecommit:GetFile", "codecommit:GetFolder", "codecommit:GetMerge*", "codecommit:GetObjectIdentifier", "codecommit:GetPullRequest*", "codecommit:GetReferences", "codecommit:GetRepository*", "codecommit:GetTree", "codecommit:GetUploadArchiveStatus", "codecommit:Git*", "codecommit:ListAssociatedApprovalRuleTemplatesForRepository", "codecommit:ListBranches", "codecommit:ListPullRequests", "codecommit:ListTagsForResource", "codecommit:Merge*", "codecommit:OverridePullRequestApprovalRules", "codecommit:Post*", "codecommit:Put*", "codecommit:TagResource", "codecommit:TestRepositoryTriggers", "codecommit:UntagResource", "codecommit:UpdateComment", "codecommit:UpdateDefaultBranch", "codecommit:UpdatePullRequest*", "codecommit:UpdateRepository*", "codecommit:UploadArchive" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:ResourceTag/Status": "Secret", "aws:ResourceTag/Team": "Saanvi" } } }, { "Effect": "Allow", "Action": [ "codecommit:CreateApprovalRuleTemplate", "codecommit:GetApprovalRuleTemplate", "codecommit:ListApprovalRuleTemplates", "codecommit:ListRepositories", "codecommit:ListRepositoriesForApprovalRuleTemplate", "codecommit:UpdateApprovalRuleTemplateContent", "codecommit:UpdateApprovalRuleTemplateDescription", "codecommit:UpdateApprovalRuleTemplateName" ], "Resource": "*" } ] }

Ejemplos de políticas de integración administradas por los clientes

Esta sección proporciona ejemplos de políticas de usuario administradas por el cliente que otorgan permisos para integraciones entre CodeCommit y otros servicios. AWS Para ver ejemplos específicos de políticas que permiten el acceso de varias cuentas a un CodeCommit repositorio, consulte. Configurar el acceso multicuenta a un AWS CodeCommit repositorio mediante roles

nota

Todos los ejemplos utilizan la región EE.UU. Oeste (Oregón) (us-west-2) cuando se requiere una y Región de AWS contienen una cuenta ficticia. IDs

Ejemplos

Ejemplo 1: Crear una política que permita el acceso multicuenta a un tema de Amazon SNS

Puede configurar un CodeCommit repositorio para que las inserciones de código u otros eventos desencadenen acciones, como el envío de una notificación desde Amazon Simple Notification Service (AmazonSNS). Si creas el SNS tema de Amazon con la misma cuenta que usaste para crear el CodeCommit repositorio, no necesitas configurar IAM políticas ni permisos adicionales. Puede crear el tema y, a continuación, el disparador para el repositorio. Para obtener más información, consulte Crear un disparador para un SNS tema de Amazon.

Sin embargo, si desea configurar el activador para que utilice un SNS tema de Amazon en otra cuenta de Amazon Web Services, primero debe configurar ese tema con una política que CodeCommit permita publicar en ese tema. Desde esa otra cuenta, abre la SNS consola de Amazon, selecciona el tema de la lista y, en Otras acciones del tema, selecciona Editar política de temas. En la pestaña Opciones avanzadas, modifica la política del tema para CodeCommit permitir la publicación en ese tema. Por ejemplo, si la política es la política predeterminada, la modificaría de la siguiente manera, cambiando los elementos de red italic text para que coincidan con los valores de tu repositorio, SNS tema de Amazon y cuenta:

{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "__default_statement_ID", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "sns:Subscribe", "sns:ListSubscriptionsByTopic", "sns:DeleteTopic", "sns:GetTopicAttributes", "sns:Publish", "sns:RemovePermission", "sns:AddPermission", "sns:SetTopicAttributes" ], "Resource": "arn:aws:sns:us-east-2:111111111111:NotMySNSTopic", "Condition": { "StringEquals": { "AWS:SourceOwner": "111111111111" } } }, { "Sid": "CodeCommit-Policy_ID", "Effect": "Allow", "Principal": { "Service": "codecommit.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:111111111111:NotMySNSTopic", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "AWS:SourceAccount": "111111111111" } } } ] }

Ejemplo 2: Crear una política de temas de Amazon Simple Notification Service (AmazonSNS) para permitir que Amazon CloudWatch CodeCommit Events publique eventos en el tema

Puedes configurar CloudWatch los eventos para que se publiquen en un SNS tema de Amazon cuando se produzcan eventos, incluidos CodeCommit los eventos. Para ello, debes asegurarte de que CloudWatch Events tiene permiso para publicar eventos en tu SNS tema de Amazon creando una política para el tema o modificando una política existente para el tema de forma similar a la siguiente:

{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "__default_statement_ID", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic", "Condition": { "StringEquals": { "AWS:SourceOwner": "123456789012" } } }, { "Sid": "Allow_Publish_Events", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic" } ] }

Para obtener más información acerca de CloudWatch los eventos CodeCommit y eventos, consulta Ejemplos de CloudWatch eventos de los servicios compatibles. Para obtener más información IAM y el lenguaje de las políticas, consulte Gramática del lenguaje de IAM JSON políticas.

Ejemplo 3: Crear una política de AWS Lambda integración con un CodeCommit activador

Puede configurar un CodeCommit repositorio para que las inserciones de código u otros eventos desencadenen acciones, como la invocación de una función. AWS Lambda Para obtener más información, consulte Creación de un disparador para una función de Lambda. Esta información es específica de los activadores y no CloudWatch de los eventos.

Si desea que el activador ejecute una función de Lambda directamente (en lugar de utilizar un SNS tema de Amazon para invocar la función de Lambda) y no configura el desencadenador en la consola de Lambda, debe incluir una declaración similar a la siguiente en la política basada en los recursos de la función:

{ "Statement":{ "StatementId":"Id-1", "Action":"lambda:InvokeFunction", "Principal":"codecommit.amazonaws.com", "SourceArn":"arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "SourceAccount":"111111111111" } }

Al configurar manualmente un CodeCommit disparador que invoca una función Lambda, también debe utilizar el comando AddPermissionLambda para conceder permiso CodeCommit para invocar la función. Para ver un ejemplo, consulte la sección Para CodeCommit permitir la ejecución de una función Lambda de Crear un disparador para una función de Lambda existente.

Para obtener más información sobre las políticas de recursos para las funciones Lambda, consulte AddPermissionThe Pull/Push Event Models en la Guía para desarrolladores.AWS Lambda