

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.

# Políticas de dominio
<a name="domain-policies"></a>

CodeArtifact admite el uso de permisos basados en recursos para controlar el acceso. Los permisos basados en recursos le permiten especificar quién tiene acceso a un recurso y qué acciones puede realizar en él. De forma predeterminada, solo la cuenta de AWS propietaria del dominio puede crear repositorios en el dominio y acceder a ellos. Puede aplicar un documento de política a un dominio para permitir que otros responsables de IAM accedan a él.

Para obtener más información, consulte [Políticas y permisos](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) y [Políticas basadas en identidad y Políticas basadas en recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html).

**Topics**
+ [Habilitar el acceso entre cuentas a un dominio](#enabling-cross-acount-access-to-a-domain)
+ [Ejemplo de políticas de dominio](#domain-policy-example)
+ [Ejemplo de política de dominio con AWS Organizations](#domain-policy-example-with-aws-organizations)
+ [Establecer una política de dominio](#set-domain-policy)
+ [Leer una política de dominio](#reading-a-domain-policy)
+ [Eliminar una política de dominio](#deleting-a-domain-policy)

## Habilitar el acceso entre cuentas a un dominio
<a name="enabling-cross-acount-access-to-a-domain"></a>

Una política de recursos es un archivo de texto en formato JSON. El archivo debe especificar una entidad principal (actor), una o más acciones y un efecto (`Allow` o `Deny`). Para crear un repositorio en un dominio propiedad de otra cuenta, se debe conceder a la entidad principal el permiso `CreateRepository` sobre el recurso del *dominio*.

Por ejemplo, la siguiente política de recursos concede a la cuenta el permiso `123456789012` para crear un repositorio en el dominio.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "codeartifact:CreateRepository"
            ],
            "Effect": "Allow",
            "Principal": {
                 "AWS": "arn:aws:iam::123456789012:root"
            },
            "Resource": "*"
        }
    ]
}
```

------

Para permitir la creación de repositorios con etiquetas, debe incluir el permiso `codeartifact:TagResource`. Esto también permitirá a la cuenta añadir etiquetas al dominio y a todos los repositorios que contiene.

La política del dominio se evalúa para todas las operaciones relacionadas con el dominio y todos los recursos del dominio. Esto significa que la política del dominio se puede usar para aplicar permisos a los repositorios y los paquetes del dominio. Cuando el elemento `Resource` se configura como `*`, la instrucción se aplica a todos los recursos del dominio. Por ejemplo, si la política anterior también incluyese `codeartifact:DescribeRepository` en la lista de acciones de IAM permitidas, entonces la política permitiría realizar llamadas a `DescribeRepository` en todos los repositorios del dominio. Se puede usar una política de dominio para aplicar permisos a recursos específicos del dominio mediante el uso de un recurso específico ARNs en el `Resource` elemento.

**nota**  
Se pueden usar tanto las políticas de dominios como las de repositorios para configurar los permisos. Cuando ambas políticas estén presentes, ambas políticas se evaluarán y se permitirá toda acción permitida por alguna de ellas. Para obtener más información, consulte [Interacción entre las políticas de repositorios y de dominios](repo-policies.md#interaction-repo-domain-policies).

Para acceder a los paquetes de un dominio propiedad de otra cuenta, se debe conceder el permiso `GetAuthorizationToken` a una entidad principal sobre el *recurso del dominio*. Esto permite al propietario del dominio controlar qué cuentas pueden leer el contenido de los repositorios del dominio.

Por ejemplo, la siguiente política de recursos otorga a la cuenta el permiso `123456789012` para recuperar un token de autenticación para cualquier repositorio del dominio.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "codeartifact:GetAuthorizationToken"
            ],
            "Effect": "Allow",
            "Principal": {
                 "AWS": "arn:aws:iam::123456789012:root"
            },
            "Resource": "*"
        }
    ]
}
```

------

**nota**  
A la entidad principal que desee obtener paquetes de un punto de conexión del repositorio se le debe conceder el permiso `ReadFromRepository` sobre el recurso del repositorio además del permiso `GetAuthorizationToken` sobre el dominio. Del mismo modo, a la entidad principal que desee publicar paquetes en un punto de conexión del repositorio también se le debe otorgar el permiso `PublishPackageVersion` además de `GetAuthorizationToken`.   
Para obtener más información acerca de los permisos de `ReadFromRepository` y `PublishPackageVersion`, consulte [Políticas de repositorios](repo-policies.md).

## Ejemplo de políticas de dominio
<a name="domain-policy-example"></a>

Cuando varias cuentas utilizan un dominio, se les debe conceder un conjunto básico de permisos para permitir el uso completo del dominio. La siguiente política de recursos enumera un conjunto de permisos que permiten el uso total del dominio.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "BasicDomainPolicy",
            "Action": [
                "codeartifact:GetDomainPermissionsPolicy",
                "codeartifact:ListRepositoriesInDomain",
                "codeartifact:GetAuthorizationToken",
                "codeartifact:DescribeDomain",
                "codeartifact:CreateRepository"
            ],
            "Effect": "Allow",
            "Resource": "*",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:root"
            }
        }
    ]
}
```

------

**nota**  
No es necesario crear una política de dominio si un dominio y todos sus repositorios pertenecen a una sola cuenta y solo es necesario utilizarlos desde esa cuenta.

## Ejemplo de política de dominio con AWS Organizations
<a name="domain-policy-example-with-aws-organizations"></a>

Puedes usar la clave `aws:PrincipalOrgID` condicionada para conceder acceso a un CodeArtifact dominio desde todas las cuentas de tu organización, de la siguiente manera.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid": "DomainPolicyForOrganization",
        "Effect": "Allow",
        "Principal": "*",
        "Action": [
             "codeartifact:GetDomainPermissionsPolicy",
             "codeartifact:ListRepositoriesInDomain",
             "codeartifact:GetAuthorizationToken",
             "codeartifact:DescribeDomain",
             "codeartifact:CreateRepository"
        ],
        "Resource": "*",
        "Condition": {
            "StringEquals": { "aws:PrincipalOrgID":["o-xxxxxxxxxxx"]}
        }
    }
}
```

