Protegendo os Serviços de Infraestrutura Privada (VPC) de Cloud Privada com restrições baseadas em contexto

As restrições baseadas no contexto permitem que os proprietários e administradores de contas definam e apliquem restrições de acesso aos recursos d IBM Cloud®, com base no contexto das solicitações de acesso. O acesso aos Serviços de Infraestrutura VPC pode ser controlado com restrições baseadas no contexto e políticas de gerenciamento de identidade e acesso (IAM).

Essas restrições funcionam com as políticas tradicionais do IAM, que são baseadas na identidade, para fornecer uma camada extra de proteção. Ao contrário das políticas do IAM, as restrições baseadas no contexto não atribuem acesso. As restrições baseadas em contexto verificam se uma solicitação de acesso provém de um contexto permitido que você configurou. Uma vez que o acesso do IAM e as restrições baseadas no contexto impõem o acesso, as restrições baseadas no contexto oferecem proteção mesmo em face de credenciais comprometidas ou mal gerenciadas. Para obter mais informações, consulte Quais são as restrições baseadas em contexto.

Um usuário deve ter a função de administrador nos Serviços de Infraestrutura VPC para criar, atualizar ou excluir regras direcionadas aos Serviços de Infraestrutura VPC. Um usuário deve ter a função de Editor ou Administrador no serviço de restrições baseadas em contexto para criar, atualizar ou excluir zonas de rede. Um usuário com a função Visualizador no serviço de restrições baseadas em contexto pode adicionar zonas de rede apenas a uma regra.

O serviço de restrição baseado em contexto gera registros de auditoria sempre que uma política baseada em contexto é aplicada. Para obter mais informações, consulte Monitorando restrições baseadas em contexto.

Para começar a proteger seus serviços de infraestrutura VPC com restrições baseadas em contexto, consulte o tutorial sobre como aproveitar as restrições baseadas em contexto para proteger seus recursos.

Como os Serviços de Infraestrutura de VPC se integram com restrições baseadas em contexto

Os Serviços de Infraestrutura VPC são um serviço composto por vários serviços secundários. Restrições baseadas no contexto podem ser criadas para o IBM Cloud VPC ou qualquer um de seus serviços filhos; por exemplo, sub-redes, instâncias de servidor virtual e volumes Block Storage.

Consulte a seção de criação de regras para obter detalhes sobre como você pode criar regras com os atributos necessários para cada serviço.

Criando zonas de rede

Uma zona de rede representa uma lista de permissões de endereços IP onde uma solicitação de acesso é criada. Ele define um conjunto de um ou mais locais de rede que são especificados pelos atributos a seguir:

  • Endereços IP, que incluem endereços individuais, intervalos ou sub-redes
  • VPCs
  • Referências de serviço, que permitem o acesso a partir de outros serviços do IBM Cloud®

Referências de serviço

Uma referência de serviço, definida como parte de uma zona de rede, permite que o serviço especificado se comunique com os recursos ou APIs restritos que são alvo de uma política de restrição baseada em contexto. A tabela a seguir contém as referências de serviço que precisam ser incluídas quando restrições baseadas em contexto são usadas no contexto dos Serviços de Infraestrutura VPC. Você também pode consultar as autorizações IAM de serviço para serviço em sua conta ao deliberar quais referências de serviço adicionar em sua zona de rede. Você pode encontrar a autorização de serviço para serviço em sua conta acessando Gerenciar -> Acesso (IAM) e selecionando a guia Autorizações.

Referências de serviço necessárias para restrições baseadas em contexto
Serviço com restrições baseadas em contexto Serviço impactado Referências de serviço necessárias na zona de rede
Cloud Object Storage Serviços de infraestrutura VPC (is)
Key Protect Cloud Block Storage (server-protect),
File Storage for VPC (is.share)
Hyper Protect Crypto Service Cloud Block Storage (server-protect),
File Storage for VPC (is.share)
Instância de servidor virtual Serviços de infraestrutura VPC (is)
Vários Serviços de Infraestrutura VPC- Block Storage Volume, Grupos de Segurança, Subnets IBM Kubernetes Service (containers-kubernetes)
Secrets Manager Serviços de infraestrutura VPC (is)

Criação de zonas de rede usando a API

Você pode criar zonas de rede usando o comando create-zone. Para obter mais informações, consulte os Docs da API.

O serviceRef atributo para os Serviços de Infraestrutura VPC é is. Cloud Block Storage é server-protect, e File Storage for VPC é is.share.

