IBM Cloud Docs
Estabelecendo autorização de serviço a serviço

Estabelecendo autorização de serviço a serviço

Para configurar o compartilhamento de DNS para gateways VPE entre VPCs de hub e compartilhados por DNS em contas diferentes, o administrador de VPC de hub deve estabelecer uma política de autorização de serviço para serviço do IAM (s2s). Para obter mais informações, consulte Usando autorizações para conceder acesso entre os serviços.

Notas:

  • Se uma VPC compartilhada por DNS e a VPC de hub estiverem usando as mesmas contas, ou contas diferentes, como o administrador da VPC de hub, deve-se criar uma política de autorização de serviço para serviço do IAM que forneça a essa VPC compartilhada por DNS a permissão do DNSBindingConnector na VPC de hub
  • Atualmente, a IU permite que apenas Todas as instâncias do VPC tenham a permissão DNSBindingConnector no VPC do hub Para indicar um VPC "específico", deve-se usar a API ou agrupar uma solicitação de API em um arquivo JSON para usar com a CLI.. O código de exemplo é fornecido para uso com a CLI e a API.

É possível estabelecer a autorização s2s com o console, a CLI, a API ou o Terraform.

Criação de uma política de autorização do IAM s2s no console

Para criar uma política de autorização do IAM s2s no console, siga estas etapas:

  1. No console IBM Cloud, vá para Gerenciar > Acesso (IAM). A página IBM Cloud Identity and Access Management é exibida.

  2. No painel lateral, selecione Autorizações.

  3. Na página Gerenciar autorizações, clique em Criar.

  4. Na página Conceder uma autorização de serviço, selecione a conta de origem.

    • Se você estiver configurando a autorização em sua conta, selecione Esta conta
    • Se estiver configurando autorização na conta corporativa, selecione Outra conta.
  5. Para o serviço de origem, selecione VPC Infrastructure Services na lista.

  6. Selecione o escopo. Escolha Recursos específicos..

  7. Selecione Tipo de recurso. Na lista, selecione Nuvem privada virtual.

  8. Selecione Instância de serviço de origem. Escolha Todas as instâncias..

    Para selecionar uma instância específica, deve-se usar as instruções CLI ou API. Essa é uma limitação conhecida.

  9. Para o serviço de destino, selecione VPC Infrastructure Services na lista.

  10. Selecione o escopo. Escolha Recursos específicos..

  11. Clique em Tipo de recurso Na lista, selecione Nuvem privada virtual.

  12. Na seção Funções sob o acesso de Serviço, selecione DNSBindingConnector

  13. Clique em Autorizar.

  14. Quando você retornar à página Gerenciar autorizações, clique em Criar novamente e siga as mesmas etapas para configurar autorizações para os outros dois serviços.

Criando uma política de autorização do IAM s2s por meio da CLI

Para criar uma política de autorização s2s do IAM por meio da CLI, siga estas etapas:

  1. Configure seu ambiente da CLI.

  2. Faça login na sua conta com a CLI. Depois de inserir a senha, o sistema pergunta qual conta e região você deseja usar:

    ibmcloud login --sso
    
  3. Crie uma política de autorização s2s do IAM:

    ibmcloud iam authorization-policy-create is DNSBindingConnector --source-resource-type vpc --target-resource-type vpc
    

Indicando uma instância de VPC específica da CLI

Se uma VPC compartilhada por DNS e a VPC de hub estiverem usando a mesma conta, como o administrador da VPC de hub, deve-se criar uma política de autorização de serviço para serviço do IAM que forneça a essa VPC compartilhada por DNS a permissão do DNSBindingConnector na VPC de hub

Atualmente, a UI Source service instance permite que Todas as instâncias do VPC tenham a permissão DNSBindingConnector no VPC de hub.

Para indicar um VPC específico da CLI, deve-se usar um arquivo JSON com conteúdo de solicitação de API. Por exemplo:

ibmcloud iam authorization-policy-create --file JSON_FILE

Em que o JSON_FILE contém:

{"type":"authorization","subjects":[{"attributes":[{"name":"accountId","value":"e38cfd44b6e44b249ac75dd5de0cc8aa"},{"name":"serviceName","value":"is"},{"name":"resourceType","value":"vpc"},{"name":"resource","value":"r134-fd189c4f-52a0-4694-abfd-186cb6011a3c"}]}],"roles":[{"role_id":"crn:v1:bluemix:public:is::::serviceRole:DNSBindingConnector"}],"resources":[{"attributes":[{"name":"accountId","value":"e38cfd44b6e44b249ac75dd5de0cc8aa"},{"name":"serviceName","value":"is"},{"name":"vpcId","value":"r134-ffaedf75-4f44-4ead-989d-cd37816a13d2"}]}]}

