Elastic Container Instance (ECI) permite extraer imágenes de Container Registry (ACR) sin necesidad de secrets, lo que mejora la eficiencia y la seguridad. Este tema describe cómo habilitar este acceso sin secrets.
Contexto
Alibaba Cloud Container Registry (ACR) está disponible en ediciones Personal y Enterprise. La Enterprise Edition es una plataforma de nivel empresarial para gestionar artefactos de aplicaciones nativas de la nube. Proporciona gestión del ciclo de vida para imágenes de contenedor, Helm Chart y artefactos compatibles con OCI. Es adecuada para despliegues empresariales a gran escala y ayuda a las empresas a reducir la complejidad de entrega. Para más información, consulte Introduction to Container Registry (ACR).
Cuando crea una instancia de ECI o una caché de imágenes mediante una imagen de ACR, puede configurar el acceso sin secrets. Esto simplifica el proceso, mejora la eficiencia y aumenta la seguridad al evitar fugas de credenciales.
Nota
La extracción sin secrets no es compatible con imágenes que no sean de ACR, como las imágenes de Docker.
Requisitos previos
Antes de poder extraer imágenes de ACR sin secrets, complete las siguientes tareas:
-
Cree una instancia de ACR y configure sus repositorios e imágenes.
-
Si utiliza una instancia de ACR Enterprise Edition, debe configurar los controles de acceso a la red.
De forma predeterminada, las nuevas instancias de ACR Enterprise Edition están desconectadas de todas las redes. Debe configurar una lista de control de acceso (ACL) para permitir el acceso desde Internet o desde una Virtual Private Cloud (VPC).
Configuración
La compatibilidad con la extracción de imágenes sin secrets varía según el tipo de instancia de ACR y si la instancia y el recurso de ECI se encuentran en la misma cuenta de Alibaba Cloud.
|
Escenario de cuenta
|
Tipo de ACR
|
Compatibilidad
|
|
Misma cuenta
|
|
Habilitado de forma predeterminada. Puede configurar un rol de RAM para restringir el alcance del acceso sin secrets.
|
|
Misma cuenta
|
Enterprise Edition (nombre de dominio personalizado)
|
No está habilitado de forma predeterminada. Debe especificar la instancia de ACR para habilitar el acceso sin secrets.
|
|
Cuentas cruzadas
|
-
Personal Edition
-
Enterprise Edition
|
No está habilitado de forma predeterminada. Debe configurar un rol de RAM para habilitar el acceso sin secrets.
|
Elija la configuración que coincida con su cuenta y la configuración de su instancia de ACR.
Restringir el acceso con un rol de RAM
Cuando una instancia de ACR y un recurso de ECI se encuentran en la misma cuenta de Alibaba Cloud, el acceso sin secrets está habilitado de forma predeterminada para las instancias de Personal Edition y para las instancias de Enterprise Edition que utilizan un nombre de dominio predeterminado. Opcionalmente, puede configurar un rol de Resource Access Management (RAM) para restringir este acceso; por ejemplo, para permitir extracciones únicamente desde una instancia específica de ACR.
Nota
De forma predeterminada, ECI utiliza el rol vinculado al servicio AliyunServiceRoleForECI para acceder a otros servicios en la nube al crear recursos de ECI. Este rol incluye permisos para extraer imágenes de todas las instancias de ACR Personal Edition y de las instancias de ACR Enterprise Edition que usan un nombre de dominio predeterminado dentro de la misma cuenta, pero no permite un control detallado.
Esta configuración consta de dos pasos.
Paso 1: Crear y autorizar un rol de RAM
-
Cree un rol de RAM para un servicio de confianza de Alibaba Cloud. Para más información, consulte Create a RAM role for a trusted Alibaba Cloud service.
Tome en cuenta los siguientes parámetros:
Tipo de entidad de seguridad: Cloud Service
Nombre de la entidad de seguridad: Elastic Container Instance
Nombre del rol: acr-test (ejemplo)
-
Cree una política de permisos personalizada. Para más información, consulte Create a custom permission policy.
La siguiente política permite la extracción de imágenes solo desde la instancia de ACR especificada. Para más información sobre cómo escribir una política de permisos, consulte Policy elements.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cr:Get*",
"cr:List*"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"cr:Pull*"
],
"Resource": [
"acs:cr:cn-hangzhou:1609982529******:instance/cri-nwj395hgf6f3****"
]
}
]
}
Adjunte la política de permisos personalizada al rol de RAM. Para más información, consulte Grant permissions to a RAM role.
-
Busque el nuevo rol acr-test y haga clic en su nombre para abrir la página de detalles. Compruebe los permisos y obtenga el ARN.
En la sección Basic Information, busque el campo ARN (con formato acs:ram::<AccountID>:role/acr-test) y haga clic en el botón de copia situado junto a él. En la pestaña Permissions, compruebe que la política personalizada acr esté adjunta.
Paso 2: Especificar el rol de RAM
Al llamar a la operación CreateContainerGroup para crear una instancia de ECI o a la operación CreateImageCache para crear una caché de imágenes, establezca el parámetro AcrRegistryInfo.N.ArnService para especificar el rol de RAM que se usará al crear el recurso. El parámetro se describe en la siguiente tabla. Para más información, consulte CreateContainerGroup y CreateImageCache.
|
Parámetro
|
Tipo
|
Ejemplo
|
Descripción
|
|
AcrRegistryInfo.N.ArnService
|
string
|
acs:ram::1609982529:role/acr-test
|
El ARN del rol de RAM en la cuenta de Alibaba Cloud propietaria del recurso de ECI.
|
El siguiente ejemplo muestra cómo pasar parámetros a través de OpenAPI para crear una instancia de ECI:
ContainerGroupName=test-acr
#Container
Container.1.Name=test
Container.1.Image=test****-registry.cn-hangzhou.cr.aliyuncs.com/eci_test/nginx:1.0
#AcrRegistryInfo
AcrRegistryInfo.1.ArnService=acs:ram::1609982529******:role/acr-test
Especificar una instancia de ACR Enterprise
Si una instancia de ACR Enterprise Edition utiliza un nombre de dominio personalizado y pertenece a la misma cuenta de Alibaba Cloud que el recurso de ECI, debe especificar la instancia de ACR para habilitar el acceso sin secrets.
API
Cuando llama a la API CreateContainerGroup para crear una instancia de ECI o a la API CreateImageCache para crear una caché de imágenes, puede establecer parámetros relacionados con AcrRegistryInfo para especificar una instancia de ACR. La siguiente tabla describe estos parámetros. Para más información, consulte CreateContainerGroup y CreateImageCache.
|
Parámetro
|
Tipo
|
Ejemplo
|
Descripción
|
|
AcrRegistryInfo.N.RegionId
|
string
|
cn-beijing
|
La región de la instancia de ACR Enterprise Edition.
Este parámetro es obligatorio si la instancia de ACR Enterprise Edition y el recurso de ECI se encuentran en regiones diferentes.
|
|
AcrRegistryInfo.N.InstanceId
|
string
|
cri-nwj395hgf6f3****
|
El ID de la instancia de ACR Enterprise Edition.
Este parámetro es obligatorio si la instancia de ACR Enterprise Edition utiliza un nombre de dominio personalizado.
|
Los siguientes ejemplos muestran cómo pasar parámetros a través de OpenAPI para crear una instancia de ECI:
Console
Al crear una instancia de ECI desde la página de compra de ECI, vaya a la sección Container Configuration. Desde allí, seleccione una imagen para un contenedor y utilice la pestaña Enterprise Image para especificar una imagen de una instancia de ACR Enterprise Edition.
En el cuadro de diálogo Enterprise Image, configure la información de la instancia de Container Registry (CRI), incluida la Region y el Instance Name. Luego, seleccione el Image Repository y el Domain Name, y haga clic en OK.
Nota
No puede especificar una imagen de una instancia de ACR Enterprise Edition cuando crea una caché de imágenes en la consola.
Acceso entre cuentas con roles de RAM
Si la instancia de ACR y el recurso de ECI pertenecen a diferentes cuentas de Alibaba Cloud, debe configurar y autorizar roles de RAM en ambas cuentas para habilitar el acceso sin secrets.
Paso 1: Crear y autorizar roles de RAM
-
En la Cuenta A, propietaria del recurso de ECI, cree y autorice un rol de RAM.
-
Cree un rol de RAM para un servicio de confianza de Alibaba Cloud. Para más información, consulte Create a RAM role for a trusted Alibaba Cloud service.
Tome en cuenta los siguientes parámetros:
Tipo de entidad de seguridad: Cloud Service
Nombre de la entidad de seguridad: Elastic Container Instance
Nombre del rol: role-assume (ejemplo)
-
Otorgue al rol role-assume permisos para llamar a la operación AssumeRole de Security Token Service (STS). Para más información, consulte Grant permissions to a RAM role.
Adjunte la política de sistema AliyunSTSAssumeRoleAccess.
-
Busque el rol role-assume recién creado, haga clic en su nombre para ir a la página de detalles y, a continuación, compruebe los permisos y la política de confianza, y obtenga el ARN.
-
En la Cuenta B, propietaria de la instancia de ACR, cree y autorice un rol de RAM.
-
Cree un rol de RAM para una cuenta de confianza de Alibaba Cloud. Para más información, consulte Create a RAM role for a trusted Alibaba Cloud account.
Tome en cuenta los siguientes parámetros:
Tipo de entidad de seguridad: Alibaba Cloud Account
Nombre de la entidad de seguridad: Other Alibaba Cloud Account. Introduzca el ID de la Cuenta A, propietaria del recurso de ECI.
Nombre del rol: role-acr (ejemplo)
-
Otorgue al rol role-acr permisos para extraer imágenes de ACR. Para más información, consulte Grant permissions to a RAM role.
Adjunte la política de sistema AliyunContainerRegistryFullAccess.
-
Modifique la política de confianza para permitir que el rol role-assume asuma el rol role-acr. Para más información, consulte Modify the trust policy of a RAM role.
De forma predeterminada, cualquier usuario o rol de RAM autorizado en la Cuenta A puede asumir el rol role-acr. Se recomienda modificar la política de confianza para lograr una autorización precisa.
En la sección Principal, cambie el valor del campo RAM por el ARN del rol role-assume. Esto garantiza que solo el rol role-assume pueda asumir el rol role-acr. Ejemplo:
"Principal": {
"RAM": [
"acs:ram::1609982529******:role/role-assume"
]
}
-
Compruebe los permisos y la política de confianza, y obtenga el ARN.
Paso 2: Especificar los roles de RAM
Cuando llame a la operación CreateContainerGroup o CreateImageCache, puede establecer parámetros de AcrRegistryInfo para especificar una instancia de ACR de otra cuenta de Alibaba Cloud. Tome en cuenta lo siguiente:
Si la instancia de ACR pertenece a otra cuenta de Alibaba Cloud, debe establecer los parámetros ArnService y ArnUser para especificar los roles de RAM destinados a la configuración de permisos.
Si la instancia de ACR Enterprise Edition utiliza un nombre de dominio personalizado, también debe establecer el parámetro InstanceId.
Para más información, consulte CreateContainerGroup y CreateImageCache.
|
Parámetro
|
Tipo
|
Ejemplo
|
Descripción
|
|
AcrRegistryInfo.N.ArnService
|
string
|
acs:ram::1609982529:role/role-assume
|
El ARN del rol de RAM en la cuenta propietaria del recurso de ECI.
|
|
AcrRegistryInfo.N.ArnUser
|
string
|
acs:ram::1298452580:role/role-acr
|
El ARN del rol de RAM en la cuenta propietaria de la instancia de ACR.
|
|
AcrRegistryInfo.N.RegionId
|
string
|
cn-beijing
|
La región de la instancia de ACR Enterprise Edition.
Este parámetro es obligatorio si la instancia de ACR Enterprise Edition y el recurso de ECI se encuentran en regiones diferentes.
|
|
AcrRegistryInfo.N.InstanceId
|
string
|
cri-nwj395hgf6f3****
|
El ID de la instancia de ACR Enterprise Edition.
Este parámetro es obligatorio si la instancia de ACR Enterprise Edition utiliza un nombre de dominio personalizado.
|
El siguiente ejemplo muestra cómo pasar parámetros a través de OpenAPI para crear una instancia de ECI:
ContainerGroupName=test-acr
#Container
Container.1.Name=test
Container.1.Image=test****-registry.cn-hangzhou.cr.aliyuncs.com/eci_test/nginx:1.0
#AcrRegistryInfo
AcrRegistryInfo.1.ArnService=acs:ram::1609982529******:role/role-assume
AcrRegistryInfo.1.ArnUser=acs:ram::1298452580******:role/role-acr