{
  "name": "Example zone 1",
  "description": "",
  "addresses": [
    {
      "type": "serviceRef",
      "ref": {
        "service_name": "is"
      }
    }
  ]
}
{
  "name": "Example zone 1",
  "description": "",
  "addresses": [
    {
      "type": "serviceRef",
      "ref": {
        "service_name": "server-protect"
      }
    }
  ]
}

Criação de zonas de rede usando a CLI

  1. Para criar zonas de rede a partir da CLI, instale o plug-in CBR CLI.

  2. Use o cbr-zone-create comando para adicionar localizações de rede, VPCs e referências de serviço às zonas de rede. Para obter mais informações, consulte a referência da CLI do CBR.

    Para encontrar uma lista de destinos de referência de serviço disponíveis, execute o ibmcloud cbr service-ref-targetscomando. O preço service_name dos Serviços de Infraestrutura VPC é is. Cloud Block Storage é server-protect, e File Storage for VPC é is.share.

    O comando de exemplo a seguir adiciona o is serviço, conhecido como Serviços de infraestrutura VPC no console do IBM Cloud®, a uma zona de rede.

    ibmcloud cbr zone-create --name example-zone-1 --description "Example zone 1" --service-ref service_name=is
    

    O comando de exemplo a seguir adiciona o server-protect serviço, denominado* Cloud Block Storage* em IBM Cloud® console, para uma zona de rede.

    ibmcloud cbr zone-create --name example-zone-1 --description "Example zone 1" --service-ref service_name=server-protect
    

Criando zonas de rede a partir do console

  1. Determine quais recursos você deseja adicionar ao seu allowlist.
  2. Verifique a seção de referências de serviço para ver se você precisa adicionar alguma referência de serviço à sua zona de rede.
  3. Siga estas etapas para criar restrições baseadas em contexto no console.

Criando regras

Nos Serviços de Infraestrutura VPC, cada serviço filho precisa de determinados atributos em uma regra baseada em contexto.

Ao usar a API, o Terraform ou a CLI IBM Cloud para criar, atualizar ou excluir restrições baseadas no contexto IBM Cloud, você pode especificar o recurso de infraestrutura VPC de destino usando atributos de recurso.

Veja atributos de recursos de VPC para os atributos de recursos que correspondem com recursos de VPC individuais.

Você pode selecionar um recurso digitando o ID do objeto. Alternativamente, você pode usar o curinga * para selecionar todos os recursos aplicáveis. Por exemplo, o atributo vpcId:* configura as restrições baseadas em contexto para aplicar em todos os VPCs na conta. Também é possível especificar a qual grupo de recursos a política é aplicada no comando.

Criando regras usando a API

Revise os seguintes pedidos de exemplo para criar regras. Para obter mais informações sobre o v1/rules API, veja os docs da API.

Depois de criar uma regra, ela pode levar até 10 minutes minutos antes de atualizar essa regra.

O exemplo de carga útil a seguir cria uma regra que protege as instâncias do servidor virtual e permite acesso somente da zona de rede especificada por meio de um ponto de extremidade privado.

{
  "contexts": [
    {
      "attributes": [
        {
          "name": "endpointType",
          "value": "private"
        },
        {
          "name": "networkZoneId",
          "value": "45ec64065b7c2bf84b3edec803335111"
        }
      ]
    }
  ],
  "resources": [
    {
      "attributes": [
        {
          "name": "resourceGroupId",
          "value": "1171749e3a8545069d04e6fca1ded18f"
        },
        {
          "name": "serviceName",
          "value": "is"
        },
        {
          "name": "instanceId",
          "value": "*"
        }
      ]
    }
  ]
}

Criação de regras usando a CLI

  1. Para criar regras a partir da CLI, instale o plug-in da CLI do CBR.
  2. Use o comando ibmcloud cbr rule-create para criar regras de CBR. Para obter mais informações, consulte a referência CLI do CBR .

Os exemplos a seguir são regras de aplicação. Você pode fazê-los relatar-apenas adicionando --enforcement-mode report.

O comando CLI exemplo a seguir cria uma regra de restrição baseada em contexto para todas as instâncias do servidor virtual na conta corrente:

ibmcloud cbr rule-create  --zone-id a7eeb5dd8e6bdce670eba1afce18e37f --description "Test CBR for VSIs" --service-name is --resource-attributes "instanceId=*"