Criando uma política de autorização s2s do IAM com a API

Para criar uma política de autorização do IAM s2s com a API, siga estas etapas:

  1. Configure o seu Ambiente de API.

  2. Armazene os seguintes valores em variáveis a serem usadas nos comandos da API:

    export dns_shared_account_id=<dns_shared_vpc_account_id>
    export hub_account_id=<hub_vpc_account_id>
    export dns_shared_vpc_id=<dns_shared_vpc_id>
    export hub_vpc_id=<hub_vpc_id>
    
  3. Para criar e excluir uma vinculação de resolução de DNS entre o hub e VPCs compartilhadas por DNS em contas diferentes, um s2s a política deve existir na conta VPC do hub. Isso fornece ao VPC compartilhado por DNS uma função do DNSBindingConnector no VPC de hub Para criar o s2s política, consulte o policies método no API de gerenciamento de políticas IAM

Exemplo de solicitação

{
  "type": "authorization",
  "subjects": [
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "'$dns_shared_account_id'"
        },
        {
          "name": "serviceName",
          "value": "is"
        },
        {
          "name": "resourceType",
          "value": "vpc"
        },
        {
          "name": "resource",
          "value": "'$dns_shared_vpc_id'"
        }
      ]
    }
  ],
  "roles": [
    {
      "role_id": "crn:v1:bluemix:public:is::::serviceRole:DNSBindingConnector"
    }
  ],
  "resources": [
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "'$hub_account_id'"
        },
        {
          "name": "serviceName",
          "value": "is"
        },
        {
          "name": "vpcId",
          "value": "'$hub_vpc_id'"
        }
      ]
    }
  ]
}

Exemplo de comando

curl -sX POST "$iam_api_endpoint/v1/policies" -H "Authorization: Bearer ${iam_token}" -d '$request_body'

Indicando uma instância VPC específica com a API

Se uma VPC compartilhada por DNS e a VPC de hub estiverem usando a mesma conta, como o administrador da VPC de hub, deve-se criar uma política de autorização de serviço para serviço do IAM que forneça a essa VPC compartilhada por DNS a permissão do DNSBindingConnector na VPC de hub

Atualmente, a UI Source service instance permite que Todas as instâncias do VPC tenham a permissão DNSBindingConnector no VPC de hub.

Aqui está uma API de amostra para conceder à VPC compartilhada pelo DNS para ter permissão do DNSBindingConnector na VPC do hub. Observe que o role_id é crn:v1:bluemix:public:is::::serviceRole:DNSBindingConnector

{
"type": "authorization",
"subjects": [
{
"attributes": [
{ "name": "accountId", "value": "Account S (Spoke)" }
 ,
   { "name": "serviceName", "value": "is" }
 ,
{ "name": "resourceType", "value": "vpc" }
 ,
{ "name": "resource", "value": "Spoke VPC ID" }
 ]
}
],
"roles": [
{ "role_id": "crn:v1:bluemix:public:is::::serviceRole:DNSBindingConnector" }
 ],
"resources": [
{
"attributes": [
{ "name": "accountId", "value": "Account H (Hub)" }
 ,
{ "name": "serviceName", "value": "is" }
 ,
{ "name": "vpcId", "value": "Hub VPC ID" }
 ]
}
]
}

Criando uma política de autorização do IAM s2s com o Terraform

É possível usar Terraform para criar uma política de autorização s2s do IAM.

Para usar o Terraform, faça download da CLI do Terraform e configure o plug-in do provedor IBM Cloud. Para obter mais informações, consulte Introdução ao Terraform.

Os serviços de infraestrutura do VPC usam um terminal específico regional, que tem como destino o us-south por padrão Se você criar a sua VPC em outra região, certifique-se de destinar a região apropriada no bloco do provedor do arquivo provider.tf.

Veja o exemplo a seguir de destinação de uma região diferente do us-south padrão:

resource "ibm_iam_authorization_policy" "policy" {

  #"DNSBindingConnector",

  roles = [

    "DNS Binding Connector",

  ]

    subject_attributes {

        name  = "accountId"

        value = "var.accountId1"

    }

    subject_attributes {

        name  = "serviceName"

        value = "is"

    }

     subject_attributes {

        name  = "resourceType"

        value = "vpc"

    }

    subject_attributes {

        name  = "resource"

        value = ibm_is_vpc.spoke_vpc.id

    }

    resource_attributes {

        name     = "accountId"

        value    =  "var.accountId2"

    }

    resource_attributes {

        name     = "serviceName"

        value    = "is"

    }

   resource_attributes {

      name  =  "vpcId"

      value =  ibm_is_vpc.hub_vpc.id

   }

}