Políticas de dominio - CodeArtifact

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

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 AWS cuenta propietaria del dominio puede crear repositorios en el dominio y acceder a ellos. Puedes aplicar un documento de política a un dominio para permitir que otros responsables IAM accedan a él.

Para obtener más información, consulte Políticas y permisos y Políticas basadas en identidad y Políticas basadas en recursos.

Habilitar el acceso entre cuentas a un dominio

Una política de recursos es un archivo de texto en JSON formato. 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.

{ "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 de dominio se evalúa para todas las operaciones relacionadas con el dominio y todos los recursos del dominio. Esto significa que la política de dominio se puede usar para aplicar permisos a los repositorios y paquetes del dominio. Cuando el Resource elemento se establece en*, la declaración se aplica a todos los recursos del dominio. Por ejemplo, si la política anterior también se incluye codeartifact:DescribeRepository en la lista de IAM acciones permitidas, entonces la política permitiría llamar a DescribeRepository 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 dominio como las de repositorio para configurar los permisos. Cuando ambas políticas estén presentes, ambas políticas se evaluarán y se permitirá una acción si alguna de ellas lo permite. Para obtener más información, consulte Interacción entre las políticas de repositorio y dominio.

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.

{ "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.

Ejemplo de políticas de dominio

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.

{ "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

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.

{ "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 aws:PrincipalOrgID condición, consulte las claves de contexto de condición AWS globales en la Guía del IAM usuario.

Establecer una política de dominio

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 puede 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.

Resultado 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

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

Resultado de ejemplo:

{ "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

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.