Autenticazione su Container Registry tramite IAM

Effettua l'autenticazione su Container Registry utilizzando le chiavi API IAM o i token bearer per caricare e scaricare immagini nei namespace del tuo registro.

Tutti gli account richiedono criteri di accesso IAM. Per impostare e gestire i criteri di accesso IAM, vedere Definizione dei criteri di accesso IAM.

L'accesso a IBM Cloud Container Registry può essere automatizzato, in genere utilizzando chiavi API, o interattivo, in genere utilizzando token al portatore.

Se si dispone di un criterio di accesso IAM, ma si ottengono errori Access denied, vedere Perché si ottengono errori Access denied per assistenza.

Se vuoi utilizzare le tue immagini del contenitore nelle distribuzioni Kubernetes, vedi Utilizzo di un segreto di pull dell'immagine per accedere alle immagini in altri account IBM Cloud o registri privati esterni da spazi dei nomi Kubernetes non predefiniti.

Accesso agli spazi dei nomi nell'automazione

Puoi utilizzare le chiavi API dell'ID servizio per automatizzare l'esecuzione del push e del pull delle immagini del contenitore da e verso i tuoi spazi dei nomi.

Le chiavi APIUn codice univoco che viene passato a un'API per identificare l'applicazione o l'utente chiamante e per inviare dati di tracciamento. Una chiave API viene utilizzata per tracciare e controllare il modo in cui viene utilizzata l'API, ad esempio per impedire l'uso dannoso o improprio dell'API. sono associate agli ID utente o agli ID servizio presenti nel tuo account e puoi utilizzarle su IBM Cloud®. È possibile utilizzare una chiave API nell'interfaccia a riga di comando (CLI) o nell'ambito di un processo di automazione per autenticarsi con la propria identità utente o di servizio. Una chiave API dell'utente è associata all'utente e alle sue politiche di accesso. Una chiave API dell'ID servizio ha le proprie politiche di accesso. È possibile disporre di diversi ID di servizio con politiche di accesso dettagliate, in modo che all’automazione vengano concesse funzionalità specifiche e limitate.

Quando si crea un cluster IBM Cloud Kubernetes Service o Red Hat® OpenShift® on IBM Cloud®, il cluster viene creato con un ID di servizio IAM IBM Cloud a cui viene assegnata una politica di accesso al servizio IAM Reader per IBM Cloud Container Registry. Le credenziali dell'ID del servizio sono autenticate in una chiave API dell'ID del servizio che non scade e che è memorizzata nei segreti di estrazione delle immagini. I segreti di pull dell'immagine vengono aggiunti allo spazio dei nomi Kubernetes di default e all'elenco di segreti nell'account del servizio default per questo spazio dei nomi Kubernetes. Se hai bisogno di più chiavi API dell'ID servizio o manca tale chiave API, puoi creare manualmente una chiave API dell'ID servizio.

Puoi utilizzare le chiavi API dell'ID servizio nei seguenti luoghi:

  • Cluster IBM Cloud Kubernetes Service o Red Hat OpenShift on IBM Cloud. Quando crei i cluster IBM Cloud Kubernetes Service e Red Hat OpenShift on IBM Cloud, viene creato automaticamente un ID servizio per ciascun cluster. Se vuoi più di un ID servizio, puoi crearli manualmente.
  • Kubernetes e cluster di applicazioni Red Hat® OpenShift® che non sono su IBM Cloud. Devi creare i tuoi propri ID servizio, chiave API e segreto di pull.
  • CLI Docker e altri client. Devi creare i tuoi propri ID servizio e chiave API.

Creazione manuale di una chiave API dell'ID servizio

Crea una chiave API con ID servizio che potrai utilizzare per accedere al registro.

Per creare una chiave API dell'ID servizio, completa la seguente procedura:

  1. Crea un ID servizio, vedi ibmcloud iam service-id-create.

  2. Assegna politiche del servizio all'ID servizio per controllare il livello di accesso consentito quando l'ID servizio viene utilizzato per l'autenticazione con IBM Cloud Container Registry; vedi Gestione dell'accesso alle risorse.

  3. Crea una chiave API dell'ID servizio, vedi Gestione delle chiavi API di un ID servizio e ibmcloud iam service-api-key-create.

Creazione manuale di una chiave API dell'utente

Crea una chiave API utente che potrai utilizzare per accedere al registro.

Se crei una chiave API dell'utente, vengono utilizzate le politiche di accesso dell'utente.

Per creare una chiave API dell'utente, vedi Gestione delle chiavi API utente e ibmcloud iam api-key-create.

Utilizzo del software client per l'autenticazione in automazione

Utilizzare una chiave API per accedere al registro utilizzando i client più comuni.

I client richiedono una chiave API e un dominio; sostituire API_KEY con la propria chiave API e REGISTRY_DOMAIN con il dominio del registro in cui sono impostati i namespace.

Domini di registro
Regione Regione che in precedenza era conosciuta come REGISTRY_DOMAIN
global Non applicabile icr.io
au-syd ap-south au.icr.io
br-sao Non applicabile br.icr.io
ca-mon Non applicabile ca2.icr.io
ca-tor Non applicabile ca.icr.io
eu-de eu-central de.icr.io
eu-es Non applicabile es.icr.io
eu-gb uk-south uk.icr.io
in-che Non applicabile in.icr.io
in-mum Non applicabile in2.icr.io
jp-osa Non applicabile jp2.icr.io
jp-tok ap-north jp.icr.io
us-south Non applicabile us.icr.io

Per ulteriori informazioni su come utilizzare IBM Cloud Container Registry in una pipeline Continuous Delivery, vedi Utilizzo di un registro delle immagini privato.

