Autorización de recursos con perfiles de confianza IAM

Nube privada virtual Infraestructura clásica Satellite

Aprenda a configurar el acceso a o para sus recursos utilizando perfiles de confianza.

Puede habilitar los perfiles de confianza de IAM ejecutando el mandato ibmcloud ks cluster master refresh.

En IAM
Empiece creando un perfil de confianza de IAM. A continuación, enlace el perfil de confianza con el recurso de cálculo de IBM Cloud Kubernetes Service seleccionando condiciones para emparejarlas con los clústeres, incluyendo un espacio de nombres de Kubernetes y una cuenta de servicio en los clústeres. Por último, asigne políticas de acceso a los servicios de IBM Cloud que desee que utilicen sus apps.
En el clúster
Mediante una proyección del volumen de tokens de la cuenta de servicio de Kubernetes, las aplicaciones que se ejecutan en el espacio de nombres Kubernetes de tu clúster vinculado y que utilizan la cuenta de servicio de dicho espacio de nombres pueden intercambiar la clave pública de la cuenta de servicio para obtener un token de acceso IAM de IBM Cloud. La app puede utilizar esta señal de acceso para autenticar las solicitudes de API a los servicios de IBM Cloud, como las bases de datos, Watson o la infraestructura de VPC. Mediante las políticas de acceso del perfil de confianza, se controla qué acciones permite realizar la señal a la aplicación.

Creación de un perfil de confianza de IAM

Para crear un perfil de confianza en su cuenta, consulte Creación de perfiles de confianza en la documentación de IAM. Tenga en cuenta que para crear un perfil de confianza, debe ser el propietario de la cuenta. Además, se requieren las siguientes funciones de acceso.

Establecer el perfil de confianza predeterminado para el clúster

Para establecer un perfil de confianza para un único clúster, ejecute el comando ibmcloud ks experimental trusted-profile set comando.

Si desea que todos los clusters de un grupo de recursos utilicen el mismo perfil de confianza, ejecute el comando ibmcloud ks experimental trusted-profile default set comando.

Consulta los detalles de tu perfil de confianza

Para obtener el perfil de confianza predeterminado para los clústeres del mismo grupo de recursos, ejecute el comando ibmcloud ks experimental trusted-profile default get comando.

Configure los pods de aplicación para autenticarse con los servicios de IBM Cloud

Otorga a los pods de aplicaciones que se ejecutan en tu clúster de IBM Cloud® Kubernetes Service acceso a los servicios de IBM Cloud mediante perfiles de confianza en IBM Cloud Identity and Access Management (IAM). Como desarrollador, puede configurar los pods de aplicación para autenticarse con los servicios de IBM Cloud en clústeres que están enlazados a un perfil de confianza de IAM configurado.

Para completar estos pasos, no es necesario tener el rol de acceso de administrador. Sin embargo, debe cumplir los siguientes requisitos Rol de acceso a la plataforma de visor; rol de acceso al servicio de escritor para el clúster en IBM Cloud IAM para Kubernetes Service; las acciones iam-identity.profile.create y iam-identity.profile.linkToResource para el servicio de identidad IAM.

Antes de empezar:

Para configurar los pods de aplicación para autenticarse con los servicios de IBM Cloud:

  1. Configura tu archivo de configuración del pod para que utilice la proyección de volumen del token de la cuenta de servicio.

    1. En la sección containers, monte la señal de identidad en la sección volumeMounts .
        ...
            volumeMounts:
            - mountPath: /var/run/secrets/tokens
              name: sa-token
        ```
    1. En la sección `volumes`, configure la proyección del volúmenes de señal de cuenta de servicio.
    
        Modifique el campo `expirationSeconds` para controlar el tiempo de validez de la señal. Para recuperar señales de IAM, la caducidad de la señal de cuenta de servicio tiene que ser de 1 hora como máximo.
        {: tip}
    
        ```yaml {: codeblock}
        ...
        volumes:
          - name: sa-token
            projected:
              sources:
              - serviceAccountToken:
                  path: sa-token
                  expirationSeconds: 3600
                  audience: iam
        ...
        ```
    
  2. Diseñe la app para intercambiar la señal proyectada de cuenta de servicio por una señal de IAM que puede utilizar para llamadas de API posteriores a los servicios de IBM Cloud. Revise la siguiente solicitud de autenticación de ejemplo. Sustituye « ${profile_id} » por el ID del perfil de confianza al que está vinculado el clúster. Para ver la lista de ID de perfiles disponibles, tú o el administrador de la cuenta podéis utilizar el comando « ibmcloud iam tps », la URL « GET 'https://iam.cloud.ibm.com/v1/profiles/?account_id=<account_id>' », o bien podéis consultar los perfiles de confianza en la consola de 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. Antes de desplegar la app, pruebe el siguiente trabajo Kubernetes de ejemplo para probar el intercambio de señales. En el siguiente trabajo de Kubernetes, un pod de curl realiza una solicitud de API a IBM Cloud IAM para verificar que la clave pública del clúster se intercambie por una señal de acceso de IAM. Es posible que la app llame a otros servicios de IBM Cloud que el perfil de confianza autorice.

    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. Despliegue el trabajo.

    kubectl apply -f exchange-job.yaml
    
  5. Revise los detalles del trabajo para verificar que se ha realizado correctamente.

    kubectl describe job token-exchange-job
    
  6. Revise la salida de los mensajes job completed y succeeded para verificar que el trabajo se ha realizado correctamente.

  7. Si el trabajo se ha realizado correctamente, compruebe los sucesos globales de Activity Tracker en Frankfurt para verificar la línea de registro con detalles en la solicitud Perfil de confianza. Si el trabajo ha fallado, revise la configuración e inténtelo de nuevo.