Compartilhamento de recursos através de contas

Este tutorial pode incorrer em custos. Use o Estimador de custos para gerar uma estimativa do custo baseada em seu uso projetado.

Este tutorial caminha você através de diferentes opções sobre como compartilhar recursos baseados em nuvem através de contas.

Um número não contável de serviços são oferecidos na internet. Você provavelmente possui contas em muitos prestadores de serviço. Para utilizar esses serviços, normalmente você os acessa com uma combinação de identidade de usuário (ID) e senha ou fornecendo alguma forma de chave API ou token de acesso, muitas vezes combinado com níveis adicionais (fatores) de autenticação. Ao construir aplicações nativas de nuvem com uma arquitetura baseada em microserviços, os componentes individuais podem usar as mesmas técnicas para acessar um ao outro para colaboração. O ideal é que o setup possa ser automatizado, e o acesso furado a um mínimo necessário para o aumento da segurança.

Com um foco em serviços em nuvem, ele pode ser chamado de conector, ligação de serviço ou autorização de serviço para serviço. Tal ligação de serviço automatizada fornece uma integração mais rígida e geralmente combina autenticação e autorização em uma configuração única e automatizada. Geralmente, a ligação de serviço requer que os serviços estejam na mesma conta de nuvem. Esse agrupamento é lógico e simplifica o desenvolvimento e a operação. Mas, às vezes, os requisitos organizacionais, e especialmente de segurança-e de conformidade-poderiam significar separar alguns serviços e mantê-los em contas centrais. Assim, os aplicativos têm que compartilhar recursos através de contas. O compartilhamento pode ser entre contas em um IBM Cloud Ambiente corporativo ou sem uma organização corporativa formal.

Este tutorial passeia por você através de casos de uso típicos e benefícios de compartilhamento de recursos em nuvem através de contas. Você aprenderá como implementar esses cenários de compartilhamento comum, seja manualmente ou totalmente automatizado com Terraform.

Objetivos

  • Entenda os benefícios do compartilhamento de recursos através de contas
  • Conheça diferentes técnicas para compartilhar recursos através de contas

Visão geral do compartilhamento de

Não é incomum encontrar vários aplicativos de acesso e usar o mesmo recurso ou partes dele. Um exemplo é quando os aplicativos e ambientes de computação têm que viver na mesma rede corporativa. Outro cenário é que os logs de segurança são coletados no armazenamento central. Em uma arquitetura de microsserviços, ela requer que a gente configure os serviços para acessar e utilizar recursos externos. Por sua vez, os recursos compartilhados devem autorizar o acesso, e a rede entre eles está configurada para suportar tal colaboração, mas não mais.

Alguns casos de uso típico de compartilhamento de recursos são:

  • Gestão central da infraestrutura relacionada à segurança. Monitore a segurança a partir de uma conta dedicada, e agrega logs de segurança em um único lugar. Gerenciar todas as chaves de criptografia em sistemas de gerenciamento de chaves centrais (KMS).
  • Coordenação de endereços de rede e sub-redes. Aplicativos e ambientes de cálculo precisam se encaixar na mesma rede e requerer o compartilhamento de intervalos de endereços e nomes de domínio.
  • Gerenciamento central de recursos para recuperação de desastres, incluindo serviços de backup como IBM Cloud Backup for Classic. Os aplicativos e seus serviços podem ser projetados para alta disponibilidade, mas recursos adicionais organizados centralmente podem estar disponíveis para recuar para no pior dos casos. Isso inclui a realização de múltiplas cópias de recursos disponíveis no mundo todo, por ex., armazenados em replicados Object Storage buckets.
  • Controle custos com o compartilhamento de serviços mais caros sempre que possível. Nem todo projeto de desenvolvimento precisa ter todos os serviços implementados como instâncias dedicadas. Muitas vezes, é suficiente para compartilhar instâncias de serviço-dentro de contas ou em frente. Mesmo para ambientes de produção, as instâncias de serviço podem ser compartilhadas dependendo de seu fator de custo / valor e viabilidade técnica. Isso pode ser organizado restringindo os serviços disponíveis em uma conta utilizando-se catálogos particulares e restringindo o catálogo público, então fornecendo centralmente instâncias de serviços restritos.
  • Gerenciamento central de recursos em um nível corporativo ou para uma unidade de negócios. Isso pode ser ativos necessários para modelos de branding ou gerenciados centralmente, imagens de base (máquinas virtuais, contêineres) e muito mais. Novamente, os catálogos privados e o Container Registry são serviços típicos.
  • Torem recursos escassos disponíveis para mais usuários. Às vezes, um tipo de recurso só está disponível em quantidade limitada. Ao compartilhar, mais aplicativos podem se beneficiar dele. Isso pode exigir limitador de taxa.