Esempi di autenticazione automatica con il registro sono forniti per i seguenti client:

Se viene visualizzato un messaggio 400 Bad Request, la combinazione di nome utente e password non è valida.

Utilizzo di Buildah per l'autenticazione con il Registro di sistema

È possibile utilizzare Buildah per autenticarsi nel registro, in modo da poter caricare e scaricare immagini da e verso il registro.

Utilizza la chiave API e il dominio per accedere al registro immettendo il seguente comando Buildah, sostituisci API_KEY con la chiave API e REGISTRY_DOMAIN con il dominio:

buildah login -u iamapikey -p API_KEY REGISTRY_DOMAIN

Utilizzo di Docker per l'autenticazione con il Registro di sistema

Puoi utilizzare Docker per eseguire l'autenticazione con il registro in modo da poter eseguire il push e il pull delle immagini da e verso il registro.

Utilizza la chiave API e il dominio per accedere al registro immettendo il seguente comando Docker, sostituisci API_KEY con la chiave API e REGISTRY_DOMAIN con il dominio:

docker login -u iamapikey -p API_KEY REGISTRY_DOMAIN

Utilizzo di Podman per l'autenticazione con il Registro di sistema

È possibile utilizzare Podman per autenticarsi nel registro, in modo da poter caricare e scaricare immagini da e verso il registro.

Utilizza la chiave dell'API e il dominio per accedere al registro immettendo il seguente comando Podman, sostituisci API_KEY con la chiave API e REGISTRY_DOMAIN con il dominio:

podman login -u iamapikey -p API_KEY REGISTRY_DOMAIN

Utilizzo di Skopeo per l'autenticazione con il Registro di sistema

È possibile utilizzare Skopeo per autenticarsi nel registro, in modo da poter caricare e scaricare immagini da e verso il registro.

Per esempio, si può usare il seguente comando Skopeo per prelevare un'immagine da Docker Hub e inviarla al proprio spazio dei nomi. Sostituire REGISTRY_DOMAIN con il nome del proprio dominio, NAMESPACE con il proprio spazio dei nomi e API_KEY con la propria chiave API:

skopeo --insecure-policy --override-os linux copy docker://busybox:latest docker://REGISTRY_DOMAIN/NAMESPACE/busybox:latest --dest-creds iamapikey:API_KEY

Accesso interattivo agli spazi dei nomi

È possibile usare i token bearer e i token refresh per spingere e tirare le immagini da e verso i namespace in modo interattivo.

Esempi di accesso interattivo ai namespace sono forniti per i seguenti client:

Usare Buildah per accedere al proprio spazio dei nomi

Accedi al registro utilizzando la CLI Buildah.

È possibile utilizzare la CLI Buildah per accedere al registro utilizzando un token bearer, sostituire REGISTRY_DOMAIN con il dominio:

ibmcloud iam oauth-tokens | sed -ne '/IAM token/s/.* //p' | buildah login -u iambearer --password-stdin REGISTRY_DOMAIN

Usare Docker per accedere al proprio spazio dei nomi

Accedi al registro utilizzando la CLI Docker.

È possibile utilizzare la CLI Docker per accedere al registro utilizzando un token di aggiornamento nella CLI IBM Cloud:

ibmcloud cr login --client docker

È possibile utilizzare la CLI di Docker per accedere al registro utilizzando un token portatore:

  1. Generare un token portatore utilizzando ibmcloud iam oauth-tokens.

  2. Accedere al registro utilizzando il comando docker login. Sostituire BEARER_TOKEN con il token utente e REGISTRY_DOMAIN con il dominio:

    docker login -u iambearer --password BEARER_TOKEN REGISTRY_DOMAIN
    

Usare Podman per accedere al proprio spazio dei nomi

Accedere al registro ed estrarre un'immagine usando la CLI, dove IMAGE_NAME è il nome dell'immagine.

ibmcloud cr login --client podman
podman pull IMAGE_NAME

Usare Skopeo per accedere al proprio spazio dei nomi

Accedi al registro utilizzando la CLI Skopeo.

È possibile utilizzare la Skopeo CLI per accedere al registro utilizzando un token bearer, sostituire REGISTRY_DOMAIN con il dominio:

ibmcloud iam oauth-tokens | sed -ne '/IAM token/s/.* //p' | skopeo login -u iambearer --password-stdin REGISTRY_DOMAIN

Accedere agli spazi dei nomi in modo programmatico

Utilizzate il vostro codice per accedere ai vostri spazi dei nomi in IBM Cloud Container Registry.

La maggior parte degli utenti può utilizzare il ibmcloud cr login per semplificare l' docker login, ma se si sta implementando un'automazione o si utilizza un client diverso, potrebbe essere preferibile effettuare l'autenticazione manualmente. Devi fornire un nome utente e una password. In IBM Cloud Container Registry, il nome utente indica il tipo di segreto fornito nella password.

I seguenti nomi utente sono validi:

  • iambearer la password contiene un token di accesso IAM. Questo tipo di autenticazione è di breve durata, ma può essere derivato da tutti i tipi di identità IAM. Ad esempio, da ibmcloud iam oauth-tokens.
  • iamrefresh La password contiene un token di aggiornamento IAM che viene utilizzato internamente dal registro per generare un token di accesso IAM. Questo tipo di autenticazione dura più a lungo ed è utilizzato dal comando ibmcloud cr login.
  • iamapikey La password è una chiave API IAM utilizzata internamente dal registro per generare un token di accesso IAM. Questo tipo di autenticazione è il tipo preferito per l'automazione. È possibile utilizzare una chiave API utente o una chiave API con ID servizio. Per ulteriori informazioni, vedere Accesso ai namespace nell'automazione.