Ejemplos de políticas administradas por el cliente - AWS CodeCommit

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 políticas de IAM personalizadas para permitir permisos para CodeCommit acciones y recursos. Puede asociar estas políticas personalizadas a los grupos o usuarios de IAM que requieran esos permisos. También puede crear sus propias políticas de IAM personalizadas para la integración entre CodeCommit y otros AWS servicios.

Ejemplos de políticas de identidad administradas por los clientes

El siguiente ejemplo de políticas de IAM concede permisos para diversas CodeCommit acciones. Úselas para limitar el CodeCommit acceso de sus usuarios y funciones de IAM. Estas políticas controlan la capacidad de realizar acciones con la CodeCommit consola, la API, AWS los SDK o el. AWS CLI

nota

Todos los ejemplos utilizan la región EE. UU. Oeste (Oregón) (us-west-2) y contienen identificadores de cuenta ficticios.

Ejemplos

Ejemplo 1: Permitir a un usuario realizar 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 de la política de GitPull IAM se aplican a cualquier comando del cliente Git del que se recuperen datos CodeCommit git fetchgit clone, incluidos, etc. Del mismo modo, los permisos de la política de GitPush IAM se aplican a cualquier comando del cliente Git al que se envíen los datos. CodeCommit Por ejemplo, si el permiso de política de IAM de GitPush está definido en Allow, un usuario puede enviar la eliminación de una ramificación con el protocolo Git. A ese envío no le afectan los permisos que se hayan aplicado a la operación de DeleteBranch para ese usuario de IAM. El DeleteBranch permiso se aplica a las acciones realizadas con la consola AWS CLI, los SDK y la API, pero no con el protocolo Git.

El siguiente ejemplo permite al usuario especificado extraer datos del CodeCommit repositorio denominado MyDemoRepo e insertarlo en él:

{ "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 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 las inserciones y 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 Puedes usar esta política con la política AWSCodeCommitPowerUseradministrada. 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 ramificaciones denominadas principal de todos los repositorios de su cuenta de Amazon Web Services, para Resource, especifique un asterisco (*) en lugar del ARN de un repositorio.

{ "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 grupos de IAM que configure para administrar los usuarios de IAM. Por ejemplo, puede 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 grupo de IAM que creó para desarrolladores generales (desarrolladores). A continuación, debes asegurarte de que los desarrolladores que trabajan en esos repositorios etiquetados no sean miembros de ese grupo general de desarrolladores, sino que pertenezcan a un grupo de IAM diferente al que no se haya 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. Configure 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 Región de AWS una y contienen identificadores de cuenta ficticios.

Ejemplos

Ejemplo 1: creación de una política que permita el acceso entre cuentas 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 (Amazon SNS). Si crea el tema de Amazon SNS con la misma cuenta que utilizó para crear el CodeCommit repositorio, no necesitará configurar políticas ni permisos de IAM adicionales. Puede crear el tema y, a continuación, el disparador para el repositorio. Para obtener más información, consulte Creación de un disparador para un tema de Amazon SNS.

Sin embargo, si desea configurar el activador para que utilice un tema de Amazon SNS en otra cuenta de Amazon Web Services, primero debe configurar ese tema con una política que permita CodeCommit publicar en ese tema. Desde esa otra cuenta, abra la consola de Amazon SNS, seleccione el tema en la lista y en Otras acciones del tema, seleccione Editar política del tema. En la pestaña Avanzadas, modifique 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, modificaría la política cambiando los elementos de texto rojo en cursiva para que se adapten a los valores de su repositorio, del tema de Amazon SNS y de la 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 temática del Amazon Simple Notification Service (Amazon SNS) para permitir a CloudWatch Amazon Events CodeCommit publicar eventos en el tema

Puede configurar CloudWatch los eventos para que se publiquen en un tema de Amazon SNS cuando se produzcan eventos, incluidos CodeCommit los eventos. Para ello, debes asegurarte de que CloudWatch Events tiene permiso para publicar eventos en tu tema de Amazon SNS 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, consulte Ejemplos de CloudWatch eventos de los servicios compatibles. Para obtener más información sobre la IAM y el lenguaje de políticas, consulte Gramática del lenguaje de políticas JSON de IAM.

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

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 su disparador ejecute una función de Lambda directamente (en lugar de utilizar un tema de Amazon SNS para invocar la función de Lambda) y no configura el disparador en la consola de Lambda, deberá incluir una política similar a la siguiente en la política basada en 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