Compartilhamento de recursos de segurança

Muitas vezes, a segurança é gerenciada em um nível corporativo com regras de empresa em vigor. Por isso, a aplicação é gerida centralmente, também. Isso ainda é verdade com as cargas de trabalho se movimentando para ambientes em nuvem. O compartilhamento de recursos está na base da segurança de gerenciamento centralmente, bem como na avaliação e na aplicação da conformidade.

Compartilhamento de recursos relacionados à segurança
Sharing de recursos relacionados à segurança

O diagrama acima mostra os seguintes cenários:

  1. Instâncias de Object Storage e Databases for MongoDB em Conta A e Conta B utilizam chaves de criptografia gerenciadas na Conta Principal em Key Protect.
  2. Security and Compliance Center na Conta Principal governa os recursos em todas as três contas (veja linhas pretas acima).
  3. As instâncias de IBM Cloud Activity Tracker Event Routing na Conta A e na Conta B direcionam os registros de auditoria para IBM Cloud Logs na Conta principal (veja as linhas azuis acima). O IBM Cloud Logs é configurado para manter os registros de auditoria para atender aos requisitos corporativos e de análise.

O compartilhamento pode ser entre contas em um ambiente IBM Cloud Enterprise ou sem uma organização corporativa formal.

gerenciamento de chave de criptografia

Em quase todos os ambientes, os dados são armazenados criptografados. Por padrão, a criptografia é provedor-gerenciado o que significa que a chave de criptografia é fornecida e mantida pelo provedor de nuvem. Para aumentar a segurança, os clientes podem usar suas próprias chaves, utilizando um serviço de gerenciamento de chaves (KMS). Em IBM Cloud, o KMS pode ser localizado no mesmo ou em outra conta como o serviço usando uma chave de criptografia. Isso permite gerenciar centralmente chaves de criptografia para todas as contas corporativas. Dessa forma, é possível monitorar o uso e invalidar chaves de criptografia quando necessário.

Key Protect e Hyper Protect Crypto Services suportam este padrão de implementação. Você pode configurar o acesso a uma instância inteira ou, para segurança reforçada, a individuais anéis chave-uma coleção de chaves. Hyper Protect Crypto Services com Unified Key Orchestrator mesmo possibilita orquestrar chaves de criptografia em lojas de chaves em diferentes cloud providers.

Security and Compliance Center

O Security and Compliance Center apresenta a funcionalidade do Gerenciamento de Posturas. Ele ajuda a monitorar ambientes implementados para a segurança e avaliá-los contra metas de conformidade. Em uma empresa, é possível definir escopos para monitorar e avaliar várias contas ou grupos de contas de uma instância central.

IBM Cloud Logs

IBM® Cloud Logs permite gerenciar logs do sistema operacional, logs de aplicativos, logs de plataforma e logs de auditoria, além de fornecer recursos de pesquisa e filtragem. O IBM® Cloud Logs Routing é usado para rotear os logs da plataforma para uma instância IBM Cloud Logs ou outras instâncias compatíveis. Consolidar para análise em um contexto maior, melhorando assim os insights (de segurança). Configure para persistir em seus próprios Object Storage buckets para armazenamento de longo prazo. Consulte sobre o Roteamento de registros que descreve os locatários e os alvos específicos da conta.

IBM Cloud Activity Tracker Event Routing

Todos os serviços IBM Cloud produzem eventos para ações relacionadas à segurança. Ao utilizar IBM Cloud Activity Tracker Event Routing, os registros de segurança podem ser centralizados em uma ou poucas instâncias de IBM Cloud Logs com armazenamento de longo prazo em Object Storage buckets que você gerencia. Ao agregar todos os registros em um local, os eventos de segurança podem ser facilmente correlacionados e, com isso, aumentar insights sobre incidentes ou até mesmo permitir uma detecção precoce.

Compartilhamento de recursos de rede

Projetar e desenvolver apps nativos em nuvem em um contexto corporativo muitas vezes envolve a coordenação em relação a recursos de rede como faixas de endereço e sub-redes, nomes de domínio e roteamento do tráfego. As diferentes contas e seus aplicativos e ambientes de cálculo precisam se encaixar na rede e na sua estrutura. Isso requer compartilhamento de recursos de rede.

Compartilhamento de recursos de rede
Compartilhamento de recursos de rede

  1. O serviço Transit Gateway é usado para interconectar ambientes VPC e infraestrutura clássica através das três contas.
  2. Cada conta possui uma instância DNS Services para gerenciar nomes de domínio privado. As instâncias estão conectadas para compartilhar zonas DNS.

