Authentification sur Container Registry avec IAM
Connectez-vous à Container Registry à l'aide de clés API IAM ou de jetons bearer pour pousser et extraire des images dans les espaces de noms de votre registre.
Tous les comptes doivent faire l'objet d'une politique d'accès IAM. Pour configurer et gérer les règles d'accès IAM, voir Définition des règles d'accès IAM.
L'accès à IBM Cloud Container Registry est soit automatisé, ce qui utilise généralement desclés d'API, soit Interactif, ce qui utilise généralement des jetons au porteur.
Si vous disposez d'une politique d'accès IAM, mais que vous rencontrez des erreurs Access denied, consultez la section Pourquoi est-ce que je rencontre des erreurs Access denied ? pour obtenir de l'aide.
Si vous souhaitez utiliser vos images de conteneur dans les déploiements de Kubernetes, voir Utilisation d'un secret d'extraction d'image pour accéder aux images d'autres comptes IBM Cloud ou à des registres privés externes à partir d'espaces de nom Kubernetes non par défaut.
Accès à vos espaces de nom dans l'automatisation
Utilisez des clés d'API d'ID de service pour automatiser l'envoi et l'extraction d'images de conteneur vers et depuis vos espaces de nom.
Les clés APICode unique transmis à une API pour identifier l'application ou l'utilisateur appelant et pour envoyer des données de suivi. Cette clé sert à suivre et à contrôler la façon dont l'API est utilisée, pour empêcher, par exemple, son utilisation malveillante ou abusive. sont associées à des identifiants utilisateur ou à des identifiants de service dans votre compte, et vous pouvez les utiliser sur l'ensemble de la plateforme IBM Cloud®. Vous pouvez utiliser une clé API dans l'interface de ligne de commande (CLI) ou dans le cadre d'un processus d'automatisation pour vous authentifier en tant qu'utilisateur ou service. Une clé d'API utilisateur est associée à un utilisateur et ses règles d'accès. Une clé d'API d'ID de service possède ses propres règles d'accès. Vous pouvez disposer de plusieurs identifiants de service associés à des politiques détaillées différentes, afin que votre automatisation ne dispose que de capacités spécifiques et limitées.
Lorsque vous créez un cluster IBM Cloud Kubernetes Service ou Red Hat® OpenShift® on IBM Cloud®, celui-ci est créé avec un identifiant de service IAM IBM Cloud auquel est attribuée une politique d’accès de service IAM Reader à IBM Cloud Container Registry. Les données d'identification de l'ID de service sont authentifiées dans une clé d'API d'ID de service qui n'expire pas et qui est stockée dans des secrets d'extraction d'image dans votre cluster. Les secrets
d'extraction d'image sont ajoutés à l'espace de nom Kubernetes default et à la liste des secrets dans le compte de service default associé à ce nom d'espace Kubernetes. Si vous avez besoin de plus de clés d'API d'ID
de service ou que la clé d'API d'ID de service est manquante, vous pouvez créer manuellement une clé d'API d'ID de service.
Les clés d'API d'ID de service peuvent être utilisées dans les emplacement suivants :
- Clusters IBM Cloud Kubernetes Service ou Red Hat OpenShift on IBM Cloud. Lorsque vous créez des clusters IBM Cloud Kubernetes Service et Red Hat OpenShift on IBM Cloud, un ID de service est automatiquement créé pour chaque cluster. Si vous avez besoin de plus d'ID de service, vous pouvez les créer manuellement.
- Kubernetes et les clusters Red Hat® OpenShift® qui ne sont pas sur IBM Cloud. Vous devez créer votre propre ID de service, clé d'API et secret d'extraction.
- Interface de ligne de commande Docker et d'autres clients. Vous devez créer votre propre ID de service et clé d'API.
Création d'une clé d'API d'ID de service manuellement
Créez une clé d'API d'ID de service que vous pouvez utiliser pour vous connecter au registre.
Pour créer une clé d'API d'ID de service, procédez comme suit :
-
Créez un ID de service. Voir
ibmcloud iam service-id-create. -
Affectez des règles de service à l'ID de service pour contrôle le niveau d'accès autorisé lorsque l'ID de service est utilisé pour l'authentification avec IBM Cloud Container Registry. Voir Gestion de l'accès aux ressources.
-
Créez une clé d'API de service. Voir Gestion des règles d'accès d'ID de service et
ibmcloud iam service-api-key-create.
Création d'une clé d'API d'utilisateur manuellement
Créez une clé d'clé d'interface de programmation (API) utilisateur que vous pouvez utiliser pour vous connecter au registre.
Si vous créez une clé d'API utilisateur, les règles d'accès de l'utilisateur sont utilisées.
Pour créer une clé d'API utilisateur, voir Gestion des clés d'API utilisateur et ibmcloud iam api-key-create.
Utilisation du logiciel client pour l'authentification dans l'automatisation
Utilisez une clé clé d'interface de programmation (API) pour vous connecter au registre en utilisant des clients communs.
Les clients ont besoin d'une clé d'interface de programmation et d'un domaine, remplacez API_KEY par votre clé d'interface de programmation et REGISTRY_DOMAIN par le domaine du registre où vos espaces de nom sont
définis.
| Région | Région anciennement connue sous le nom de | REGISTRY_DOMAIN |
|---|---|---|
global |
Non applicable | icr.io |
au-syd |
ap-south |
au.icr.io |
br-sao |
Non applicable | br.icr.io |
ca-mon |
Non applicable | ca2.icr.io |
ca-tor |
Non applicable | ca.icr.io |
eu-de |
eu-central |
de.icr.io |
eu-es |
Non applicable | es.icr.io |
eu-gb |
uk-south |
uk.icr.io |
in-che |
Non applicable | in.icr.io |
in-mum |
Non applicable | in2.icr.io |
jp-osa |
Non applicable | jp2.icr.io |
jp-tok |
ap-north |
jp.icr.io |
us-south |
Non applicable | us.icr.io |
Pour plus d'informations sur l'utilisation de IBM Cloud Container Registry dans un pipeline Continuous Delivery, voir Utilisation d'un registre d'images privées.
Des exemples de procédure d'authentification automatique avec le registre sont fournis pour les clients suivants :
Si vous obtenez un message 400 Bad Request, la combinaison du nom d'utilisateur et du mot de passe n'est pas valide.
Utilisation de Buildah pour l'authentification auprès du registre
Vous pouvez utiliser Buildah pour vous authentifier auprès du registre de sorte que vous puissiez insérer et extraire des images à partir du registre.
Utilisez la clé d'interface de programmation et leDomaine pour vous connecter au registre en exécutant la commande Buildah suivante, remplacez API_KEY par la clé d'interface de programmation
et REGISTRY_DOMAIN avec le domaine :
buildah login -u iamapikey -p API_KEY REGISTRY_DOMAIN
Utilisation de Docker pour l'authentification auprès du registre
Vous pouvez utiliser Docker pour l'authentification avec le registre afin d'envoyer et d'extraire les images vers et depuis le registre.
Utilisez la clé d'interface de programmation et leDomaine pour vous connecter au registre en exécutant la commande Docker suivante, remplacez API_KEY par la clé d'interface de programmation
et REGISTRY_DOMAIN avec le domaine :
docker login -u iamapikey -p API_KEY REGISTRY_DOMAIN
Utilisation de Podman pour l'authentification auprès du registre
Vous pouvez utiliser Podman pour vous authentifier auprès du registre afin que vous puissiez insérer et extraire des images à partir du registre.
Utilisez la clé d'interface de programmation et leDomaine pour vous connecter au registre en exécutant la commande Podman suivante, remplacez API_KEY par la clé d'interface de programmation
et REGISTRY_DOMAIN avec le domaine :
podman login -u iamapikey -p API_KEY REGISTRY_DOMAIN
Utilisation de Skopeo pour l'authentification auprès du registre
Vous pouvez utiliser Skopeo pour vous authentifier auprès du registre de sorte que vous puissiez insérer et extraire des images à partir du registre.
Par exemple, vous pouvez utiliser la commande Skopeo suivante pour extraire une image de Docker Hub et la pousser à votre espace de nom. Remplacez REGISTRY_DOMAIN par le nom de votre Domaine,
NAMESPACE avec votre espace de nom, et API_KEY avec votre clé d'interface de programmation :
skopeo --insecure-policy --override-os linux copy docker://busybox:latest docker://REGISTRY_DOMAIN/NAMESPACE/busybox:latest --dest-creds iamapikey:API_KEY
Accès interactif à vos espaces de nom
Vous pouvez utiliser des jetons bearer et des jetons de régénération pour insérer et extraire des images vers et depuis vos espaces de nom de manière interactive.
Des exemples d'accès interactif à vos espaces de noms sont fournis pour les clients suivants :
Utilisation de Buildah pour accéder à votre espace de nom
Connectez-vous au registre à l'aide de l'interface de ligne de commande Buildah.
Vous pouvez utiliser l'interface de ligne de commande Buildah pour vous connecter au registre à l'aide d'un jeton bearer, remplacez REGISTRY_DOMAIN par leDomaine:
ibmcloud iam oauth-tokens | sed -ne '/IAM token/s/.* //p' | buildah login -u iambearer --password-stdin REGISTRY_DOMAIN
Utilisation de Docker pour accéder à votre espace de nom
Connectez-vous au registre à l'aide de l'interface de ligne de commande Docker.
Vous pouvez utiliser l'interface de ligne de commande Docker pour vous connecter au registre à l'aide d'un jeton de régénération dans l'interface de ligne de commande IBM Cloud:
ibmcloud cr login --client docker
Vous pouvez utiliser l'interface de ligne de commande Docker pour vous connecter au registre à l'aide d'un jeton bearer :
-
Générez un jeton au porteur à l'aide de
ibmcloud iam oauth-tokens. -
Connectez-vous au registre à l'aide de la commande
docker login. RemplacezBEARER_TOKENpar votre jeton bearer etREGISTRY_DOMAINpar le Domaine:docker login -u iambearer --password BEARER_TOKEN REGISTRY_DOMAIN
Utilisation de Podman pour accéder à votre espace de nom
Se connecter au registre et extraire une image à l'aide de la CLI, où IMAGE_NAME est le nom de l'image.
ibmcloud cr login --client podman
podman pull IMAGE_NAME
Utilisation de Skopeo pour accéder à votre espace de nom
Connectez-vous au registre à l'aide de l'interface de ligne de commande Skopeo.
Vous pouvez utiliser l'interface de ligne de commande Skopeo pour vous connecter au registre à l'aide d'un jeton bearer, remplacez REGISTRY_DOMAIN par leDomaine:
ibmcloud iam oauth-tokens | sed -ne '/IAM token/s/.* //p' | skopeo login -u iambearer --password-stdin REGISTRY_DOMAIN
Accès à vos espaces de nom à l'aide d'un programme
Utilisez votre propre code pour accéder à vos espaces de nom dans IBM Cloud Container Registry.
La plupart des utilisateurs peuvent utiliser la commande ibmcloud cr login pour simplifier l'opération docker login, mais si vous mettez en place
une automatisation ou si vous utilisez un autre client, vous souhaiterez peut-être vous authentifier manuellement. Vous devez fournir un nom d'utilisateur et un mot de passe. Dans IBM Cloud Container Registry, le nom d'utilisateur indique
le type de secret qui est présenté dans le mot de passe.
Les noms d'utilisateur suivants sont valides :
iambearerLe mot de passe contient un jeton d'accès IAM. Ce type d'authentification a une courte durée de vie, mais peut être issue de tous types d'identité IAM. Par exemple,ibmcloud iam oauth-tokens.iamrefreshLe mot de passe contient un jeton de régénération IAM utilisé en interne par le registre pour générer un jeton d'accès IAM. Ce type d'authentification a une durée de vie plus longue. Il est utilisé par la commandeibmcloud cr login.iamapikeyLe mot de passe est une clé d'interface de programmation IAM utilisée en interne par le registre pour générer un jeton d'accès IAM. Ce type d'authentification est celui privilégié pour l'automatisation. Vous pouvez utiliser une clé d'interface de programmation utilisateur ou une clé d'interface de programmation d'ID de service. Pour plus d'informations, voir Accès à vos espaces de nom avec l'automatisation.