O comando CLI exemplo a seguir cria uma regra de restrição baseada em contexto para um volume de armazenamento de bloco específico na conta corrente:

ibmcloud cbr rule-create --zone-id a7eeb5dd8e6bdce670eba1afce18e37f --description "Test CBR for volume" --service-name is --resource-attributes "volumeId=UUID_OF_THE_VOLUME"

O comando CLI exemplo a seguir cria uma regra de restrição baseada em contexto para todas as instâncias do servidor virtual na conta corrente e restringe o acesso a terminais privados:

ibmcloud cbr rule-create --context-attributes 'endpointType=private' --zone-id a7eeb5dd8e6bdce670eba1afce18e37f --description "Test CBR for VSIs" --service-name is --resource-attributes "instanceId=*"

O comando CLI exemplo a seguir cria uma regra de restrição baseada em contexto para todas as instâncias do servidor virtual no grupo de recursos e restringe o acesso a terminais privados:

ibmcloud cbr rule-create --context-attributes 'endpointType=private' --zone-id a7eeb5dd8e6bdce670eba1afce18e37f --description "Test CBR for VSIs" --service-name is --resource-attributes "instanceId=*" --resource-group-id 1171749e3a8545069d04e6fca1ded18f

Criando regras no console

  1. Vá em Gerenciar > restrições baseadas em contexto no console IBM Cloud®.

  2. Selecione “Regras ” e clique em “Criar ”.

  3. Selecione Serviços de Infraestrutura VPC e clique em Avançar.

  4. Defina o escopo da regra como “Todos os recursos ” ou “Recursos específicos ”. Para obter mais informações, consulte Proteção dos recursos dos serviços de infraestrutura da VPC. Clique em Continuar.

  5. Defina os tipos de terminais permitidos.

    • Mantenha o conjunto de alternância para Não para permitir todos os tipos de terminais.
    • Configure a alternância para Sim para permitir apenas tipos de terminais específicos, então escolha a partir da lista.
  6. Selecione uma ou mais zonas de rede existentes ou crie uma zona de rede clicando em Criar.

    Os contextos definem o local a partir do qual seus recursos podem ser acessados, ligando efetivamente a sua zona de rede à sua regra.

  7. Clique em “Adicionar” para incluir sua configuração no resumo. Clique em Avançar.

  8. Nomeia sua regra e selecione como você deseja impingá-lo. Em seguida, clique em Criar.

Monitoramento de restrições baseadas em contexto em Serviços de Infraestrutura VPC

O serviço de restrição baseado em contexto gera registros de auditoria sempre que uma política baseada em contexto é aplicada. O serviço de restrição baseado em contexto gera registros de auditoria sempre que uma política baseada em contexto é aplicada. Para mais informações, consulte Monitorando restrições baseadas em contexto.

Falhas de resolução de problemas devido a restrições baseadas em contexto

403 Mensagens de erro não autorizadas

Quando uma solicitação é negada devido a permissões de acesso inadequadas ou quando a solicitação se origina fora da zona de rede definida na regra de restrições baseadas no contexto, a resposta de erro é semelhante aos exemplos a seguir.

Erro 403 não autorizado na resposta da CLI

Error code: not_authorized and
Error message: the provided token is not authorized
Trace ID: b266a31c-b359-4ecb-8b81-a27c1b2cdb7b

Erro 403 não autorizado no console IBM Cloud

reference_id b266a31c-b359-4ecb-8b81-a27c1b2cdb7b
code not_authorized
message the provided token is not authorized

Erro 403 não autorizado na resposta da API

"code":"not_authorized",
"message":"the provided token is not authorized to list floating-ips in this account"
"trace":"b266a31c-b359-4ecb-8b81-a27c1b2cdb7b"

Localização de eventos de restrição baseados em contexto

Você pode usar o valor de Trace ID ou Reference ID para pesquisar em sua instância IBM Cloud Logs os eventos que são gerados pelo serviço de restrições baseadas em contexto. A seção requestData.environment mostra o endereço IP de origem da chamada e outras informações que podem ser usadas para verificar por que a autorização foi negada. Os campos requestData.action e requestData.resource podem ser usados determinam qual recurso subjacente foi negado o acesso.

O exemplo a seguir é um evento de restrição baseado no contexto. Alguns campos foram removidos para melhorar a legibilidade.

