Clés secrètes de coffre pour l'autorisation d'extraction d'image
Vous pouvez héberger des images de conteneur dans des registres privés ou des référentiels qui nécessitent une autorisation afin d'extraire les images. Nous vous recommandons de stocker vos informations d'identification à l'aide du service Oracle Cloud Infrastructure Vault pour améliorer la sécurité et faciliter la gestion des informations d'identification.
Vous pouvez également fournir un nom utilisateur et un mot de passe au service Oracle Cloud Infrastructure Container Instances directement. Pour plus d'informations, reportez-vous à CreateBasicImagePullSecretDetails.
Créer des informations d'identification
Le type de nom d'utilisateur et de mot de passe requis pour extraire votre image dépend du registre. Les informations d'identification sont généralement les mêmes que pour le registre via l'interface de ligne de commande Docker. Par exemple, il s'agirait des mêmes informations d'identification que pour docker login
avant d'extraire l'image avec docker pull
.
Les clés secrètes de coffre 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 Container Registry, utilisez des stratégies IAM basées sur les principaux de ressource Container Instances. Pour plus d'informations, reportez-vous à Exemples de stratégie.
Créer votre clé secrète de coffre
Créez une clé secrète de coffre contenant les informations d'identification d'extraction d'image. La clé secrète doit être une chaîne JSON avec des champs username
et password
. Les champs supplémentaires seront ignorés. Notez l'OCID de la clé secrète que vous créez car vous aurez besoin de l'OCID ultérieurement dans le processus.
Par exemple, si votre nom 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 coffre sont gérées par version. 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 Vault
Les instances de conteneur que vous créez doivent être autorisées à lire les clés secrètes de coffre fournies pour l'autorisation d'image.
- Créez un groupe dynamique qui inclut les instances de conteneur pour lesquelles vous voulez accorder des droits d'accès en lecture.
L'exemple de règle de mise en correspondance de groupe dynamique suivant inclura toutes les instances de conteneur de votre location.
ALL {resource.type='computecontainerinstance'}
-
Créez une stratégie qui permet au groupe dynamique de lire les clés secrètes de coffre en question. Plus précisément, le groupe doit pouvoir lire les groupes de clés secrètes de coffre.
L'exemple de stratégie suivant permet au groupe dynamique donné de lire tous les bundles de clé secrète de coffre dans 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 fondamentaux qui donnent un accès relativement large. Vous pouvez utiliser des mécanismes de stratégie IAM standard pour modifier ces stratégies afin de créer des droits d'accès plus stricts, par exemple en limitant la portée aux instances de conteneur ou aux clés secrètes dans un seul compartiment. Pour plus d'informations, reportez-vous à Gestion des stratégies.
Création de l'instance de conteneur à l'aide de clés secrètes Vault pour l'autorisation d'image
Si vous voulez utiliser des clés secrètes de coffre pour l'autorisation d'image, utilisez l'API Container Instances, les kits SDK ou l'interface de ligne de commande.
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 un CreateContainerInstanceDetails.
abrégé :
{
"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 Container Instances extrait l'image example.registry.io/container-instance-user/example-image:latest
, il utilise les informations 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 de conteneur. Si registryEndpoint
est un préfixe de imageUrl
, il s'agit d'une correspondance. Plusieurs correspondances sont autorisées. Lorsque Container Instances extrait l'image, les clés secrètes d'extraction d'image correspondantes sont tentées dans l'ordre jusqu'à ce que l'extraction réussisse.
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"
},
]
}