Autorizzare le risorse con i profili di fiducia IAM

Virtual Private Cloud Infrastruttura classica Satellite

Scoprite come impostare l'accesso alle risorse o per le risorse utilizzando i profili di fiducia.

Puoi abilitare profili attendibili IAM eseguendo il comando ibmcloud ks cluster master refresh.

In IAM
Iniziate creando un profilo IAM di fiducia. Quindi, collegare il profilo di fiducia con la risorsa di calcolo IBM Cloud Kubernetes Service selezionando le condizioni da abbinare ai cluster, tra cui uno spazio dei nomi Kubernetes e un account di servizio nei cluster. Infine, assegnare i criteri di accesso ai servizi di IBM Cloud che si desidera utilizzare per le applicazioni.
Nel cluster
Tramite la proiezione del volume dei token dell'account di servizio Kubernetes, le applicazioni che vengono eseguite nello spazio dei nomi Kubernetes del cluster collegato e che utilizzano l'account di servizio dello spazio dei nomi possono scambiare la chiave pubblica dell'account di servizio per ottenere un token di accesso IAM IBM Cloud. L'applicazione può utilizzare questo token di accesso per autenticare le richieste API ai servizi di IBM Cloud, come i database, Watson o l'infrastruttura VPC. Attraverso i criteri di accesso del profilo di fiducia, si controllano le azioni che il token consente all'applicazione di eseguire.

Creazione di un profilo IAM di fiducia

Per creare un profilo di fiducia nel proprio account, vedere Creazione di profili di fiducia nella documentazione IAM. Per creare un profilo di fiducia, è necessario essere il proprietario dell'account. Inoltre, sono necessari i seguenti ruoli di accesso.

Impostare il profilo fiduciario predefinito per il cluster

Per impostare un profilo di fiducia per un singolo cluster, eseguire il comando ibmcloud ks experimental trusted-profile set.

Se si desidera che tutti i cluster di un gruppo di risorse usino lo stesso profilo di fiducia, eseguire il comando ibmcloud ks experimental trusted-profile default set.

Scopri i dettagli del tuo profilo di fiducia

Per ottenere il profilo di fiducia predefinito per i cluster dello stesso gruppo di risorse, eseguire il comando ibmcloud ks experimental trusted-profile default get.

Configura i tuoi pod dell'applicazione per l'autenticazione con i servizi IBM Cloud

Dare ai pod applicativi che girano nel cluster IBM Cloud® Kubernetes Service l'accesso ai servizi IBM Cloud usando i profili di fiducia in IBM Cloud Identity and Access Management (IAM). Come sviluppatore, è possibile configurare i pod delle applicazioni in modo che si autentichino con i servizi IBM Cloud nei cluster che sono collegati a un profilo affidabile IAM impostato.

Per completare questi passaggi, non è necessario avere il ruolo di accesso amministratore. Tuttavia, è necessario soddisfare i seguenti requisiti: Ruolo di accesso alla piattaforma Viewer; ruolo di accesso al servizio Writer per il cluster in IBM Cloud IAM per Kubernetes Service; le azioni iam-identity.profile.create e iam-identity.profile.linkToResource per il servizio di identità IAM.

Prima di cominciare:

Per configurare i tuoi pod dell'applicazione per l'autenticazione con servizi IBM Cloud:

  1. Progetta il tuo file di configurazione del pod per utilizzare la proiezione del volume del token dell'account di servizio.

    1. Nella sezione containers, monta il token di identità nella sezione volumeMounts.
        ...
            volumeMounts:
            - mountPath: /var/run/secrets/tokens
              name: sa-token
        ```
    1. Nella sezione `volumes`, configura la proiezione del volume del token di account di servizio.
    
        Modificare il campo `expirationSeconds` per controllare per quanto tempo il token è valido. Per richiamare i token IAM, la scadenza del token dell'account di servizio deve essere di 1 ora o meno.
        {: tip}
    
        ```yaml {: codeblock}
        ...
        volumes:
          - name: sa-token
            projected:
              sources:
              - serviceAccountToken:
                  path: sa-token
                  expirationSeconds: 3600
                  audience: iam
        ...
        ```
    
  2. Progetta la tua applicazione per scambiare il token proiettato dell'account di servizio per un token IAM che puoi usare per le successive chiamate API ai servizi IBM Cloud. Esamina la seguente richiesta di autenticazione di esempio. Sostituire ${profile_id} con l'ID del profilo attendibile a cui è collegato il cluster. Per elencare gli ID profilo disponibili, tu o l'amministratore dell'account puoi utilizzare il comando ibmcloud iam tps, GET 'https://iam.cloud.ibm.com/v1/profiles/?account_id=<account_id>' o puoi visualizzare i profili attendibili nella 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
    
  3. Prima che la tua applicazione venga distribuita, prova il seguente lavoro Kubernetes di esempio per verificare lo scambio di token. Nel seguente lavoro Kubernetes, un pod curl effettua una richiesta API a IBM Cloud IAM per verificare che la chiave pubblica del cluster sia scambiata per un token di accesso IAM. La tua applicazione potrebbe richiamare altri IBM Cloud servizi che il profilo attendibile autorizza.

    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. Distribuire il lavoro.

    kubectl apply -f exchange-job.yaml
    
  5. Esaminare i dettagli del lavoro per verificare che sia stato eseguito correttamente.

    kubectl describe job token-exchange-job
    
  6. Esaminare l'output per i messaggi job completed e succeeded per verificare che il lavoro sia stato eseguito correttamente.

  7. Se il lavoro ha avuto esito positivo, controlla i tuoi eventi globali Activity Tracker a Francoforte per verificare la riga di log con i dettagli sulla richiesta Trusted Profile. Se il lavoro ha avuto esito negativo, esaminare la propria configurazione e riprovare.