

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
<a name="customer-managed-policies"></a>

Puedes crear tus 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.

**Topics**
+ [Ejemplos de políticas de identidad administradas por los clientes](#customer-managed-policies-identity)

## Ejemplos de políticas de identidad administradas por los clientes
<a name="customer-managed-policies-identity"></a>

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 o el AWS CLI. AWS SDKs



**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 unidad Región de AWS](#identity-based-policies-example-1)
+ [Ejemplo 2: permitir a un usuario utilizar Git para un solo repositorio](#identity-based-policies-example-2)
+ [Ejemplo 3: permitir a un usuario conectarse desde un rango de direcciones IP específicas para obtener acceso a un repositorio](#identity-based-policies-example-3)
+ [Ejemplo 4: denegar o permitir acciones en las ramificaciones](#identity-based-policies-example-4)
+ [Ejemplo 5: denegar o permitir acciones en repositorios con etiquetas](#identity-based-policies-example-5)

### Ejemplo 1: permitir que un usuario realice CodeCommit operaciones en una sola unidad Región de AWS
<a name="identity-based-policies-example-1"></a>

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

------
#### [ 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
<a name="identity-based-policies-example-2"></a>

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 fetch****git 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, la AWS CLI SDKs, la y la API, pero no con el protocolo Git. 

El siguiente ejemplo permite al usuario especificado extraer datos del CodeCommit repositorio denominado y enviarlos a él`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
<a name="identity-based-policies-example-3"></a>

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 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, 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 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"
               ]
            }
         }
      }
   ]
}
```

------

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 AWSCode CommitPowerUser administrada solo si su dirección IP se encuentra dentro del 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
<a name="identity-based-policies-example-4"></a>

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](how-to-conditional-branch.md).

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 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 según lo permita **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.

------
#### [ 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 junto con la política AWSCode CommitReadOnly administrada para permitir las transferencias automatizadas al repositorio de la rama 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
<a name="identity-based-policies-example-5"></a>

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 (). {{Developers}} A continuación, debes asegurarte de que los desarrolladores que trabajan en esos repositorios etiquetados no sean miembros de ese {{Developers}} grupo general, 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:*

------
#### [ 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 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**gestionada. Para obtener más información, consulte [AWS política gestionada: AWSCode CommitPowerUser](security-iam-awsmanpol.md#managed-policies-poweruser)..

------
#### [ 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": "*"
    }
  ]
}
```

------