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.
- Função de administrador para todos os serviços de gerenciamento de contas.
- Função de administrador no serviço de identidade do IAM. Para obter mais informações, consulte Serviço de identidade do IAM.
- Funções adicionais necessárias para seus recursos e componentes específicos.
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:
- Efetue login na sua conta. If applicable, target the appropriate resource group. Configure o contexto para o seu cluster.
- Certifique-se de que o administrador da conta tenha criado um perfil confiável do IAM para o cluster.
Para configurar seus pods de aplicativo para a autenticação com os serviços IBM Cloud:
-
Configure seu arquivo de configuração do pod para utilizar a projeção de volume do token da conta de serviço.
- Na seção
containers, monte o token de identidade na seçãovolumeMounts.
... 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 ... ``` - Na seção
-
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 comandoibmcloud iam tps, oGET '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 -
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
curlfaz 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 -
Implementar a tarefa.
kubectl apply -f exchange-job.yaml -
Revise os detalhes da tarefa para verificar se foi bem-sucedida.
kubectl describe job token-exchange-job -
Revise a saída das mensagens
job completedesucceededpara verificar se a tarefa foi bem-sucedida. -
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.