{
  "level": "critical",
  "action": "context-based-restrictions.policy.eval",
  "message": "Context based restriction rendered a deny",
  "severity": "critical",
  "correlationId": "TXID-b266a31c-b359-4ecb-8b81-a27c1b2cdb7b-df2f912c-80a1-422c-8b17-6092651fea00",
  "requestData": {
    "action": "is.vpc.vpc.create",
    "reqOrder": 0,
    "environment": {
      "attributes": {
        "ipAddress": "192.168.0.1",
        "networkType": "public"
      }
    },
    "resource": {
      "attributes": {
        "accountId": "67db3d7ff3f34220b40e2d81480754c9",
        "resource": "NEWRESOURCE",
        "vpcId": "NEWRESOURCE",
        "resourceGroupId": "d272ce832535498e9142b557ff8638ed",
        "region": "au-syd",
        "serviceName": "is",
        "resourceType": "vpc"
      }
    },
    "subject": {
      "attributes": {
        "scope": "ibm openid",
        "token.account.bss": "67db3d7ff3f34220b40e2d81480754c9",
        "id": "IBMid-550009FB7N"
      }
    }
  },
  "responseData": {
    "decision": "Deny",
    "isEnforced": true
  }
}

Em seguida, você pode usar a mesma ID de rastreamento ou ID de referência para examinar o evento específico do serviço de infraestrutura de VPC em sua instância IBM Cloud Logs.

{
  "action": "is.vpc.vpc.create",
  "outcome": "failure",
  "message": "Virtual Private Cloud: create vpc -failure",
  "severity": "critical",
  "dataEvent": false,
  "logSourceCRN": "crn:v1:bluemix:public:is:au-syd:a/67db3d7ff3f34220b40e2d81480754c9::vpc:",
  "saveServiceCopy": true,
  "initiator": {
    "id": "IBMid-ABCDEFGH",
    "typeURI": "service/security/account/user",
    "name": "test@ibm.com",
    "authnName": "test",
    "authnId": "IBMid-ABCDEFGH",
    "host": {
      "address": "192.168.0.1",
      "addressType": "IPv4"
    },
    "credential": {
      "type": "token"
    }
  },
  "target": {
    "id": "crn:v1:bluemix:public:is:au-syd:a/67db3d7ff3f34220b40e2d81480754c9::vpc:",
    "typeURI": "is.vpc/vpc",
    "name": "",
    "resourceGroupId": "crn:v1:bluemix:public:resource-controller::a/67db3d7ff3f34220b40e2d81480754c9::resource-group:d272ce832535498e9142b557ff8638ed"
  },
  "reason": {
    "reasonCode": 403,
    "reasonType": "Forbidden",
    "reasonForFailure": "Your access token is invalid or does not have the necessary permissions to perform this task"
  },
  "requestData": {
    "generation": "2",
    "requestId": "b266a31c-b359-4ecb-8b81-a27c1b2cdb7b"
  },
  "responseData": {
    "responseURI": "/v1/vpcs/"
  }
}

Você também pode pesquisar eventos usando um identificador de recursos. Um ID de recurso é um UUID e é o último identificador em um CRN. Veja o exemplo a seguir

crn:v1:bluemix:public:is:au-syd:a/67db3d7ff3f34220b40e2d81480754c9::vpc:<resourceID>

Os pedidos de recursos de provisionamento não contêm um ID de recurso.

Se você não encontrar um evento de restrição baseado no contexto no IBM Cloud Logs, é possível que o acesso tenha sido negado devido às políticas de acesso do IAM. Para obter mais informações, consulte o guia de introdução ao VPC IAM.

Impacto do avião de dados VPN do cliente para site com restrições baseadas em contexto

Se você habilitar a ID do usuário e a senha na configuração de autenticação do cliente para uma VPN cliente-para-site e criar regras baseadas em contexto nos recursos da VPC, a conexão do cliente com a VPN será afetada pelas restrições baseadas em contexto. Se o IP remoto do cliente VPN não estiver na Zona de Rede, a conexão com o servidor VPN retornará um erro Auth Failed.

Depois que o cliente VPN se conecta ao servidor VPN, os pedidos para o terminal VPE ou o Cloud Service Endpoint (CSE) são controlados com restrições baseadas em contexto. Também, o IP de origem dos pedidos é o VPC endereços de origem do terminal de serviço em nuvem. Certise-se de que os endereços de origem do VPC CSE estão na Zona de Rede CBR; caso contrário, o pedido é negado.

Limitações