DNS Services

Você pode usar DNS Services para resolver endereços privados (nomes de domínio) a partir de recursos implementados em IBM Cloud. Os nomes de domínio não podem ser resolvidos a partir da internet pública. Uma zona DNS é uma coleção de nomes de domínio e consiste em registros de recursos DNS. As zonas de DNS e seus registros podem ser usados por outras contas, estabelecendo assim zonas vinculadas.

Transit Gateway

O serviço Transit Gateway permite estabelecer conectividade entre ambientes IBM Cloud, incluindo infraestrutura clássica e Virtual Private Clouds (VPC). Você pode até conectar ambientes hospedados em contas diferentes. Os dados que fluem por meio do Transit Gateway ficam dentro da rede privada IBM Cloud e não são expostos à internet pública.

Implementar o compartilhamento de recursos

Como dito na introdução, é prática comum o acesso a serviços fora da conta de um (cloud). Dependendo do nível de integração, existem diferentes formas de autorizar o acesso ao serviço e implementar a autenticação. Essas opções disponíveis são discutidas abaixo.

Autenticação com senhas ou chaves API

Muitos recursos permitem a geração de várias credenciais Usualmente, eles consistem em uma combinação de identidade de usuário (ID) e senha ou apenas uma chave API única. Muitas vezes, é possível especificar o conjunto de privilégios para as credenciais, por ex., para permitir o acesso ou escopo de leitura o que pode ser acessado, modificado ou mesmo criado e excluído. As credenciais são então importadas ou configuradas para um serviço ou aplicativo dependente para acessar esse recurso. Ainda que o acesso seja possível, configurado requer algum trabalho (manual) e no geral eles são apenas fracamente acoplados ou integrados.

Dentro do IBM Cloud, alguns serviços de computação incluindo Code Engine e Kubernetes Service permitem a criação e configuração automática de credenciais, a chamada ligação de serviço.

Autorização de serviço para serviço

Uma abordagem integrada mais rígida para um serviço acessando outro é para estabelecer autorizações de serviço para serviço(autorizaçãos2s). Você cria uma política do IBM Cloud Identity and Access Management (IAM) que autoriza um serviço de origem a acessar um serviço de destino. Como a autenticação é realizada através da identificação do serviço de origem solicitante de acesso, não são necessárias credenciais na forma de senhas ou chaves API. Tanto a autenticação quanto a autorização são manipuladas automaticamente por causa da política IAM criada.

Autorizações de contas cruzadas

O IAM suporta estabelecer autorizações de serviço para serviço entre um serviço de origem em outra conta IBM Cloud e um alvo na atual. Portanto, ele permite o compartilhamento de recursos através de contas, criando uma política de autorização do IAM. Tais políticas podem ser criadas de muitas maneiras, incluindo no console do navegador como mostrado abaixo, utilizando a CLI ou executando o código Terraform.

Nos exemplos a seguir, uma instância específica Object Storage na instância de origem é concedida a função Reader para aquela instância identificada Key Protect na conta corrente.

Conceder uma autorização de serviço-a-serviço
Conceder uma autorização de serviço a serviço

A seguir mostra o código Terraform para criar um recurso com a mesma política de autorização do IAM:

resource "ibm_iam_authorization_policy" "cross_account_policy" {
  source_service_account      = data.ibm_iam_account_settings.account_a_settings.account_id
  source_service_name         = "cloud-object-storage"
  source_resource_instance_id = data.ibm_resource_instance.cos_resource_instance.guid

  target_service_name         = "kms"
  target_resource_instance_id = data.ibm_resource_instance.kms_resource_instance.guid

  roles                       = ["Reader"]
  description                 = "read access on Key Protect in Main Account for Account A"
}

A mesma política de autorização pode ser criada usando o comando IBM Cloud CLI com o comando iam service-policy-create:

ibmcloud iam authorization-policy-create cloud-object-storage kms Reader --source-service-account source_account_id --source-service-instance-id cos_instance_id --target-service-instance-id kms_instance_id

O console, o provedor Terraform e o CLI todos usam a API de gerenciamento de políticas IAM para criar a política.

Como uma próxima etapa, com a política de autorização em vigor, um balde de armazenamento criptografado usando uma chave raiz Key Protect poderá então ser criado. O seguinte mostra o código do Terraform utilizando o recurso ibm_cos_bucket. O atributo key_protect mantém o CRN da chave raiz.

resource "ibm_cos_bucket" "cos_bucket" {
  bucket_name          = "cos-bucket"
  resource_instance_id = data.ibm_resource_instance.cos_resource_instance.id
  region_location      = var.region
  key_protect          = data.ibm_kms_key.central_kms_root_key.id
  storage_class        = "smart"
}