------

Para obtener más información sobre el uso de la clave de condición `aws:PrincipalOrgID`, consulte [Claves de contexto de condición global de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) en la *Guía del usuario de IAM*.

## Establecer una política de dominio
<a name="set-domain-policy"></a>

Puede usar el comando `put-domain-permissions-policy` para adjuntar una política a un dominio.

```
aws codeartifact put-domain-permissions-policy --domain my_domain --domain-owner 111122223333 \
 --policy-document file://</PATH/TO/policy.json>
```

Al llamar a `put-domains-permissions-policy`, se ignora la política de recursos del dominio al evaluar los permisos. Esto garantiza que el propietario de un dominio no pueda excluirse del dominio, lo que le impediría actualizar la política de recursos.

**nota**  
 No puedes conceder permisos a otra AWS cuenta para actualizar la política de recursos de un dominio mediante una política de recursos, ya que la política de recursos se ignora al realizar una llamada put-domain-permissions-policy. 

Código de salida de ejemplo:

```
{
    "policy": {
        "resourceArn": "arn:aws:codeartifact:region-id:111122223333:domain/my_domain",
        "document": "{ ...policy document content...}",
        "revision": "MQlyyTQRASRU3HB58gBtSDHXG7Q3hvxxxxxxx="
    }
}
```

El resultado del comando contiene el nombre de recurso de Amazon (ARN) del recurso de dominio, todo el contenido del documento de política y un identificador de revisión. El identificador de revisión se puede pasar a `put-domain-permissions-policy` mediante la opción `--policy-revision`. Esto garantiza que se sobrescriba una revisión conocida del documento y no una versión más reciente configurada por otro escritor.

## Leer una política de dominio
<a name="reading-a-domain-policy"></a>

Para leer una versión existente de un documento de política, utilice el comando `get-domain-permissions-policy`. Para formatear la salida para que sea legible, utilice `--output` y `--query policy.document` junto con el módulo `json.tool` de Python, de la siguiente manera.

```
aws codeartifact get-domain-permissions-policy --domain my_domain --domain-owner 111122223333 \
   --output text --query policy.document | python -m json.tool
```

Código de salida de ejemplo:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "BasicDomainPolicy",
            "Action": [
                "codeartifact:GetDomainPermissionsPolicy",
                "codeartifact:ListRepositoriesInDomain",
                "codeartifact:GetAuthorizationToken",
                "codeartifact:CreateRepository"
            ],
            "Effect": "Allow",
            "Resource": "*",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            }
        }
    ]
}
```

------

## Eliminar una política de dominio
<a name="deleting-a-domain-policy"></a>

Utilice el comando `delete-domain-permissions-policy` para eliminar una política de un dominio.

```
aws codeartifact delete-domain-permissions-policy --domain my_domain --domain-owner 111122223333
```

El formato de la salida es el mismo que el de los comandos `get-domain-permissions-policy` y `delete-domain-permissions-policy`.