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 oc cluster master refresh.

No IAM
Comece criando um perfil confiável do IAM. Em seguida, vincule-o ao seu recurso de cálculo do Red Hat OpenShift on IBM Cloud selecionando condições correspondentes aos seus clusters, incluindo uma conta de serviço e um espaço de nomes 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 oc 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 oc 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 oc 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 Red Hat® OpenShift® on IBM Cloud® 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 de visualização; Função de acesso ao serviço Writer para o cluster no IBM Cloud IAM para Kubernetes Service; as ações iam-identity.profile.create iam-identity.profile.linkToResource e 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.

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