Você pode encontrar mais exemplos no repositório GitHub cross-account-resource-sharing.

Autorizações típicas de serviço para serviço

Uma dependência em um serviço de gerenciamento de chaves (KMS) como Key Protect e Hyper Protect Crypto Services é típico para soluções baseadas em nuvem. Uma instância do KMS mantém as chaves raiz para criptografia gerenciada pelo cliente. A maioria dos serviços suporta chaves de criptografia controladas pelo cliente. Em vez de cloud-object-storage (Object Storage) no exemplo acima, muitos outros serviços podem usar uma instância de KMS compartilhada através de contas.

Outros serviços típicos (de destino) para autorização de serviço a serviço e os candidatos para compartilhamento de recursos incluem:

  • Object Storage: Vários serviços requerem ou são capazes de armazenar dados e arquivos de log em um balde de armazenamento. Isso inclui o arquivamento de logs de acesso e de dados de monitoramento Outros serviços precisam acessar depósitos para executar análise de dados. E mais uma categoria de serviços precisa de acesso para assinar notificações de mudança para acionar a execução de ações.
  • Event Notifications: Para empurrar para fora informações sobre eventos para assinantes, instâncias de serviço precisam acessar uma instância Event Notifications.
  • Secrets Manager: Este serviço armazena e fornece a outros serviços chaves de API IAM, certificados SSL/TLS e outros segredos. Daí, os serviços dependentes (fonte) precisam acessar Secrets Manager.
  • Cloud Internet Services (CIS): Ela gerencia nomes de domínio e outros dados de rede e, portanto, pode ser usada para, por exemplo, validação de certificado.
  • IBM Cloud Logs Routing e IBM Cloud Activity Tracker Event Routing: precisa de acesso de serviço a alvos como IBM Cloud Logs.

Observe que a lista acima não está completa.

Resumo

Acessar recursos em contas diferentes, até mesmo compartilhar recursos é prática comum. Há vários casos de uso em que os usuários se beneficiam do compartilhamento de recursos. Eles foram discutidos na visão geral. Uma combinação de identidade de usuário e senha ou uma chave API para acessar um recurso muitas vezes serve como autenticação. O acesso pode ser escoado para um conjunto de privilégios, por ex., apenas permitindo o acesso de leitura ou algumas outras ações restritas. Às vezes, esses tipos de credenciais podem ser criadas e gerenciadas pelo recurso de acesso como um aplicativo ou ambiente de cálculo ("ligação de serviço"). Uma integração ainda mais apertada o que não requer credenciais é o conceito de IBM Cloud autorização de serviço para serviço. O recurso de acesso (origem) e o recurso acessado (destino) são identificados por suas propriedades (autenticação) e uma função de acesso é atribuída (autorização). Tal relacionamento pode ser mesmo estabelecido através de limites de contas. Isso permite um simples de configurar, mas ainda o compartilhamento de recursos de contas cruzadas seguras.

Resumo de recursos de compartilhamento e reutilização entre serviços
Serviço Capacidade
Segurança e Observabilidade
Security and Compliance Center Varrer múltiplas contas ou grupos de contas em uma empresa
IBM Cloud Activity Tracker Event Routing Encaminhe seus eventos IBM Cloud Activity Tracker Event Routing para outra conta e consolide os dados do evento
IBM Cloud Logs Routing Encaminhe os registros para um destino como IBM Cloud Logs ou Event Streams
Key Protect Use autorizações de serviço para serviço para compartilhar chaves de criptografia. Organizar as chaves em conjuntos de chaves para um gerenciamento mais simples e segurança aprimorado
Hyper Protect Crypto Services Use autorizações de serviço para serviço para compartilhar chaves de criptografia. Organizar as chaves em conjuntos de chaves para um gerenciamento mais simples e segurança aprimorado
Hyper Protect Crypto Services com Unified Key Orchestrator Conecte sua instância do Hyper Protect Crypto Services a keystores no IBM Cloud e nuvens de terceiros.
Secrets Manager Integrações para Secrets Manager
Rede
Transit Gateway Conectar entre contas com o Transit Gateway
DNS Services Compartilhando zonas DNS entre contas no DNS Services
Configurações da conta
Catálogo Restringindo serviços disponíveis em uma conta usando catálogos privados e restringindo o catálogo público
Bancos de dados
IBM Cloudant Replicação de dados entre contas
Cloud Databases Restaurar backups entre contas

Você pode encontrar exemplos de código sobre como configurar o compartilhamento de recursos para alguns desses serviços no repositório GitHub cross-account-resource-sharing.