Segreti vault per autorizzazione pull immagine

È possibile ospitare le immagini dei container in registri privati o repository che richiedono l'autorizzazione per estrarre le immagini. Ti consigliamo di memorizzare le tue credenziali utilizzando il servizio Oracle Cloud Infrastructure Vault per una maggiore sicurezza e una gestione semplificata delle credenziali.

In alternativa, puoi fornire direttamente un nome utente e una password al servizio Oracle Cloud Infrastructure Container Instances. Per ulteriori informazioni, consulta CreateBasicImagePullSecretDetails.

Crea credenziali

Il tipo di nome utente e password necessari per estrarre l'immagine dipende dal registro. Le credenziali sono in genere le stesse utilizzate per il registro tramite l'interfaccia CLI Docker. Ad esempio, si tratta delle stesse credenziali utilizzate per docker login prima di estrarre l'immagine con docker pull.

I segreti del vault per l'autorizzazione delle immagini sono destinati all'uso con registri esterni, ad esempio Docker Hub. Per i repository privati in Container Registry, utilizzare i criteri IAM basati sui principal delle risorse delle istanze del contenitore. Per ulteriori informazioni, vedere Esempi di criteri.

Crea il segreto vault

Creare un segreto vault contenente le credenziali di pull dell'immagine. Il segreto deve essere una stringa JSON con i campi username e password. Qualsiasi campo aggiuntivo verrà ignorato. Prendere nota dell'OCID del segreto creato perché sarà necessario l'OCID in un secondo momento del processo.

Ad esempio, se il nome utente è "container-instance-user" e la password è "<example-password>", il segreto sarà:

{
 "username": "container-instance-user",
 "password": "<example-password>"
}
Il controllo delle versioni dei segreti vault. Le istanze del contenitore utilizzano sempre la versione più recente di un segreto.

Consenti alle istanze contenitore di leggere i segreti vault

Le istanze del contenitore create devono disporre dell'autorizzazione per leggere i segreti del vault forniti per l'autorizzazione immagine.

  1. Creare un gruppo dinamico che includa le istanze del contenitore alle quali si desidera concedere l'autorizzazione di lettura.

    La regola di corrispondenza dei gruppi dinamici di esempio riportata di seguito includerà tutte le istanze del contenitore nella tenancy.

    ALL {resource.type='computecontainerinstance'}
  2. Creare un criterio che consenta al gruppo dinamico di leggere i segreti del vault in questione. In particolare, il gruppo deve essere in grado di leggere i bundle segreti del vault.

    Il criterio di esempio riportato di seguito consente al gruppo dinamico specificato di leggere tutti i bundle segreti del vault nella tenancy. Sostituire <dynamic-group-name> con il nome effettivo del gruppo dinamico.

    allow dynamic-group <dynamic-group-name> to read secret-bundles in tenancy

Queste politiche sono esempi di base che offrono un accesso relativamente ampio. Puoi utilizzare i meccanismi dei criteri IAM standard per modificare questi criteri e creare autorizzazioni più rigorose, ad esempio limitando l'ambito alle istanze o ai segreti del contenitore in un singolo compartimento. Per ulteriori informazioni, vedere Gestione dei criteri.

Creare l'istanza del contenitore utilizzando i segreti del vault per l'autorizzazione dell'immagine

Se si desidera utilizzare i segreti vault per l'autorizzazione dell'immagine, utilizzare l'interfaccia API, gli SDK o l'interfaccia CLI delle istanze contenitore.

Quando si crea la richiesta di creazione dell'istanza del contenitore, fornire una voce CreateVaultImagePullSecretDetails nel campo imagePullSecrets di CreateContainerInstanceDetails.

L'esempio seguente mostra un CreateContainerInstanceDetails. abbreviato:

{
  "containers": [
    {
      "imageUrl": "example.registry.io/container-instance-user/example-image:latest",
      < ... other fields ... >
    }
  ],
  "imagePullSecrets": [
    {
      "secretType": "VAULT",
      "registryEndpoint": "example.registry.io/container-instance-user",
      "secretId": "ocid1.vaultsecret.oc1.<region_code>.<unique_ID>"
    }
  ],
  < ... other fields ... >
}

Quando le istanze del contenitore estraggono l'immagine example.registry.io/container-instance-user/example-image:latest, utilizza le credenziali memorizzate nel segreto con l'OCID ocid1.vaultsecret.oc1.<region_code>.<unique_ID>.

I segreti pull immagine vengono definiti separatamente dalle specifiche del contenitore. Se registryEndpoint è un prefisso di imageUrl, è una corrispondenza. Sono consentite più corrispondenze. Quando le istanze del contenitore estraggono l'immagine, i segreti pull dell'immagine corrispondente verranno tentati in sequenza fino al completamento dell'estrazione.

Nell'esempio seguente, i segreti corrispondenti per l'immagine example.registry.io/abc/one:latest sono secret.ocid.abc e secret.ocid.one. I segreti corrispondenti per l'immagine example.registry.io/abc/two:latest sono secret.ocid.abc e secret.ocid.two.

{
  "containers": [
    {
      "imageUrl": "example.registry.io/abc/one:latest"
    },
    {
      "imageUrl": "example.registry.io/abc/two:latest"
    },
  ],
  "imagePullSecrets": [
    {
      "secretType": "VAULT",
      "registryEndpoint": "example.registry.io/abc",
      "secretId": "secret.ocid.abc"
    },
    {
      "secretType": "VAULT",
      "registryEndpoint": "example.registry.io/abc/one",
      "secretId": "secret.ocid.one"
    },
    {
      "secretType": "VAULT",
      "registryEndpoint": "example.registry.io/abc/two",
      "secretId": "secret.ocid.two"
    },
  ]
}