Clés secrètes de chambre forte pour l'autorisation d'extraction d'images
Vous pouvez héberger des images de conteneur dans des registres privés ou des référentiels qui nécessitent une autorisation pour extraire les images. Nous vous recommandons de stocker vos données d'identification à l'aide du service Oracle Cloud Infrastructure Vault pour une sécurité accrue et une gestion simplifiée des données d'identification.
Vous pouvez également fournir un nom d'utilisateur et un mot de passe au service Oracle Cloud Infrastructure Container Instances directement. Pour plus d'informations, voir CreateBasicImagePullSecretDetails.
Créer les données d'identification
Le type de nom d'utilisateur et de mot de passe requis pour extraire votre image dépend du registre. Les données d'identification sont généralement les mêmes que celles que vous utilisez pour le registre au moyen de l'interface de ligne de commande Docker. Par exemple, il s'agit des données d'identification que vous utilisez pour docker login avant d'extraire l'image avec docker pull.
Les clés secrètes de chambre forte pour l'autorisation d'image sont destinées à être utilisées avec des registres externes, tels que Docker Hub. Pour les référentiels privés dans le registre de conteneurs, utilisez des politiques IAM basées sur les principaux de ressource Instances de conteneur. Pour plus d'informations, voir Exemples de politiques.
Créer votre clé secrète de chambre forte
Créez une clé secrète de chambre forte qui contient les données d'identification d'extraction de l'image. La clé secrète doit être une chaîne JSON contenant les champs username et password. Tous les champs supplémentaires seront ignorés. Notez l'OCID de la clé secrète que vous créez car vous en aurez besoin plus tard dans le processus.
Par exemple, si votre nom d'utilisateur est "container-instance-user" et que votre mot de passe est "<example-password>", la clé secrète sera :
{
"username": "container-instance-user",
"password": "<example-password>"
}Les clés secrètes de chambre forte ont un contrôle des versions. Les instances de conteneur utilisent toujours la dernière version d'une clé secrète.Autoriser les instances de conteneur à lire les clés secrètes de chambre forte
Les instances de conteneur que vous créez doivent être autorisées à lire les clés secrètes de chambre forte fournies pour l'autorisation de l'image.
- Créez un groupe dynamique qui inclut les instances de conteneur pour lesquelles vous voulez accorder l'autorisation de lecture.
L'exemple de règle de correspondance de groupe dynamique suivant inclura toutes les instances de conteneur de votre location.
ALL {resource.type='computecontainerinstance'} -
Créez une politique qui permet au groupe dynamique de lire les clés secrètes de chambre forte en question. Plus précisément, le groupe doit pouvoir lire les ensembles de clés secrètes de chambre forte.
L'exemple de politique suivant permet au groupe dynamique indiqué de lire tous les ensembles de clés secrètes de chambre forte de votre location. Remplacez <dynamic-group-name> par le nom réel de votre groupe dynamique.
allow dynamic-group <dynamic-group-name> to read secret-bundles in tenancy
Ces politiques sont des exemples de base qui donnent un accès relativement large. Vous pouvez utiliser des mécanismes de politique IAM standard pour modifier ces politiques afin de créer des autorisations plus strictes, telles que la limitation de la portée aux instances de conteneur ou aux clés secrètes d'un seul compartiment. Pour plus d'informations, voir Gestion des politiques.
Créer une instance de conteneur à l'aide des clés secrètes de chambre forte pour l'autorisation d'image
Si vous voulez utiliser des clés secrètes de chambre forte pour l'autorisation d'image, utilisez l'API, les trousses SDK ou l'interface de ligne de commande des instances de conteneur.
Lorsque vous créez la demande de création de l'instance de conteneur, fournissez une entrée CreateVaultImagePullSecretDetails dans le champ imagePullSecrets de CreateContainerInstanceDetails.
L'exemple suivant présente une abréviation CreateContainerInstanceDetails. :
{
"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 ... >
}
Lorsque les instances de conteneur extraient l'image example.registry.io/container-instance-user/example-image:latest, elles utilisent les données d'identification stockées dans la clé secrète avec l'OCID ocid1.vaultsecret.oc1.<region_code>.<unique_ID>.
Les clés secrètes d'extraction d'image sont définies séparément des spécifications du conteneur. Si registryEndpoint est un préfixe de imageUrl, il s'agit d'une correspondance. Plusieurs correspondances sont autorisées. Lorsque les instances de conteneur extraient l'image, les clés secrètes d'extraction d'image correspondantes sont tentées dans l'ordre jusqu'à ce que l'extraction aboutisse.
Dans l'exemple suivant, les clés secrètes correspondantes pour l'image example.registry.io/abc/one:latest sont secret.ocid.abc et secret.ocid.one. Et les clés secrètes correspondantes pour l'image example.registry.io/abc/two:latest sont secret.ocid.abc et 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"
},
]
}