Autorização de recursos com perfis confiáveis do IAM

Nuvem privada virtual Infraestrutura clássica Satellite

Saiba como configurar o acesso aos seus recursos ou para eles usando perfis confiáveis.

É possível ativar perfis confiáveis do IAM executando o comando ibmcloud ks cluster master refresh.

No IAM
Comece criando um perfil confiável do IAM. Em seguida, vincule o perfil confiável ao seu recurso de cálculo da IBM Cloud Kubernetes Service, selecionando condições para corresponder aos clusters, incluindo um namespace e uma conta de serviço do Kubernetes nos clusters. Finalmente, atribua políticas de acesso aos serviços do IBM Cloud que deseja que seus aplicativos usem.
No cluster
Por meio da Projeção de volume de token da conta do serviço Kubernetes, os apps que são executados no Namespace do kubernetes do cluster vinculado e que usam a conta do serviço do namespace podem trocar a chave pública da conta do serviço para obter um token de acesso do IBM Cloud IAM. Seu aplicativo pode usar este token de acesso para autenticar solicitações de API para serviços IBM Cloud, como bancos de dados, o Watson ou a infraestrutura de VPC. Por meio das políticas de acesso do perfil confiável, você controla quais ações o token permite ao aplicativo.

Criação de um perfil confiável do IAM

Para criar um perfil confiável em sua conta, consulte Criação de perfis confiáveis na documentação do IAM. Observe que, para criar um perfil confiável, você deve ser o proprietário da conta. Além disso, são necessárias as seguintes funções de acesso.

Definir o perfil confiável padrão para o cluster

Para definir um perfil confiável para um único cluster, execute o comando ibmcloud ks experimental trusted-profile set.

Se quiser que todos os clusters em um grupo de recursos usem o mesmo perfil confiável, execute o comando ibmcloud ks experimental trusted-profile default set.

Veja os detalhes do seu perfil confiável

Para obter o perfil confiável padrão para clusters no mesmo grupo de recursos, execute o comando ibmcloud ks experimental trusted-profile default get.

Configure seus pods de aplicativo para a autenticação com os serviços IBM Cloud

Conceda aos pods de aplicativos que são executados no seu cluster do IBM Cloud® Kubernetes Service acesso aos serviços do IBM Cloud usando perfis confiáveis no IBM Cloud Identity and Access Management (IAM). Como desenvolvedor, é possível configurar seus pods de aplicativo para a autenticação com serviços IBM Cloud em clusters vinculados a um perfil de confiança do IAM que esteja configurado.

Para concluir essas etapas, não é necessário ter a função de acesso de administrador. No entanto, você deve atender aos seguintes requisitos: Função de acesso à plataforma do Viewer; função de acesso ao serviço do Writer para o cluster em IBM Cloud IAM para Kubernetes Service as ações iam-identity.profile.create e iam-identity.profile.linkToResource para o serviço de identidade IAM.

Antes de Iniciar:

Para configurar seus pods de aplicativo para a autenticação com os serviços IBM Cloud:

  1. Configure seu arquivo de configuração do pod para utilizar a projeção de volume do token da conta de serviço.

    1. Na seção containers, monte o token de identidade na seção volumeMounts.
        ...
            volumeMounts:
            - mountPath: /var/run/secrets/tokens
              name: sa-token
        ```
    1. Na seção `volumes`, configure a projeção de volume de token da conta de serviço.
    
        Modifique o campo `expirationSeconds` para controlar o tempo de validade do token. Para recuperar os tokens IAM, o prazo de validade do token da conta de serviço deve ser de 1 hora ou menos.
        {: tip}
    
        ```yaml {: codeblock}
        ...
        volumes:
          - name: sa-token
            projected:
              sources:
              - serviceAccountToken:
                  path: sa-token
                  expirationSeconds: 3600
                  audience: iam
        ...
        ```
    
  2. Projete seu aplicativo afim de trocar o token projetado da conta de serviço por um token do IAM a ser usado em chamadas de API subsequentes para serviços IBM Cloud. Revise a solicitação de autenticação de exemplo a seguir. Substitua ${profile_id} pelo ID do perfil confiável ao qual o cluster está vinculado. Para listar os IDs de perfil disponíveis, você ou o administrador de conta pode usar o comando ibmcloud iam tps, o GET 'https://iam.cloud.ibm.com/v1/profiles/?account_id=<account_id>' ou você pode visualizar os perfis confiáveis no Console do 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 seu app ser implementado, tente a tarefa de Kubernetes de exemplo a seguir para testar a troca de token: Na tarefa do Kubernetes a seguir, um pod curl faz uma solicitação de API para o IAM da IBM Cloud para verificar se a chave pública do cluster é trocada por um token de acesso IAM. Seu aplicativo pode chamar outros serviços IBM Cloud autorizados pelo perfil confiável.

    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. Implementar a tarefa.

    kubectl apply -f exchange-job.yaml
    
  5. Revise os detalhes da tarefa para verificar se foi bem-sucedida.

    kubectl describe job token-exchange-job
    
  6. Revise a saída das mensagens job completed e succeeded para verificar se a tarefa foi bem-sucedida.

  7. Se a tarefa foi bem-sucedida, verifique seus eventos globais Activity Tracker em Frankfurt para verificar a linha de log com detalhes sobre a solicitação de Perfil Confiável. Se a tarefa falhou, revise sua configuração e tente novamente.