Use perfis confiáveis como base para ambientes de nuvem seguros..
Este tutorial pode incorrer em custos. Use o Estimador de custos para gerar uma estimativa do custo baseada em seu uso projetado.
O IBM Cloud Identity and Access Management(IAM) permite controlar quais usuários veem, criam, usam e gerenciam recursos em seu ambiente de nuvem. Seu ambiente pode ser uma única conta do IBM Cloud, múltiplas contas ou uma empresa com uma hierarquia de muitos grupos de contas e contas. Ao operar com recursos de conta, geralmente, usuários e IDs de serviço estão envolvidos. No entanto, há mais opções disponíveis para gerenciar o acesso, designar privilégios e identificar: Perfis confiáveis.
Neste tutorial, você aprenderá sobre perfis confiáveis, seus casos de uso e como utilizá-los para segurança aprimorada. Os perfis confiáveis podem servir como base para ambientes de nuvem seguros, como bloco de construção para soluções de nuvem seguras Como parte deste tutorial, você criará um perfil confiável utilizado por um aplicativo para executar tarefas administrativas.
Objetivos
- Saiba mais sobre casos de uso para perfis confiáveis
- Crie perfis confiáveis e gerencie o acesso a recursos em nuvem..
- Aprofunde seu conhecimento sobre Identity and Access Management (IAM)
- A imagem de contêiner do aplicativo é extraída do Container Registry e implementada no cluster Kubernetes em um namespace.
- O usuário se conecta ao aplicativo.
- O aplicativo lê um token de acesso especial do ambiente do Kubernetes e o transforma em um token de acesso do IAM para um perfil confiável.
- O IAM registra eventos de auditoria em IBM Cloud Activity Tracker Event Routing.
Antes de Iniciar
Este tutorial não requer nenhuma instalação e está usando apenas o console do IBM Cloud.
O IBM Cloud Activity Tracker Event Routing deve ser configurado para rotear eventos de auditoria para uma instância de destino IBM Cloud Logs. Encaminhe eventos de auditoria global conforme descrito na configuração de um destino IBM Logs, se não estiver configurado atualmente em sua conta.
Visão Geral: Perfis Confiáveis
Semelhante a usuários e IDs de serviço, perfis confiáveis são identidades que podem receber acesso nas políticas do IAM. Os perfis confiáveis diferem em que não podem criar e possuir chaves de API. Eles são uma identidade dentro de uma conta específica que serve como "gateway" para alguém ou algo mais para trabalhar nessa conta sem a necessidade de uma chave API. Eles podem assumir a identidade desse perfil confiável
Configure essa ou outra pessoa (veja abaixo) como parte da configuração do perfil confiável. Todas as opções usuais estão disponíveis, a API IBM Cloud, a CLI, qualquer um dos SDKs disponíveis, o Terraform ou o console IBM Cloud.
No console, como parte da categoria do IAM, os perfis confiáveis têm sua própria seção. Lá, você pode facilmente criar e gerenciá-los. A captura de tela a seguir mostra a segunda etapa do diálogo para criar um perfil confiável. É possível configurar como estabelecer a confiança, que entidade pode assumir a identidade do perfil confiável É um ou mais de:
- Usuários federados
- Recursos de cálculo
- Serviços IBM Cloud
- IDs de serviço
Casos de uso de perfil confiável
Perfis confiáveis são identidades dentro do IBM Cloud. Eles podem ser membros de grupos de acesso do IAM e, assim, ter privilégios de acesso designados.. Semelhante a usuários e IDs de serviço, também é possível designar diretamente o acesso a perfis confiáveis O recurso de distinção é a capacidade de configurar um perfil confiável, para que identidades ou recursos específicos possam agir sob sua identidade. Essas identidades e recursos podem estar localizados em outras contas. Assim, em um alto nível, o caso de uso para usar perfis confiáveis é permitir trabalho administrativo
- com um determinado conjunto de privilégios
- sob uma identidade específica
- para identidades ou recursos identificados por um conjunto de propriedades configurado como parte do perfil confiável..
Os cenários a seguir são casos de uso para perfis confiáveis, diferindo pela maneira como a confiança é estabelecida:
- Mapear usuários federados e sua associação ao grupo para privilégios IBM Cloud: configure um perfil confiável para permitir que usuários de um provedor de identidade federado assumam sua identidade. É possível definir qual IdP e quais atributos do usuário considerar.
- Executar tarefas administrativas a partir de recursos de cálculo dedicados: é possível configurar um perfil confiável para estabelecer confiança por meio de um recurso de cálculo reconhecido. Tal recurso pode ser um pod específico em um cluster Kubernetes (incluindo Red Hat OpenShift on IBM Cloud) ou uma instância de servidor virtual (VSI) em uma nuvem privada virtual (IBM Cloud VPC).
- Executar tarefas administrativas a partir de um ID de serviço conhecido: um ID de serviço da mesma ou de outra conta tem permissão para assumir a identidade do perfil confiável.
- Implementar recursos em nuvem de uma instância de um serviço em nuvem especial: configure uma instância de um serviço IBM Cloud, identificado por seu CRN (nome do recurso em nuvem) para ter permissão para assumir a identidade de um perfil confiável. Um cenário típico é para um projeto corporativo para implementar uma arquitetura.
Estabelecer confiança
Conforme descrito na visão geral, há diferentes opções disponíveis sobre como estabelecer confiança, como uma entidade pode assumir a identidade de um perfil confiável.
Identidade federada
Os usuários que utilizam um ID de conexão única corporativo ou corporativo para efetuar login no IBM Cloud são chamados de identidades federadas. O provedor de conexão única (SSO) age como provedor de identidade (IdP). Uma grande vantagem de utilizar identidades federadas é que os usuários do não precisam de novas credenciais para usar com o IBM Cloud e podem continuar usando o IdP de suas empresas para autenticação.
Identidades federadas podem ser usadas com perfis confiáveis e em regras dinâmicas de grupos de acesso do IAM.
recurso de cálculo
Em vez de por meio de propriedades do usuário fornecidas por um provedor de identidade, nesse caso, a confiança é estabelecida por meio de atributos de recursos de cálculo.. É possível configurar para confiar apenas em um app em execução, por exemplo, um namespace e um pod específicos em um cluster Kubernetes ou uma instância de servidor virtual em uma VPC com uma combinação específica de valores para grupo de recursos, região, sub-rede e zona. Esse aplicativo confiável pode assumir a identidade do perfil confiável e executar tarefas com os privilégios designados
O benefício de utilizar um perfil confiável com base em um recurso de cálculo é que essa solução evita o uso de uma chave API. Assim, não há requisitos e desafios sobre como criar, armazenar e proteger qualquer chave de API compartilhada, como designar e gerenciar privilégios. O aplicativo que assume a identidade de um perfil confiável simplesmente busca um token de recurso de cálculo especial e, em seguida, transforma-o em um token de acesso regular do IAM para o perfil confiável Depois disso, as tarefas desejadas poderão ser executadas com o token fornecido para autenticação
Consulte a postagem do blog Truques do Desenvolvedor: Simular o Cloud Security for Local App Development para obter algum plano de fundo no token de recurso de cálculo Saiba como desenvolver e testar localmente apps utilizando esse token.
ID do Serviço
Outro método para estabelecer confiança é especificar um ID de serviço. O ID de serviço pode ser da mesma conta ou de outra conta. Como os IDs de serviço são identidades exclusivas em todas as contas do IBM Cloud, nenhum atributo adicional precisa ser configurado. Com essa configuração em vigor, um ID de serviço de uma conta A agora pode solicitar assumir a identidade de um perfil confiável na conta B e executar tarefas (administrativas).
Instância de serviço de nuvem.
Semelhante a um ID de serviço, é possível especificar o nome do recurso em nuvem (CRN) de uma instância de serviço IBM Cloud, para que a instância seja um recurso confiável. Essa instância de serviço pode estar localizada na mesma ou em outra conta.. No momento, seu único cenário suportado é um projeto corporativo para implementar uma arquitetura. Projetos, como instâncias de serviço, com arquiteturas implementáveis podem ser gerenciados centralmente em uma conta. Ao estabelecer confiança por meio do CRN do projeto, ele pode assumir a identidade de um perfil confiável em outra conta na mesma ou em outra hierarquia de conta corporativa, em seguida, implementar um padrão de solução com seus recursos.
Perfil confiável com recurso de cálculo
Para colocar a teoria em prática, você vai autorizar um aplicativo em contêiner a executar tarefas em uma conta IBM Cloud. O aplicativo é implantado em um cluster Kubernetes. Ele serve como recurso de cálculo que será usado para estabelecer confiança para usar o perfil confiável. É possível executar todas as etapas a seguir em um navegador da web com diversas guias abertas Assegure-se de deixar as guias do navegador abertas conforme instruído.
Por motivos de segurança, o aplicativo está operando em um modo somente leitura.. Ele tenta reunir uma lista de seus recursos implementados Você designará privilégios ao aplicativo que determinam quais recursos ele pode ler. Além disso, você implementará o app de uma maneira, para que ele seja acessível somente de dentro do cluster Kubernetes, não da internet pública.
A postagem do blog Transformar seu contêiner em um Cloud Identityconfiável discute o mesmo cenário.
Cluster Kubernetes como recurso de cálculo
O Kubernetes Service fornece um ambiente para implementar apps altamente disponíveis em contêineres que são executados em clusters do Kubernetes.
Ignore esta seção se tiver um cluster existente que deseja reutilizar com este tutorial. No restante deste tutorial, o nome do cluster é referenciado como mycluster-tpcr, basta substituí-lo pelo nome do seu cluster. Observe a versão mínima exigida de Kubernetes de 1.21.
Um cluster mínimo com uma (1) zona, um (1) nó do trabalhador e o menor tamanho disponível (Tipo) é suficiente para este tutorial. É necessária uma versão mínima do Kubernetes 1.21. Certifique-se de selecionar uma versão apropriada ao criar o cluster.
Abra os clusters do Kubernetes e clique em Criar cluster. Consulte a documentação referenciada abaixo para obter mais detalhes com base no tipo de cluster. Resumo:
- Clique em cluster de camada padrão
- Para Kubernetes na infraestrutura do VPC, consulte a documentação de referência Criando clusters do VPC
- Clique em Criar VPC:
- Digite um nome para a VPC.
- Escolha o mesmo grupo de recursos que o cluster
- Clique em Criar.
- Anexe um Public Gateway a cada uma das sub-redes criadas:
- Navegue para as Nuvens privadas virtuais
- Clique na VPC criada anteriormente para o cluster.
- Role até a seção de sub-redes e clique em uma sub-rede.
- Na seção Public Gateway, clique em Desconectado para alterar o estado para Anexado
- Clique no botão Voltar do navegador para retornar para a página de detalhes do VPC
- Repita as três etapas anteriores para anexar um gateway público a cada sub-rede
- Clique em Criar VPC:
- Para Kubernetes na infraestrutura clássica, consulte a documentação de referência Criando cluster clássico.
- Escolha um grupo de recursos.
- Desmarque todas as zonas, exceto uma.
- Reduza para 1 Nós do trabalhador por zona.
- Escolha o menor tipo de Conjunto de Trabalhadores
- Para o Nome do cluster, use mycluster-tpcr.
- Desative todas as opções de segurança para esse cluster de demonstração que será excluído após a conclusão deste tutorial. Será importante avaliá-los cuidadosamente para outros clusters que você criar.
Quando o cluster for provisionado, deixe a guia do navegador (visão geral do cluster) aberta e disponível para posterior. No entanto, você pode avançar para os próximos passos..
Crie um perfil confiável.
- Em uma nova guia do navegador (Perfil confiável do IAM), use a navegação superior Gerenciar > Acesso (IAM), em seguida, Perfis confiáveis à esquerda para obter a visão geral de perfis confiáveis. Em seguida, crie um novo perfil confiável.
- Use TPwithCR como Nome e digite uma Descrição curta, por exemplo,
Test trusted profile with compute resource. Posteriormente, clique em Continuar. - Na segunda guia do formulário em Selecionar tipo de entidade confiável, selecione Recursos de cálculo e um diálogo Criar relacionamento confiável aparece. Lá, escolha Kubernetes como Tipo de serviço de cálculo..
- Em seguida, é possível decidir entre todos os recursos de serviços ou recursos específicos.
- Clique em Recursos específicos e o próximo campo de formulário aparece.
- Em Inserir ou selecionar uma instância, clique em Incluir recurso. Em seguida, no campo Permitir acesso a, selecione o Kubernetes mycluster-tpcr
- Em seguida, insira tptest como valor para Namespace. Deixe o campo para Conta de serviço como está para seguir com o padrão.
- Conclua clicando em Continue.
- Em seguida, clique em Política de acesso Na lista de serviços, selecione Todos os serviços ativados pelo Identity and Access e clique em Avançar. Acesse Todos os recursos, clique em Avançar novamente, selecione Visualizador e clique novamente em Avançar. Na seção Funções e ações, selecione Leitor para Acesso de serviço e Visualizador para Acesso de plataforma.. Quando terminar, clique em Avançar e, por fim, em Incluir
- Revise o Resumo no lado direito, em seguida, Crie o perfil confiável com o relacionamento confiável mostrado e os privilégios de acesso listados. Deixe a guia do navegador aberta para mais tarde
A utilização de um grupo de acesso para designar o acesso é uma melhor prática Por uma questão de simplicidade, optamos por designar acesso somente leitura através de uma política de acesso direto. A recomendação é criar um grupo de acesso com privilégios designados e, em seguida, tornar o perfil confiável um membro dele
Implementar o app
Com o cluster Kubernetes e o perfil confiável em vigor, é hora de implementar um app de teste simples O código-fonte para o aplicativo e a configuração estão no repositório GitHub trusted-profile-enterprise-security. Você não precisa dele para a implementação, mas pode estar interessado em como ele funciona, no entanto
-
Na guia do navegador visão geral do cluster, verifique se o cluster foi totalmente implementado Em uma configuração de um nó, o status de entrada pode informar um aviso. Talvez você queira atualizar o navegador e verificar se as outras marcas de seleção estão verdes. Se esse for o caso, clique em Kubernetes e uma nova guia do navegador será aberta (Kubernetes).
-
Na parte superior esquerda, localize o seletor de namespace e alterne para Todos os namespaces
-
Na parte superior direita, clique em + para criar um novo recurso Cole o conteúdo a seguir no formulário de texto Criar a Partir da Entrada
apiVersion: v1 kind: Namespace metadata: name: tptest labels: name: tptest --- apiVersion: v1 kind: Service metadata: name: trustedprofile-test namespace: tptest spec: ports: - port: 8080 targetPort: 8080 protocol: TCP type: ClusterIP selector: app: tptest --- apiVersion: apps/v1 kind: Deployment metadata: name: trustedprofile-test-deployment namespace: tptest spec: selector: matchLabels: app: tptest replicas: 1 template: metadata: labels: app: tptest spec: containers: - name: tptest-container image: icr.io/solution-tutorials/tutorial-trusted-profile-enterprise-security:v1.0.3 imagePullPolicy: Always ports: - containerPort: 8080 volumeMounts: - mountPath: /var/run/secrets/tokens name: sa-token serviceAccountName: default volumes: - name: sa-token projected: sources: - serviceAccountToken: path: sa-token expirationSeconds: 3600 audience: iamEm seguida, clique em Upload para criar os recursos para o app Ele inclui um novo Kubernetes tptest, uma implementação e um serviço com um pod
É possível localizar o código-fonte para a configuração do YAML acima em GitHub.
-
Na coluna de navegação esquerda, clique em Implementações para verificar o estado da nova implementação trustedprofile-test-deployment. Em seguida, clique em Pods na mesma coluna de navegação e observe um pod com um nome que comece com trustedprofile-test-deployment Quando estiver mostrando o status verde, vá para a próxima seção.
Teste o perfil confiável
Com o perfil confiável e o cluster Kubernetes com o app em execução no lugar, é hora de testar. Comece abrindo um shell baseado em navegador para executar comandos, uma guia para os registros do contêiner e outra para os registros IBM Cloud Logs.
-
Na guia atualmente ativa Kubernetes painel com os pods, clique no menu com três pontos à direita e clique com o botão direito em Exec nesse menu. Escolha abrir o link em uma nova guia (shell do contêiner). Ele abre um shell para o contêiner em execução Ainda na guia do navegador Kubernetes, clique no menu de três pontos novamente e, em seguida, com um clique esquerdo em Logs. No novo menu de três pontos, ative Atualizar automaticamente.
Por último, abra uma guia com o serviçoIBM Cloud Logs, selecione a guia Cloud Logs e clique no nome da instância que está recebendo os eventos de auditoria.
-
Na guia do navegador shell do contêiner, execute o comando a seguir no shell para testar o app:
curl -s localhost:8080O acima deve retornar um objeto JSON com codeversion e result. Deve-se ver alguma nova atividade de log na guia Kubernetes com os registros. Em seguida, na guia shell do contêiner, execute o seguinte comando:
curl -s localhost:8080/api/listresources_crn | jqO comando chama o app, tentando recuperar a lista de recursos na conta, mas nenhum nome de perfil confiável é fornecido O resultado deve ser um objeto JSON formatado com uma mensagem de erro
-
Repita o comando acima, mas agora especifique qual perfil confiável usar:
curl -s localhost:8080/api/listresources_crn?tpname=TPwithCR | jqAgora, o resultado deve ser um objeto JSON formatado com informações sobre os recursos em sua conta Para a capacidade de leitura, apenas os CRNs de recurso são retornadas Use
localhost:8080/api/listresourcespara obter os detalhes completos do objeto Você também pode querer tentar um nome de perfil confiável diferente e não existente e examinar a mensagem de erroQuando chamado, o app primeiro lê o token para o recurso de cálculo Em seguida, ele transforma o token em um token de acesso do IAM para o perfil confiável especificado Por último, ele chama a API do controlador de recurso do IBM Cloud para recuperar informações sobre instâncias de serviço. O resultado depende dos privilégios configurados do perfil confiável.. Se estiver interessado, examine o código-fonte do app
-
Mude para a guia do navegador IBM Cloud Logs e use a caixa de pesquisa na parte inferior para procurar o termo perfil. Essa deve ser a instância configurada como alvo de um evento de auditoria. It should return at least one line with
IAM Identity Service: login.computeresource-token TPwithCR.Open the info panelto expand the record to examine details, look for the iniciador section. Ele lista o perfil confiável que foi usado para a solicitação e informações no recurso de cálculo. O authName deve corresponder à sua implantação na guia do navegador do painel doKubernetes.
Details in the activity log -
Agora, visite a guia do navegador Kubernetes e verifique o registro do contêiner. O app imprime detalhes sobre o token de acesso JWT que ele usa para autenticar para listar os recursos Examine os pares chave / valor individuais, incluindo sub (assunto) duas vezes. Eles estão relacionados ao perfil confiável e ao recurso de cálculo.
-
Alterne para a guia do navegador IAM trusted profile com a configuração para TPwithCR. No formulário, clique na guia Acesso e, em seguida, no menu de três pontos para Todos os serviços ativados pelo Identity and Access, selecione Editar.. Agora, ele deve mostrar Editar política para TPwithCR. Clique em Editar para Recursos e selecione Recursos específicos. Selecione Região como Tipo de atributo e como Valor; por exemplo, Frankfurt Conclua pressionando Salvar..
-
Volte para a guia do navegador shell do contêiner e execute este comando novamente para listar recursos:
curl -s localhost:8080/api/listresources?tpname=TPwithCR | jqO resultado pode ser diferente de acima, dependendo de onde você implemenou outros recursos em sua conta. Revisite os registrosIBM Cloud Logs e as guias do navegador do painel doKubernetes para ver se há novas atividades de registro.
-
Você pode desejar voltar para a etapa 6 e editar a política de acesso novamente e, em seguida, testar novamente com a etapa 7 Algumas ideias para editar a política de acesso seriam incluir regiões ou restringir a serviços específicos em vez de Todos os serviços ativados pelo Identity and Access.
Remover recursos
Ao concluir o teste do cenário acima com perfis confiáveis e recursos de cálculo, é possível remover os recursos seguindo estas etapas:
- Para excluir o cluster Kubernetes, clique em Ações na parte superior direita na guia do navegador visão geral do cluster, em seguida, em Excluir cluster.
- Na guia Perfis confiáveis do IAM com o perfil confiável TPwithCR, clique em Actions e Remove para excluir o perfil confiável.
Dependendo do recurso, ele não é excluído imediatamente, mas retido (por padrão por 7 dias). É possível recuperar o recurso excluindo-o permanentemente ou restaurando-o dentro do período de retenção. Consulte este documento sobre como usar a recuperação de recurso.