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.

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:

Gehen Sie wie folgt vor, um Ihre Anwendungspods für die Authentifizierung bei IBM Cloud-Services zu konfigurieren:

  1. Konfigurieren Sie Ihre Pod-Konfigurationsdatei so, dass die Volumenprojektion für Dienstkontotoken verwendet wird.

    1. Hängen Sie im Abschnitt containers das Identitätstoken im Abschnitt volumeMounts an.
        ...
            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
        ...
        ```
    
  2. 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
    
  3. 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
    
  4. Stellen Sie den Job bereit.

    kubectl apply -f exchange-job.yaml
    
  5. Überprüfen Sie die Jobdetails, um sicherzustellen, dass der Job erfolgreich war.

    kubectl describe job token-exchange-job
    
  6. Überprüfen Sie die Ausgabe für die Nachrichten job completed und succeeded, um sicherzustellen, dass der Job erfolgreich war.

  7. 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.