Authentifizierung bei Container Registry mit IAM
Melden Sie sich bei Container Registry mithilfe von IAM-API-Schlüsseln oder Bearer-Tokens an, um Images in Ihren Registry-Namespaces hoch- und herunterzuladen.
Alle Konten erfordern IAM-Zugriffsrichtlinien. Informationen zum Einrichten und Verwalten von IAM-Zugriffsrichtlinien finden Sie unter IAM-Zugriffsrichtlinien definieren.
Der Zugriff auf IBM Cloud Container Registry ist entweder automatisiert oder interaktiv. Beim automatisierten Zugriff werden in der Regel API-Schlüssel verwendet, beim interaktiven Zugriff hingegen Trägertokens.
Wenn Sie über eine IAM-Zugriffsrichtlinie verfügen, aber Access denied Fehlermeldungen erhalten, finden Sie weitere Informationen unter Warum erhalte ich Access denied Fehlermeldungen?.
Wenn Sie Ihre Container-Images in Kubernetes-Bereitstellungen verwenden möchten, lesen Sie die Informationen in Mit geheimem Schlüssel für Image-Pull-Operationen auf Images in anderen IBM Cloud-Konten oder externen privaten Registrys aus anderen Kubernetes-Namensbereichen als dem Standardnamensbereich zugreifen.
Zugriff auf Namensbereiche bei der Automatisierung
Durch die Verwendung von API-Schlüsseln für API-Schlüssels können Sie Push- und Pull-Operationen für Container-Images in Bezug auf Ihre Namensbereiche automatisieren.
API-SchlüsselEin eindeutiger Code, der an eine API weitergegeben wird, um die aufrufende Anwendung oder den aufrufenden Benutzer zu identifizieren und um Verfolgungsdaten zu senden. Ein API-Schlüssel wird verwendet, um zu verfolgen und zu steuern, wie die API verwendet wird, um so z. B. Verwendung in böswilliger Absicht oder Missbrauch der API zu verhindern. sind mit Benutzer-IDs oder Service-IDs in Ihrem Konto verknüpft und können in der gesamten IBM Cloud® verwendet werden. Sie können einen API-Schlüssel in der Befehlszeilenschnittstelle (CLI) oder im Rahmen der Automatisierung verwenden, um sich mit Ihrer Benutzer- oder Dienstidentität zu authentifizieren. Ein API-Schlüssel für Benutzer ist einem Benutzer und dessen Zugriffsrichtlinien zugeordnet. Ein API-Schlüssel für Service-IDs verfügt über eigene Zugriffsrichtlinien. Sie können mehrere Service-IDs mit unterschiedlichen, detaillierten Richtlinien verwenden, damit Ihrer Automatisierung spezifische und begrenzte Berechtigungen gewährt werden.
Wenn Sie einen IBM Cloud Kubernetes Service oder Red Hat® OpenShift® on IBM Cloud® Cluster erstellen, wird der Cluster mit einer IBM Cloud IAM-Dienst-ID erstellt, der eine IAM -Reader-Dienstzugriffsrichtlinie für IBM Cloud Container
Registry zugewiesen wird. Die Berechtigungsnachweise der Service-ID werden in einem nicht ablaufenden Service-ID-API-Schlüssel authentifiziert, der in Ihrem Cluster in geheimen Schlüsseln für das Abrufen von Images per Pull-Operation gespeichert
ist. Die geheimen Schlüssel für Pull-Operationen für Images werden zum Kubernetes-Standardnamensbereich (default) und zur Liste der geheimen Schlüssel im Standardservicekonto (default) für diesen Kubernetes-Namensbereich
hinzugefügt. Wenn Sie weitere API-Schlüssel für Service-IDs benötigen oder wenn der API-Schlüssel für Service-IDs fehlt, können Sie einen API-Schlüssel für Service-IDs manuell erstellen.
API-Schlüssel für Service-IDs können wie folgt eingesetzt werden:
- Für IBM Cloud Kubernetes Service- oder Red Hat OpenShift on IBM Cloud-Cluster. Bei der Erstellung von IBM Cloud Kubernetes Service- und Red Hat OpenShift on IBM Cloud-Clustern wird für jeden Cluster automatisch eine einzelne Service-ID erstellt. Wenn Sie mehrere Service-IDs benötigen, können Sie diese manuell erstellen.
- Für Kubernetes- und Red Hat® OpenShift®-Cluster außerhalb von IBM Cloud. Sie müssen eine eigene Service-ID, einen eigenen API-Schlüssel und einen eigenen geheimen Schlüssel für Pull-Operationen erstellen.
- Docker-Befehlszeilenschnittstelle und andere Clients. Sie müssen eine eigene Service-ID und einen eigenen API-Schlüssel erstellen.
API-Schlüssel für Service-IDs manuell erstellen
Erstellen Sie einen API-Schlüssel für Service-IDs, um sich bei der Registry anzumelden.
Führen Sie die folgenden Schritte aus, um einen API-Schlüssel für Service-IDs zu erstellen:
-
Erstellen Sie eine Service-ID. Informationen hierzu finden Sie im Abschnitt zu
ibmcloud iam service-id-create. -
Weisen Sie der Service-ID Servicerichtlinien zu, um die Zugriffsberechtigungsebene zu steuern, die zulässig ist, wenn die Service-ID zur Authentifizierung bei IBM Cloud Container Registry verwendet wird. Informationen hierzu finden Sie in Zugriffsberechtigungen für Ressourcen verwalten.
-
Erstellen Sie einen API-Schlüssel für Service-IDs. Informationen hierzu finden Sie in API-Schlüsse für Service-IDs verwalten und im Abschnitt zu
ibmcloud iam service-api-key-create.
API-Schlüssel für Benutzer manuell erstellen
Erstellen Sie einen API-Schlüssel für Benutzer, um sich bei der Registry anzumelden.
Wenn Sie einen API-Schlüssel für Benutzer erstellen, werden die Zugriffsrichtlinien des Benutzers verwendet.
Informationen zur Erstellung eines API-Schlüssels für Benutzer finden Sie in API-Schlüssel für Benutzer verwalten und im Abschnitt zu ibmcloud iam api-key-create.
Client-Software für die Authentifizierung bei der Automatisierung verwenden
Verwenden Sie einen API-Schlüssel für die Anmeldung bei der Registry mithilfe allgemeiner Clients.
Clients benötigen einen API-Schlüssel und eine Domäne. Ersetzen Sie API_KEY durch Ihren API-Schlüssel und REGISTRY_DOMAIN durch die Domäne der Registry, in der Ihre Namensbereiche eingerichtet sind.
| Bereich | Region, die früher bekannt war als | REGISTRY_DOMAIN |
|---|---|---|
global |
Nicht zutreffend | icr.io |
au-syd |
ap-south |
au.icr.io |
br-sao |
Nicht zutreffend | br.icr.io |
ca-mon |
Nicht zutreffend | ca2.icr.io |
ca-tor |
Nicht zutreffend | ca.icr.io |
eu-de |
eu-central |
de.icr.io |
eu-es |
Nicht zutreffend | es.icr.io |
eu-gb |
uk-south |
uk.icr.io |
in-che |
Nicht zutreffend | in.icr.io |
in-mum |
Nicht zutreffend | in2.icr.io |
jp-osa |
Nicht zutreffend | jp2.icr.io |
jp-tok |
ap-north |
jp.icr.io |
us-south |
Nicht zutreffend | us.icr.io |
Weitere Informationen zur Verwendung von IBM Cloud Container Registry in einer Continuous Delivery-Pipeline finden Sie unter Private Image-Registry verwenden.
Beispiele für die automatische Authentifizierung mit der Registry werden für die folgenden Clients bereitgestellt:
Wenn Sie die Meldung 400 Bad Request erhalten, ist die Kombination aus Benutzername und Passwort ungültig.
Buildah für die Authentifizierung bei der Registry verwenden
Sie können eine Authentifizierung bei der Registry mithilfe von Buildah durchführen und damit die Ausführung von Push- und Pull-Operationen für Images in der Registry ermöglichen.
Verwenden Sie den API-Schlüssel und die Domäne, um sich bei der Registry anzumelden, indem Sie den folgenden Buildah-Befehl ausführen. Ersetzen Sie dabei API_KEY durch den API-Schlüssel
und REGISTRY_DOMAIN durch die Domäne:
buildah login -u iamapikey -p API_KEY REGISTRY_DOMAIN
Docker für die Authentifizierung mit der Registry verwenden
Sie können eine Authentifizierung bei der Registry mithilfe von Docker durchführen und damit die Ausführung von Push- und Pull-Operationen für Images in der Registry ermöglichen.
Verwenden Sie den API-Schlüssel und die Domäne, um sich an der Registry anzumelden, indem Sie den folgenden Docker-Befehl ausführen. Ersetzen Sie dabei API_KEY durch den API-Schlüssel
und REGISTRY_DOMAIN durch die Domäne:
docker login -u iamapikey -p API_KEY REGISTRY_DOMAIN
Podman für die Authentifizierung bei der Registry verwenden
Sie können eine Authentifizierung bei der Registry mithilfe von Podman durchführen und damit die Ausführung von Push- und Pull-Operationen für Images in der Registry ermöglichen.
Verwenden Sie den API-Schlüssel und die Domäne, um sich bei der Registry anzumelden, indem Sie den folgenden Podman-Befehl ausführen. Ersetzen Sie dabei API_KEY durch den API-Schlüssel
und REGISTRY_DOMAIN durch die Domäne:
podman login -u iamapikey -p API_KEY REGISTRY_DOMAIN
Skopeo für die Authentifizierung bei der Registry verwenden
Sie können eine Authentifizierung bei der Registry mithilfe von Skopeo durchführen und damit die Ausführung von Push- und Pull-Operationen für Images in der Registry ermöglichen.
Sie können zum Beispiel den folgenden Skopeo-Befehl verwenden, um ein Image aus Docker Hub zu extrahieren und mit einer Push-Operation in Ihren Namensbereich zu übertragen. Ersetzen Sie REGISTRY_DOMAIN durch den Namen Ihrer
Domäne, NAMESPACE durch Ihren Namensbereich und API_KEY durch Ihren API-Schlüssel:
skopeo --insecure-policy --override-os linux copy docker://busybox:latest docker://REGISTRY_DOMAIN/NAMESPACE/busybox:latest --dest-creds iamapikey:API_KEY
Interaktiver Zugriff auf Namensbereiche
Sie können Trägertokens und Aktualisierungstokens verwenden, um Images interaktiv mit Push- und Pull-Operationen in und aus Ihren Namensbereichen zu übertragen.
Beispiele für den interaktiven Zugriff auf Ihre Namensbereiche werden für die folgenden Clients bereitgestellt:
Buildah für den Zugriff auf Ihren Namensbereich verwenden
Melden Sie sich über die Buildah-Befehlszeilenschnittstelle bei der Registry an.
Sie können die Buildah-Befehlszeilenschnittstelle (CLI) verwenden, um sich mit einem Trägertoken bei der Registry anzumelden. Ersetzen Sie dabei REGISTRY_DOMAIN durch die Domäne:
ibmcloud iam oauth-tokens | sed -ne '/IAM token/s/.* //p' | buildah login -u iambearer --password-stdin REGISTRY_DOMAIN
Docker für den Zugriff auf Ihren Namensbereich verwenden
Melden Sie sich über die Docker-Befehlszeilenschnittstelle bei der Registry an.
Sie können die Docker-Befehlszeilenschnittstelle (CLI) verwenden, um sich mit einem Aktualisierungstoken in der IBM Cloud-CLI bei der Registry anzumelden:
ibmcloud cr login --client docker
Sie können die Docker-Befehlszeilenschnittstelle (CLI) verwenden, um sich mit einem Trägertoken bei der Registry anzumelden:
-
Generieren Sie mithilfe von
ibmcloud iam oauth-tokensein Trägertoken. -
Melden Sie sich mit dem Befehl
docker loginbei der Registry an. Ersetzen SieBEARER_TOKENdurch Ihr Trägertoken undREGISTRY_DOMAINdurch die Domäne:docker login -u iambearer --password BEARER_TOKEN REGISTRY_DOMAIN
Podman für den Zugriff auf Ihren Namensbereich verwenden
Melden Sie sich bei der Registrierung an und ziehen Sie ein Abbild mit Hilfe der CLI, wobei IMAGE_NAME der Name des Abbilds ist.
ibmcloud cr login --client podman
podman pull IMAGE_NAME
Skopeo für den Zugriff auf Ihren Namensbereich verwenden
Melden Sie sich über die Skopeo-Befehlszeilenschnittstelle bei der Registry an.
Sie können die Skopeo-Befehlszeilenschnittstelle (CLI) verwenden, um sich mit einem Trägertoken bei der Registry anzumelden. Ersetzen Sie dabei REGISTRY_DOMAIN durch Domäne:
ibmcloud iam oauth-tokens | sed -ne '/IAM token/s/.* //p' | skopeo login -u iambearer --password-stdin REGISTRY_DOMAIN
Programmgesteuerter Zugriff auf Namensbereiche
Verwenden Sie Ihren eigenen Code für den Zugriff auf Ihre Namensbereiche in IBM Cloud Container Registry.
Die meisten Benutzer können den Befehl ibmcloud cr login verwenden, um den Vorgang zu vereinfachen docker login. Wenn Sie jedoch eine Automatisierung
implementieren oder einen anderen Client verwenden, möchten Sie sich möglicherweise manuell authentifizieren. Sie müssen einen Benutzernamen und ein Kennwort angeben. In IBM Cloud Container Registry gibt der Benutzername den Typ des geheimen
Schlüssels an, der im Kennwort angegeben wird.
Die folgenden Benutzernamen sind gültig:
iambearer: Das Kennwort enthält ein IAM-Zugriffstoken. Diese Art der Authentifizierung ist nur kurze Zeit gültig, kann aber aus allen Typen der IAM-Identität abgeleitet werden. Ein Beispiel hierfür istibmcloud iam oauth-tokens.iamrefreshDas Kennwort enthält ein IAM-Aktualisierungstoken, das intern von der Registry für die Generierung eines IAM-Zugriffstokens verwendet wird. Diese Art der Authentifizierung ist länger gültig. Dieser Authentifizierungstyp wird vom Befehlibmcloud cr loginverwendet.iamapikeyDas Kennwort ist ein IAM-API-Schlüssel, der intern von der Registry für die Generierung eines IAM-Zugriffstokens verwendet wird. Diese Art der Authentifizierung wird für die Automatisierung bevorzugt. Sie können den API-Schlüssel für einen Benutzer oder für eine Service-ID verwenden. Weitere Informationen finden Sie unter Zugriff auf Namensbereiche bei der Automatisierung.