View a markdown version of this page

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

Puedes crear tus propias políticas de IAM personalizadas para conceder permisos a CodeCommit las acciones y los recursos. Puede asociar estas políticas personalizadas a los grupos o usuarios de IAM que requieran esos permisos. También puedes crear tus propias políticas de IAM personalizadas para la integración entre servicios CodeCommit y otros AWS .

Ejemplos de políticas de identidad administradas por los clientes

En el siguiente ejemplo, las políticas de IAM conceden permisos para varias CodeCommit acciones. Úsalas para limitar el CodeCommit acceso de tus 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 de una sola vez 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 en 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 GitPull IAM se aplican a cualquier comando del cliente de Git del que se recuperen los datos CodeCommit, incluidos git fetchgit clone, etc. Del mismo modo, los permisos de la política de GitPush IAM se aplican a cualquier comando del cliente de 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.

En el siguiente ejemplo, el usuario especificado puede extraer información del CodeCommit repositorio denominado MyDemoRepo y acceder a él:

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 Deny política que no permita 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, 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. 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 203.0.113 especificado. 0/16:

JSON
{ "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 denominado MyDemoRepo con los permisos equivalentes a los de la política AWSCodeCommitPowerUser gestionada solo si su dirección IP se encuentra dentro del bloque de direcciones especificado 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 Limita las subidas y fusiones a las sucursales en 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 denominadoMyDemoRepo. Puede usar esta política con la política administrada AWSCodeCommitPowerUser. Los usuarios con estas dos políticas aplicadas podrían crear y eliminar ramas, crear solicitudes de extracción y todas las demás acciones que permitan AWSCodeCommitPowerUser, pero no podrán introducir cambios en la rama denominada main, añadir o editar un archivo en la rama principal de la CodeCommit consola ni combinar 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.

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. Puedes usar esta política con la política AWSCodeCommitReadOnly gestionada para permitir el envío automático al repositorio de la sucursal principal. Debido a que el valor de Effect (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

Puedes crear una política que permita o deniegue las 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 configures para administrar los usuarios de IAM. Por ejemplo, puedes crear una política que deniegue todas CodeCommit las acciones en cualquier repositorio con la AWS etiqueta Status y el valor clave Secret y, a continuación, aplicar esa política al grupo de IAM que creaste para desarrolladores generales (). Developers Luego, debes asegurarte de que los desarrolladores que trabajan en esos repositorios etiquetados no sean miembros de ese Developers grupo general, sino que pertenezcan a otro grupo de IAM al que no se haya aplicado la política restrictiva (). SecretDevelopers

En el siguiente ejemplo, se deniegan todas CodeCommit las acciones en los repositorios etiquetados con la clave Status y el valor clave Secret:

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 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 AWSCodeCommitPowerUser los permisos para CodeCommit las acciones, excepto que solo permite las 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 AWSCodeCommitPowerUser administrada. Para obtener más información, consulte AWS política gestionada: 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": "*" } ] }