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.
- Función de administrador para todos los servicios de gestión de cuentas.
- Rol de administrador sobre el servicio de identidad de IAM. Para obtener más información, consulte Servicio de identidad IAM.
- Funciones adicionales necesarias para sus recursos y componentes específicos.
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:
- Inicie una sesión en la cuenta. If applicable, target the appropriate resource group. Establezca el contexto para el clúster.
- Asegúrese de que el administrador de la cuenta ha creado un perfil de confianza de IAM para el clúster.
Para configurar los pods de aplicación para autenticarse con los servicios de IBM Cloud:
-
Configura tu archivo de configuración del pod para que utilice la proyección de volumen del token de la cuenta de servicio.
- En la sección
containers, monte la señal de identidad en la secciónvolumeMounts.
... 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 ... ``` - En la sección
-
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 -
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
curlrealiza 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 -
Despliegue el trabajo.
kubectl apply -f exchange-job.yaml -
Revise los detalles del trabajo para verificar que se ha realizado correctamente.
kubectl describe job token-exchange-job -
Revise la salida de los mensajes
job completedysucceededpara verificar que el trabajo se ha realizado correctamente. -
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.