Autoriser des ressources avec des profils de confiance IAM
Cloud privé virtuel Infrastructure classique Satellite
Apprenez à configurer l'accès à vos ressources en utilisant des profils de confiance.
Vous pouvez activer les profils sécurisés IAM en exécutant la commande ibmcloud ks cluster master refresh.
- Dans IAM
- Commencez par créer un profil sécurisé IAM. Reliez ensuite ce dernier à la ressource de calcul IBM Cloud Kubernetes Service en sélectionnant les conditions que les clusters doivent respecter, parmi lesquelles un espace de noms et un compte de service Kubernetes dans les clusters. Enfin, affectez des règles d'accès aux services IBM Cloud que vos applications doivent utiliser.
- Dans votre cluster
- Grâce à la projection du volume de jetons des comptes de service d' Kubernetes, les applications qui s'exécutent dans l'espace de noms Kubernetes de votre cluster associé et qui utilisent le compte de service de cet espace de noms peuvent échanger la clé publique du compte de service afin d'obtenir un jeton d'accès IAM de type « IBM Cloud ». Votre application peut utiliser ce jeton d'accès pour authentifier des demandes d'API destinées aux services IBM Cloud, tels que des bases de données, Watson ou des infrastructures VPC. Avec les règles d'accès du profil sécurisé, vous pouvez contrôler les actions que le jeton permet à l'application d'effectuer.
Création d'un profil de confiance IAM
Pour créer un profil de confiance dans votre compte, voir Création de profils de confiance dans la documentation IAM. Notez que pour créer un profil de confiance, vous devez être le propriétaire du compte. En outre, les rôles d'accès suivants sont requis.
- Rôle d'administrateur pour l'ensemble des services de gestion des comptes.
- Rôle d'administrateur sur le service d'identité IAM. Pour plus d'informations, voir Service d'identité IAM.
- Rôles supplémentaires requis pour vos ressources et composants spécifiques.
Définir le profil de confiance par défaut pour le cluster
Pour définir un profil de confiance pour un seul cluster, exécutez la commande ibmcloud ks experimental trusted-profile set.
Si vous souhaitez que tous les clusters d'un groupe de ressources utilisent le même profil de confiance, exécutez la commande ibmcloud ks experimental trusted-profile default set.
Consultez les informations détaillées de votre profil de confiance
Pour obtenir le profil de confiance par défaut des clusters du même groupe de ressources, exécutez la commande ibmcloud ks experimental trusted-profile default get.
Configuration des pods d'application pour s'authentifier auprès des services IBM Cloud
Autorisez les pods d'application qui s'exécutent dans votre cluster IBM Cloud® Kubernetes Service à accéder aux services IBM Cloud à l'aide de profils de confiance dans IBM Cloud Identity and Access Management (IAM). En tant que développeur, vous pouvez configurer les serveurs d'applications afin qu'ils s'authentifient auprès des services IBM Cloud sur des clusters liés à un profil de confiance IAM configuré.
Pour effectuer ces étapes, vous ne devez pas avoir le rôle d'administrateur. Cependant, vous devez remplir les conditions suivantes : Rôle d'accès à la plate-forme de visualisation; rôle d'accès au service Writer pour le cluster dans IBM Cloud IAM for Kubernetes Service; les actions
iam-identity.profile.create et iam-identity.profile.linkToResource pour le service d'identité IAM.
Avant de commencer :
- Connectez-vous à votre compte. Le cas échéant, ciblez le groupe de ressources approprié. Définissez le contexte de votre cluster.
- Vérifiez que l'administrateur de compte a créé un profil sécurisé IAM pour votre cluster.
Pour configurer les serveurs d'application afin qu'ils s'authentifient auprès des services IBM Cloud, procédez comme suit :
-
Configurez votre fichier de configuration de pod pour utiliser la projection de volume du jeton du compte de service.
- Dans la section
containers, montez le jeton d'identité dans la sectionvolumeMounts.
... volumeMounts: - mountPath: /var/run/secrets/tokens name: sa-token ``` 1. Dans la section `volumes`, définissez la projection du volume avec jeton de compte de service. Modifiez la zone `expirationSeconds` pour contrôler la durée de validité du jeton. Pour extraire des jetons IAM, le délai d'expiration des jetons de compte de service doit être inférieur ou égal à une heure. {: tip} ```yaml {: codeblock} ... volumes: - name: sa-token projected: sources: - serviceAccountToken: path: sa-token expirationSeconds: 3600 audience: iam ... ``` - Dans la section
-
Créez votre application de manière à échanger le jeton projeté du compte de service contre un jeton IAM utilisable pour les appels d'API adressés ultérieurement aux services IBM Cloud. Consultez l'exemple de demande d'authentification suivant. Remplacez «
${profile_id}» par l'ID du profil de confiance auquel le cluster est associé. Pour répertorier les identifiants de profil disponibles, vous ou l'administrateur du compte pouvez utiliser la commande «ibmcloud iam tps», l'interface «GET 'https://iam.cloud.ibm.com/v1/profiles/?account_id=<account_id>'», ou consulter les profils de confiance dans la console IAM.curl -s -X POST \ -H "Content-Type: application/x-www-form-urlencoded" \ -H "Accept: application/json" \ -d grant_type=urn:ibm:params:oauth:grant-type:cr-token \ -d cr_token=$(cat /var/run/secrets/tokens/sa-token) \ -d profile_id=${profile_id} \ https://iam.cloud.ibm.com/identity/token -
Avant de déployer votre application, essayez l'exemple de travail Kubernetes suivant pour tester l'échange de jeton. Dans le travail Kubernetes suivant, un pod
curlfait une demande d'API à IBM Cloud IAM pour vérifier que la clé publique du cluster est échangée pour un jeton d'accès IAM. Votre application peut appeler d'autres services IBM Cloud autorisés par le profil sécurisé.apiVersion: batch/v1 kind: Job metadata: name: token-exchange-job namespace: default spec: template: spec: containers: - name: curl image: curlimages/curl:7.77.0 command: ["/bin/sh"] args: ["-c", "curl -s -H \"Content-Type: application/x-www-form-urlencoded\" -H \"Accept: application/json\" -d grant_type=urn:ibm:params:oauth:grant-type:cr-token -d cr_token=$(cat /var/run/secrets/tokens/sa-token) -d profile_id=<profile_id> https://iam.cloud.ibm.com/identity/token"] volumeMounts: - mountPath: /var/run/secrets/tokens name: sa-token restartPolicy: Never serviceAccountName: default volumes: - name: sa-token projected: sources: - serviceAccountToken: path: sa-token expirationSeconds: 3600 audience: iam -
Déployez le travail.
kubectl apply -f exchange-job.yaml -
Vérifiez les détails du travail pour vous assurer qu'il a abouti.
kubectl describe job token-exchange-job -
Consultez la sortie des messages
job completedetsucceededpour vérifier que le travail a abouti. -
Si le travail a abouti, consultez vos événements globaux Activity Tracker à Francfort pour vérifier la ligne de journal avec les détails de la demande de profil sécurisé. Si le travail a échoué, vérifiez votre configuration et réessayez.