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

Ejemplos de políticas administradas por el cliente

Puede crear sus propias políticas de IAM personalizadas para conceder permisos a las acciones y los recursos de CodeCommit. 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 servicios de AWS.

Ejemplos de políticas de identidad administradas por los clientes

Las siguientes políticas de IAM de ejemplo conceden permisos para realizar diversas acciones de CodeCommit. Utilícelas para limitar el acceso a CodeCommit de sus usuarios de IAM y roles. Estas políticas controlan la capacidad de realizar acciones con la consola de CodeCommit, la API, los SDK de AWS o la 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 operaciones de CodeCommit en una única Región de AWS

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

JSON
{ "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 IAM de GitPull se aplican a cualquier comando de cliente de Git en el que los datos se recuperen de CodeCommit, como git fetch, git clone, etc. Del mismo modo, los permisos de la política de IAM de GitPush se aplican a cualquier comando de cliente de Git en el que los datos se envían a 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 permiso DeleteBranch se aplica a las acciones que se realizan con la consola, la AWS CLI, los SDK y la API, pero no el protocolo Git.

El siguiente ejemplo permite que el usuario especificado pueda extraer y enviar al repositorio de CodeCommit denominado MyDemoRepo:

JSON
{ "Version":"2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codecommit:GitPull", "codecommit:GitPush" ], "Resource" : "arn:aws:codecommit:us-east-2:111122223333: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 únicamente permita a los usuarios conectarse a un repositorio de CodeCommit si su dirección IP está dentro de un determinado rango de direcciones IP. Para ello, existen dos enfoques igualmente válidos. Puede crear una política de Deny que desautorice las operaciones de CodeCommit si la dirección IP del usuario no está dentro de un bloque específico o puede crear una política de Allow que permita operaciones de CodeCommit 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, puede asociar la política administrada AWSCodeCommitPowerUser y una política administrada por el cliente a todos los usuarios que necesitan acceder a su repositorio. La siguiente política de ejemplo deniega todos los permisos de CodeCommit a los usuarios cuyas direcciones IP no estén en el bloque de direcciones IP especificado de 203.0.113.0/16:

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

La siguiente política de ejemplo permite al usuario especificado obtener acceso a un repositorio de CodeCommit denominado MyDemoRepo con los permisos equivalentes de la política administrada AWSCodeCommitPowerUser solo si su dirección IP está en el bloque de direcciones especificado de 203.0.113.0/16:

JSON
{ "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:111122223333: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 Limitación de las combinaciones e inserciones en las ramificaciones en AWS CodeCommit.

Por ejemplo, puede crear una política de Deny que deniegue a los usuarios la capacidad de realizar cambios en una ramificación denominada principal, tales como eliminar dicha ramificación, en un repositorio denominado MyDemoRepo. Puede usar esta política con la política administrada AWSCodeCommitPowerUser. Los usuarios que tengan estas dos políticas podrán crear y eliminar ramificaciones, crear solicitudes de extracción y realizar todas las demás acciones permitidas por AWSCodeCommitPowerUser. Sin embargo, no podrán insertar cambios en la ramificación denominada principal, agregar ni editar archivos en la ramificación principal desde la consola de CodeCommit ni combinar ramificaciones ni una solicitud de extracción en la ramificación 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.

JSON
{ "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. Puede usar esta política con la política administrada AWSCodeCommitReadOnly con el fin de permitir las inserciones automatizadas en el repositorio en la ramificación principal. Debido a que el valor de Efecto es Allow, esta política de ejemplo no funcionaría con las políticas administradas, como AWSCodeCommitPowerUser.

JSON
{ "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 permite o deniega acciones en repositorios en función de las etiquetas de AWS asociadas con esos repositorios y, a continuación, aplicar esas políticas a los grupos de IAM que configure para administrar usuarios de IAM. Por ejemplo, puede crear una política que deniegue todas las acciones de CodeCommit en cualquier repositorio con la clave de etiqueta de AWS Estado y el valor de clave Secreto y, a continuación, aplicar dicha política al grupo de IAM que ha creado para los desarrolladores generales (Desarrolladores). Tendrá que asegurarse de que los desarrolladores que trabajan en esos repositorios etiquetados no sean miembros de ese grupo de Desarrolladores general, pero pertenecen en su lugar a otro grupo de IAM distinto que no tiene la política restrictiva aplicada (SecretDevelopers).

El siguiente ejemplo deniega todas las acciones de CodeCommit en repositorios etiquetados con la clave Estado y el valor de clave Secreto:

JSON
{ "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 puede crear políticas que permitan acciones de CodeCommit en todos los repositorios que no están etiquetados con etiquetas específicas. Por ejemplo, la siguiente política permite el equivalente a los permisos de AWSCodeCommitPowerUser para las acciones de CodeCommit, pero solo permite las acciones de CodeCommit 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 servicios de AWS que se incluyen en la política administrada AWSCodeCommitPowerUser. Para obtener más información, consulte Política administrada de AWS: AWSCodeCommitPowerUser.

JSON
{ "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": "*" } ] }