Autorisierung von Ressourcen mit vertrauenswürdigen IAM-Profilen
Virtual Private Cloud Klassische Infrastruktur Satellite
Erfahren Sie, wie Sie den Zugriff auf oder für Ihre Ressourcen mithilfe von vertrauenswürdigen Profilen einrichten können.
Sie können vertrauenswürdige IAM-Profile aktivieren, indem Sie den Befehl ibmcloud ks cluster master refresh ausführen.
- In IAM:
- Erstellen Sie zunächst ein vertrauenswürdiges IAM-Profil. Verknüpfen Sie anschließend das vertrauenswürdige Profil mit Ihrer IBM Cloud Kubernetes Service-Rechenressource, indem Sie Bedingungen auswählen, die mit Ihren Clustern übereinstimmen, einschließlich eines Kubernetes-Namensbereichs und eines Servicekontos in den Clustern. Schließlich weisen Sie den IBM Cloud-Services, die Ihre Apps verwenden sollen, Zugriffsrichtlinien zu.
- In Ihrem Cluster:
- Mithilfe der Volumenprognose für Service-Account-Token von „ Kubernetes “ können Apps, die im Namespace „ Kubernetes “ Ihres verknüpften Clusters ausgeführt werden und das Service-Account des Namespaces verwenden, den öffentlichen Schlüssel des Service-Accounts austauschen, um ein IAM-Zugriffstoken von „ IBM Cloud “ zu erhalten. Ihre App kann dieses Zugriffstoken verwenden, um API-Anforderungen für IBM Cloud-Services, wie z. B. Datenbanken, Watson oder VPC-Infrastruktur, zu authentifizieren. Über die Zugriffsrichtlinien des vertrauenswürdigen Profils steuern Sie, welche Aktionen das Token die App ausführen lässt.
Erstellen eines vertrauenswürdigen IAM-Profils
Um ein vertrauenswürdiges Profil in Ihrem Konto zu erstellen, siehe Erstellen vertrauenswürdiger Profile in der IAM-Dokumentation. Beachten Sie, dass Sie der Kontoinhaber sein müssen, um ein vertrauenswürdiges Profil zu erstellen. Zusätzlich sind die folgenden Zugriffsrollen erforderlich.
- Administratorrolle für alle Dienste zur Kontoverwaltung.
- Administratorrolle für IAM Identity Service. Weitere Informationen finden Sie in IAM Identity Service.
- Zusätzliche Rollen, die für Ihre spezifischen Ressourcen und Komponenten erforderlich sind.
Festlegen des standardmäßigen vertrauenswürdigen Profils für den Cluster
Um ein vertrauenswürdiges Profil für einen einzelnen Cluster festzulegen, führen Sie den Befehl ibmcloud ks experimental trusted-profile set aus.
Wenn Sie möchten, dass alle Cluster in einer Ressourcengruppe das gleiche vertrauenswürdige Profil verwenden, führen Sie den Befehl ibmcloud ks experimental trusted-profile default set aus.
Rufen Sie die Details Ihres vertrauenswürdigen Profils ab
Um das standardmäßige vertrauenswürdige Profil für Cluster in derselben Ressourcengruppe zu erhalten, führen Sie den Befehl ibmcloud ks experimental trusted-profile default get aus.
Anwendungspods für die Authentifizierung bei IBM Cloud-Services konfigurieren
Gewähren Sie Anwendungs-Pods, die in Ihrem „ IBM Cloud® Kubernetes Service “-Cluster ausgeführt werden, Zugriff auf „ IBM Cloud “-Dienste, indem Sie vertrauenswürdige Profile in „ IBM Cloud “ (IAM) verwenden: Identity and Access Management. Als Entwickler können Sie Ihre Anwendungspods so konfigurieren, dass sie sich bei IBM Cloud-Services in Clustern authentifizieren, die mit einer Konfiguration eines vertrauenswürdigen IAM-Profils verknüpft sind.
Um diese Schritte auszuführen, müssen Sie nicht über die Administratorrolle verfügen. Sie müssen jedoch die folgenden Voraussetzungen erfüllen: Betrachter plattform Zugriffsrolle; Autorin dienstleistung Zugriffsrolle für den Cluster in IBM Cloud IAM für Kubernetes Service; die iam-identity.profile.create und iam-identity.profile.linkToResource Aktionen für die IAM-Identitätsdienst.
Vorbereitende Schritte:
- Melden Sie sich an Ihrem Konto an. If applicable, target the appropriate resource group. Legen Sie den Kontext für den Cluster fest.
- Stellen Sie sicher, dass Ihr Kontoadministrator ein vertrauenswürdiges IAM-Profil für Ihren Cluster erstellt hat.
Gehen Sie wie folgt vor, um Ihre Anwendungspods für die Authentifizierung bei IBM Cloud-Services zu konfigurieren:
-
Konfigurieren Sie Ihre Pod-Konfigurationsdatei so, dass die Volumenprojektion für Dienstkontotoken verwendet wird.
- Hängen Sie im Abschnitt
containersdas Identitätstoken im AbschnittvolumeMountsan.
... volumeMounts: - mountPath: /var/run/secrets/tokens name: sa-token ``` 1. Richten Sie im Abschnitt `volumes` die Datenträgerprognose für Kubernetes Service-Kontotoken ein. Ändern Sie das Feld `expirationSeconds`, um zu steuern, wie lange das Token für gültig ist. Um IAM-Token abzurufen, darf der Ablauf des Service-Accounttoken eine Stunde nicht überschreiten. {: tip} ```yaml {: codeblock} ... volumes: - name: sa-token projected: sources: - serviceAccountToken: path: sa-token expirationSeconds: 3600 audience: iam ... ``` - Hängen Sie im Abschnitt
-
Entwerfen Sie Ihre App, um das projizierte Token für das Servicekonto gegen ein IAM-Token auszutauschen, das Sie für nachfolgende API-Aufrufe von IBM Cloud-Services verwenden können. Die folgende Authentifizierungsanforderung kann als Beispiel dienen. Ersetzen Sie „
${profile_id}“ durch die ID des vertrauenswürdigen Profils, mit dem der Cluster verknüpft ist. Um die verfügbaren Profil-IDs aufzulisten, können Sie oder der Kontoadministrator den Befehl „ibmcloud iam tps“ oder „GET 'https://iam.cloud.ibm.com/v1/profiles/?account_id=<account_id>'“ verwenden, oder Sie können die vertrauenswürdigen Profile in der IAM-Konsole einsehen.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 -
Versuchen Sie vor der Bereitstellung Ihrer App den folgenden Kubernetes-Beispieljob, um den Tokenaustausch zu testen. Im folgenden Kubernetes-Job setzt ein
curl-Pod eine API-Anforderung an IBM Cloud IAM ab, um zu überprüfen, dass der öffentliche Schlüssel des Clusters gegen ein IAM-Zugriffstoken ausgetauscht wird. Ihre App ruft möglicherweise andere IBM Cloud-Services auf, die das vertrauenswürdige Profil autorisiert.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 -
Stellen Sie den Job bereit.
kubectl apply -f exchange-job.yaml -
Überprüfen Sie die Jobdetails, um sicherzustellen, dass der Job erfolgreich war.
kubectl describe job token-exchange-job -
Überprüfen Sie die Ausgabe für die Nachrichten
job completedundsucceeded, um sicherzustellen, dass der Job erfolgreich war. -
Wenn der Job erfolgreich war, überprüfen Sie Ihre globalen Activity Tracker-Ereignisse in Frankfurt, um die Protokollzeile mit Details zur Trusted Profile-Anforderung zu überprüfen. Wenn der Job fehlgeschlagen ist, überprüfen Sie Ihre Konfiguration und versuchen Sie es erneut.