Autenticación en Container Registry con IAM
Inicia sesión en Container Registry utilizando claves API de IAM o tokens de portador para enviar y descargar imágenes en los espacios de nombres de tu registro.
Todas las cuentas requieren políticas de acceso IAM. Para configurar y gestionar políticas de acceso de IAM, consulte Definición de políticas de acceso de IAM.
El acceso a IBM Cloud Container Registry es automatizado, que normalmente utiliza claves de API, o interactivo, que normalmente utiliza señales portadoras.
Si dispone de una política de acceso de IAM, pero le aparecen errores Access denied, consulte ¿Por qué me aparecen Access denied errores? para obtener
ayuda.
Si desea utilizar las imágenes de contenedor en los despliegues de Kubernetes, consulte Utilizar un secreto de extracción de imágenes para acceder a imágenes de otras cuentas de IBM Cloud o registros privados externos de espacios de nombres Kubernetes no predeterminados.
Acceder a los espacios de nombres en automatización
Puede utilizar claves de API de ID de servicio para automatizar el envío por push y la extracción de imágenes de contenedor a y desde los espacios de nombres.
Las claves de APICódigo único que se pasa a una API para identificar la aplicación o el usuario que llama y para enviar datos de seguimiento. Se utiliza una clave de API para realizar un seguimiento y controlar cómo se utiliza la API, por ejemplo, para evitar el uso malicioso o el abuso de la API. están vinculadas a los ID de usuario o de servicio de tu cuenta y puedes utilizarlas en toda la plataforma IBM Cloud®. Puedes usar una clave API en la interfaz de línea comando (CLI) o como parte de la automatización para autenticarte como tu usuario o identidad de servicio. Las claves de API de usuario están asociadas con un usuario y sus políticas de acceso. Una clave de API de ID de servicio tiene sus propias políticas de acceso. Puede disponer de varios identificadores de servicio con políticas detalladas diferentes, de modo que a su automatización se le concedan capacidades específicas y limitadas.
Al crear un clúster de IBM Cloud Kubernetes Service o Red Hat® OpenShift® on IBM Cloud®, dicho clúster se crea con un ID de servicio de IAM de IBM Cloud al que se le asigna una política de acceso de servicio de lector de IAM
para IBM Cloud Container Registry. Las credenciales de ID de servicio se autentican en una clave de API de ID de servicio no caducada que se almacena en secretos de extracción de imagen en el clúster. Los secretos de extracción de imagen se
añaden al espacio de nombres de Kubernetes default y a la lista de secretos de la cuenta de servicio default de este espacio de nombres de Kubernetes. Si necesita más claves de API de ID de servicio o falta la clave
de API de ID de servicio, puede crear una clave de API de ID de servicio manualmente.
Puede utilizar claves de API de ID de servicio en los lugares siguientes:
- Clústeres de IBM Cloud Kubernetes Service o Red Hat OpenShift on IBM Cloud. Cuando crea clústeres de IBM Cloud Kubernetes Service y Red Hat OpenShift on IBM Cloud, se crea automáticamente un ID de servicio para cada clúster. Si desea más de un ID de servicio, puede crearlos manualmente.
- Kubernetes y clústeres de Red Hat® OpenShift® que no están en IBM Cloud. Debe crear su propio ID de servicio, clave de API y secreto de extracción.
- CLI de Docker y otros clientes. Debe crear su propio ID de servicio y clave de API.
Creación de una clave de API de ID de servicio manualmente
Cree una clave de API de ID de servicio que pueda utilizar para iniciar sesión en el registro.
Para crear una clave de API de ID de servicio, siga estos pasos:
-
Cree un ID de servicio; consulte
ibmcloud iam service-id-create. -
Asigne políticas de servicio al ID de servicio para controlar el nivel de acceso que está permitido cuando el ID de servicio se utilice para autenticarse con IBM Cloud Container Registry, consulte Gestión del acceso a los recursos.
-
Cree una clave de API de ID de servicio; consulte Gestión de claves de API de ID de servicio e
ibmcloud iam service-api-key-create.
Creación de una clave de API de usuario manualmente
Cree una clave de API de usuario que pueda utilizar para iniciar sesión en el registro.
Si crea una clave de API de usuario, se utilizan las políticas de acceso del usuario.
Para crear una clave de API de usuario, consulte Gestión de claves de API de usuario e ibmcloud iam api-key-create.
Utilizar software de cliente para autenticarse en la automatización
Utilice una clave de API para iniciar sesión en el registro utilizando clientes comunes.
Los clientes necesitan una clave de API y un dominio, sustituir API_KEY por la clave de API y REGISTRY_DOMAIN por el dominio del registro donde se han configurado los espacios de nombres.
| Región | Región que antes se conocía como | REGISTRY_DOMAIN |
|---|---|---|
global |
No aplicable | icr.io |
au-syd |
ap-south |
au.icr.io |
br-sao |
No aplicable | br.icr.io |
ca-mon |
No aplicable | ca2.icr.io |
ca-tor |
No aplicable | ca.icr.io |
eu-de |
eu-central |
de.icr.io |
eu-es |
No aplicable | es.icr.io |
eu-gb |
uk-south |
uk.icr.io |
in-che |
No aplicable | in.icr.io |
in-mum |
No aplicable | in2.icr.io |
jp-osa |
No aplicable | jp2.icr.io |
jp-tok |
ap-north |
jp.icr.io |
us-south |
No aplicable | us.icr.io |
Para obtener más información sobre cómo utilizar IBM Cloud Container Registry en una interconexión de Continuous Delivery, consulte Utilización de un registro de imágenes privadas.
Se proporcionan ejemplos de cómo autenticarse automáticamente con el registro para los clientes siguientes:
Si recibe un mensaje 400 Bad Request, la combinación de nombre de usuario y contraseña no es válida.
Utilización de Buildah para autenticarse con el registro
Puede utilizar Buildah para autenticarse con el registro de forma que pueda enviar y extraer imágenes al y del registro.
Utilice la clave de API y dominio para iniciar sesión en el registro ejecutando el siguiente mandato de Buildah, sustituya API_KEY por la clave de API y REGISTRY_DOMAIN por el dominio:
buildah login -u iamapikey -p API_KEY REGISTRY_DOMAIN
Utilización de Docker para autenticarse con el registro
Puede utilizar Docker para autenticarse con el registro, de modo que pueda enviar por push y extraer imágenes a y desde el registro.
Utilice la clave de API y dominio para iniciar sesión en el registro ejecutando el mandato Docker siguiente, sustituya API_KEY por la clave de API y REGISTRY_DOMAIN por
el dominio:
docker login -u iamapikey -p API_KEY REGISTRY_DOMAIN
Utilización de Podman para autenticarse con el registro
Puede utilizar Podman para autenticarse con el registro de forma que pueda enviar y extraer imágenes al y del registro.
Utilice la clave de API y dominio para iniciar sesión en el registro ejecutando el siguiente mandato Podman, sustituya API_KEY por la clave de API y REGISTRY_DOMAIN por
el dominio:
podman login -u iamapikey -p API_KEY REGISTRY_DOMAIN
Utilización de Skopeo para autenticarse con el registro
Puede utilizar Skopeo para autenticarse con el registro de forma que pueda enviar y extraer imágenes al y del registro.
Por ejemplo, puede utilizar el siguiente mandato Skopeo para extraer una imagen de Docker Hub y enviarla al espacio de nombres. Sustituya REGISTRY_DOMAIN por el nombre del dominio,
NAMESPACE por el espacio de nombres y API_KEY por la clave de API:
skopeo --insecure-policy --override-os linux copy docker://busybox:latest docker://REGISTRY_DOMAIN/NAMESPACE/busybox:latest --dest-creds iamapikey:API_KEY
Acceso interactivo a los espacios de nombres
Puede utilizar señales portadoras y señales de renovación para enviar y extraer imágenes a los y de los espacios de nombres de forma interactiva.
Se proporcionan ejemplos de cómo acceder a los espacios de nombres de forma interactiva para los clientes siguientes:
Utilización de Buildah para acceder al espacio de nombres
Inicie sesión en el registro utilizando la CLI de Buildah.
Puede utilizar la CLI de Buildah para iniciar sesión en el registro utilizando una señal portadora, sustituya REGISTRY_DOMAIN por dominio:
ibmcloud iam oauth-tokens | sed -ne '/IAM token/s/.* //p' | buildah login -u iambearer --password-stdin REGISTRY_DOMAIN
Utilización de Docker para acceder al espacio de nombres
Inicie sesión en el registro utilizando la CLI de Docker.
Puede utilizar la CLI de Docker para iniciar sesión en el registro utilizando una señal de renovación en IBM Cloud CLI:
ibmcloud cr login --client docker
Puede utilizar la CLI de Docker para iniciar sesión en el registro utilizando una señal portadora:
-
Genere una señal de portadora utilizando
ibmcloud iam oauth-tokens. -
Inicie sesión en el registro utilizando el mandato
docker login. SustituyaBEARER_TOKENpor la señal portadora yREGISTRY_DOMAINpor el dominio:docker login -u iambearer --password BEARER_TOKEN REGISTRY_DOMAIN
Utilización de Podman para acceder al espacio de nombres
Acceda al registro y extraiga una imagen mediante la CLI, donde IMAGE_NAME es el nombre de la imagen.
ibmcloud cr login --client podman
podman pull IMAGE_NAME
Utilización de Skopeo para acceder al espacio de nombres
Inicie sesión en el registro utilizando la CLI de Skopeo.
Puede utilizar la CLI de Skopeo para iniciar sesión en el registro utilizando una señal portadora, sustituya REGISTRY_DOMAIN por dominio:
ibmcloud iam oauth-tokens | sed -ne '/IAM token/s/.* //p' | skopeo login -u iambearer --password-stdin REGISTRY_DOMAIN
Acceso mediante programación a los espacios de nombres
Utilice su propio código para acceder a los espacios de nombres en IBM Cloud Container Registry.
La mayoría de los usuarios pueden utilizar el comando ibmcloud cr login para simplificar el proceso docker login, pero si está implementando la
automatización o utiliza un cliente diferente, es posible que desee autenticarse manualmente. Debe presentar un nombre de usuario y una contraseña. En IBM Cloud Container Registry, el nombre de usuario indica el tipo de secreto que se presenta
en la contraseña.
Son válidos los siguientes nombres de usuarios:
iambearerLa contraseña contiene un señal de acceso a IAM. Este tipo de autenticación es de corta duración, pero puede derivarse de todos los tipos de identidad IAM. Por ejemplo, deibmcloud iam oauth-tokens.iamrefreshLa contraseña contiene una señal de renovación de IAM que el registro utiliza internamente para generar una señal de acceso de IAM. Este tipo de autenticación es más duradero. Este tipo de autenticación es utilizado por el mandatoibmcloud cr login.iamapikeyLa contraseña es una clave de API de IAM que el registro utiliza internamente para generar una señal de acceso de IAM. Este tipo de autenticación es el preferido para la automatización. Puede utilizar una clave de API de usuario o una clave de API de ID de servicio. Para obtener más información, consulte Acceder a los espacios de nombres en automatización.