Criar e gerenciar o Apigee Spaces

Confira a documentação da Apigee Edge.

Este tópico descreve como criar espaços da Apigee na sua organização para gerenciar políticas de gerenciamento de identidade e acesso para recursos da API Apigee em grande escala.

Este guia descreve as etapas necessárias para:

Para saber mais sobre os benefícios do uso do Apigee Spaces para gerenciar seus recursos de API, consulte Apigee Spaces.

Antes de começar

Antes de começar a usar os espaços:

  • Provisionar a Apigee. Confirme se a organização de assinatura ou pagamento por uso da Apigee que você quer usar está provisionada. Para saber mais sobre as etapas necessárias para provisionar a Apigee, consulte Introdução ao provisionamento.
  • Acessar suas credenciais de autenticação. Antes de executar comandos para criar e gerenciar espaços na linha de comando, receba suas credenciais de autenticação gcloud usando o seguinte comando:
    export TOKEN=$(gcloud auth print-access-token)

Papéis e permissões necessárias

Make sure that you have the following role or roles on the project: Apigee > Apigee Organization Admin

  1. In the Google Cloud console, go to the IAM page.

    Go to IAM
  2. Select the project.
  3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

  4. For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
  1. In the Google Cloud console, go to the IAM page.

    Acessar o IAM
  2. Selecionar um projeto.
  3. Clique em CONCEDER ACESSO.
  4. No campo Novos principais, insira seu identificador de usuário. Normalmente, é o endereço de e-mail de uma Conta do Google.

  5. Na lista Selecionar um papel, escolha um.
  6. Para conceder outros papéis, clique em Adicionar outro papel e adicione cada papel adicional.

Criar um espaço

Para realizar essa tarefa, você precisa da permissão apigee.spaces.create. Essa permissão está incluída no papel Apigee Organization Admin.

Para criar um espaço na sua organização da Apigee, use o seguinte comando:

curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
    "https://apigee.googleapis.com/v1/organizations/ORG_NAME/spaces" \
    --data-raw '{
       "name":"SPACE_NAME"
    }'

Em que:

  • ORG_NAME é o nome da organização da Apigee;
  • SPACE_NAME é o nome do Espaço que você está criando.

Por exemplo, o comando a seguir cria um espaço chamado red na organização acme:

curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
    https://apigee.googleapis.com/v1/organizations/acme/spaces \
    --data-raw '{
       "name":"red",
    }'

Gerenciar participantes e funções em um espaço

Depois de criar um espaço, você pode adicionar membros da equipe e atribuir as funções do IAM necessárias para criar e gerenciar recursos de API no espaço. Os usuários da Apigee só podem criar e gerenciam recursos nos Espaços em que participam da equipe com o as permissões apropriadas. Como o controle de acesso do IAM é concedido no nível dos Espaços, os membros da organização não podem acessar nem gerenciar os recursos da API dos Espaços, a menos que eles sejam especificamente adicionados aos Espaços. Para uma visão geral dos papéis e permissões do IAM necessários para gerenciar recursos do Space, consulte Papéis e permissões necessários.

Adicionar um membro da organização a um espaço

Quando um membro da organização é adicionado a um espaço, uma vinculação de política do IAM é criada para o espaço que recebe dois argumentos:

  • A lista de participantes do espaço
  • A função ou a lista de funções concedidas aos membros

Para realizar essa tarefa, você precisa da permissão apigee.spaces.setIamPolicy. Essa permissão está incluída no papel Apigee Organization Admin.

Para adicionar um participante da organização a um espaço e atribuir um papel do IAM, use este comando:

curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-type: application/json" \
    "https://apigee.googleapis.com/v1/organizations/ORG_NAME/spaces/SPACE_NAME:setIamPolicy" -d \
      '{
        "policy":{
          "bindings":[
            {
              "members": ["user:USER_EMAIL"],
              "role": "roles/IAM_ROLE"
            }
          ]
        }
      }'

Em que:

  • ORG_NAME é o nome da organização da Apigee.
  • SPACE_NAME é o nome do espaço.
  • USER_EMAIL é o endereço de e-mail de um usuário que você está adicionando ao espaço.
  • IAM_ROLE é o nome do papel do IAM que você está atribuindo ao usuário como membro do espaço.

Por exemplo, este comando adiciona o usuário my-email@acme.com ao espaço RED na organização ACME e concede o papel do IAM apigee.apiAdminV2:

curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-type: application/json" \
    "https://apigee.googleapis.com/v1/organizations/acme/spaces/red:setIamPolicy" -d \
      '{ 
        "policy":{
          "bindings":[
            {
              "members": ["user:my-email@acme.com"],
              "role": "roles/apigee.apiAdminV2"
            }
          ]
        }
      }'

É possível adicionar outras funções e permissões aos participantes do espaço atualizando a política do IAM. Para atualizar a política do IAM de um espaço, use o método setIamPolicy descrito nesta seção com a lista revisada de papéis e permissões desejados. Isso vai criar uma nova política do IAM para o espaço, com funções e permissões ajustadas.

Adicionar uma equipe de participantes a um espaço

Como alternativa, adicione uma equipe de participantes a um espaço e atribua um ou mais papéis do IAM. Para adicionar uma equipe de membros a um espaço e atribuir um papel do IAM, use este comando:

curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-type: application/json" \
   "https://apigee.googleapis.com/v1/organizations/ORG_NAME/spaces/SPACE_NAME:setIamPolicy" -d \
     '{
       "policy":{
         "bindings":[
           {
             "members": ["group:GROUP_EMAIL"],
             "role": "roles/IAM_ROLE"
           }
         ]
       }
     }'

Em que:

  • ORG_NAME é o nome da organização da Apigee.
  • SPACE_NAME é o nome do espaço.
  • GROUP_EMAIL é o endereço de e-mail de um grupo que você está adicionando ao espaço.
  • IAM_ROLE é o nome do papel do IAM que você está atribuindo à equipe como membro do espaço.

Por exemplo, este comando adiciona o grupo acme-team@acme.com ao espaço red na organização acme e concede a função apigee.apiAdminV2 ao grupo:

curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-type: application/json" \
   "https://apigee.googleapis.com/v1/organizations/acme/spaces/red:setIamPolicy" -d \
     '{ 
       "policy":{
         "bindings":[
           {
             "members": ["group:red-team@acme.com"],
             "role": "roles/apigee.apiAdminV2"
           }
         ]
       }
     }'

Como observado em Adicionar um membro da organização a um espaço, a função do IAM apigee.apiAdminV2 contém muitas das permissões necessárias para gerenciar os recursos do espaço. No entanto, talvez seja necessário conceder outras funções aos usuários para realizar tarefas específicas.

Verificar a atribuição da política do IAM dos Espaços

Para realizar essa tarefa, você precisa da permissão apigee.spaces.getIamPolicy. Essa permissão está incluída no papel Apigee Organization Admin.

Para verificar se a política do IAM está definida corretamente para o espaço, use o seguinte comando:

curl -X GET -H "Authorization: Bearer $TOKEN" \
    "https://apigee.googleapis.com/v1/organizations/ORG_NAME/spaces/SPACE_NAME:getIamPolicy"

Em que:

  • ORG_NAME é o nome da organização da Apigee.
  • SPACE_NAME é o nome do espaço.

Por exemplo, o comando a seguir é usado para confirmar se a política do IAM está definida corretamente para o espaço red na organização acme:

curl -X GET -H "Authorization: Bearer $TOKEN" \
    "https://apigee.googleapis.com/v1/organizations/acme/spaces/red:getIamPolicy"

A saída do comando retorna a política atual do IAM para o espaço e tem esta aparência:

{
  "version": "0",
  "bindings": [
    {
      "role": "roles/apigee.apiAdminV2",
      "members": [
        "group:red-team@acme.com"
      ]
    }
  ]
}

Neste exemplo, a política do IAM para o espaço concede o papel apigee.apiAdminV2 aos membros do espaço, neste caso, membros do grupo red-team@acme.com.

Os membros da equipe red são os únicos membros da organização que receberam acesso ao espaço red. Isso significa que apenas os membros da equipe vermelha podem criar e gerenciar recursos de API nos espaços red. Se membros de outra equipe da organização, como team-blue@acme.com tentar acessar um proxy de API criado no espaço team-blue@acme.com, será exibido o seguinte erro:

{
  "error": {
    "code": 403,
    "message": "Permission denied on resource \"organizations\/acme\/apis\/proxy-1\" (or it may not exist).",
    "status": "PERMISSION_DENIED"
  }
}

Remover participantes de um espaço

Para remover participantes ou um grupo de participantes de um espaço, é necessário definir uma nova política do IAM para o espaço com uma lista revisada de participantes ou grupos. O uso do método setIamPolicy cria uma nova política de IAM para o espaço, com funções e membros ajustados adequadamente.

Por exemplo, para atualizar os membros do espaço da equipe blue, primeiro verifique a política atual do IAM usando o seguinte comando:

curl -X GET -H "Authorization: Bearer $TOKEN" \
  "https://apigee.googleapis.com/v1/organizations/acme/spaces/blue:getIamPolicy"

A saída do comando retorna a política atual do IAM para o espaço e tem esta aparência:

{
  "version": "0",
  "bindings": [
    {
      "role": "roles/apigee.apiAdminV2",
      "members": [
        "group: blue-team@acme.com", 
        "users: user-a@acme.com, user-b@acme.com, user-c@acme.com"
      ]
    }
  ]
}

Para remover user-b@acme.com do espaço, use o seguinte comando:

curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-type: application/json" \
  "https://apigee.googleapis.com/v1/organizations/acme/spaces/blue:setIamPolicy" -d \
    '{ 
      "policy":{
        "bindings":[
          {
            "members": [
              "group:blue-team@acme.com",
              "users: user-a@acme.com, user-c@acme.com"
            ]  
            "role": "roles/apigee.apiAdminV2"
          }
        ]
      }
    }'

A nova política do IAM para o espaço não vai mais incluir user-b@acme.com.

Para remover um membro de um grupo incluído em um espaço, primeiro remova o membro do grupo e, em seguida, execute novamente o comando setIamPolicy para atualizar a política do IAM do espaço com a associação correta para o alias de e-mail do grupo.

Listar todos os espaços de uma organização

Para realizar essa tarefa, você precisa da permissão apigee.spaces.list. Essa permissão está incluída no papel Apigee Organization Admin.

Para listar todos os espaços em uma organização da Apigee, use o seguinte comando:

curl -X GET -H "Authorization: Bearer $TOKEN" \
    "https://apigee.googleapis.com/v1/organizations/ORG_NAME/spaces"

Em que ORG_NAME é o nome da organização da Apigee.

Por exemplo, o comando a seguir lista todos os espaços na organização acme:

curl -X GET -H "Authorization: Bearer $TOKEN" \
    "https://apigee.googleapis.com/v1/organizations/acme/spaces"

Esse comando retorna algo como o seguinte:

  {
    "spaces": [
        {
            "name": "red",
            "createTime": "2024-08-02T23:26:03.001512Z",
            "updateTime": "2024-08-02T23:26:03.001512Z"
        },
        {
            "name": "blue",
            "createTime": "2024-08-02T00:34:54.159331Z",
            "updateTime": "2024-08-02T00:34:54.159331Z"
      }
      ]
  }

Conferir detalhes do espaço

Para realizar essa tarefa, você precisa da permissão apigee.spaces.get. Essa permissão está incluída no papel Apigee Organization Admin.

Use o comando a seguir para conferir os detalhes do espaço:

curl -X GET -H "Authorization: Bearer $TOKEN" \
    "https://apigee.googleapis.com/v1/organizations/ORG_NAME/spaces/SPACE_NAME"

Em que:

  • ORG_NAME é o nome da organização da Apigee.
  • SPACE_NAME é o nome do espaço.

Por exemplo, o comando a seguir mostra detalhes sobre o espaço vermelho na organização acme:

curl -X GET -H "Authorization: Bearer $TOKEN" \
    "https://apigee.googleapis.com/v1/organizations/acme/spaces/red"

Esse comando retorna algo como o seguinte:

  {
      "name": "red",
      "createTime": "2024-08-02T23:26:03.001512Z",
      "updateTime": "2024-08-02T23:26:03.001512Z"
  }

Atualizar um espaço

Para executar esta tarefa, você precisa da permissão apigee.spaces.update. Essa permissão está incluída no papel Apigee Organization Admin.

Para atualizar um espaço na sua organização da Apigee, use o seguinte comando:

curl -X PATCH -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
    "https://apigee.googleapis.com/v1/organizations/ORG_NAME/spaces/SPACE_NAME" \
      --data-raw '{
        "displayName":"DISPLAY_NAME"
      }'

Em que:

  • ORG_NAME é o nome da organização da Apigee.
  • SPACE_NAME é o nome do espaço.
  • DISPLAY_NAME é o novo nome de exibição do espaço.

Por exemplo, o comando a seguir atualiza o nome de exibição do espaço vermelho na organização acme:

curl -X PATCH -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
    "https://apigee.googleapis.com/v1/organizations/acme/spaces/red" -d \
    '{
      "displayName": "Red team space"
    }'

Excluir um espaço

Para executar esta tarefa, você precisa da permissão apigee.spaces.delete. Essa permissão está incluída no papel Apigee Organization Admin. Antes de excluir um espaço, verifique se todos os recursos nele também foram excluídos.

Para excluir um espaço na sua organização da Apigee, use o seguinte comando:

curl -X DELETE -H "Authorization: Bearer $TOKEN" \
    "https://apigee.googleapis.com/v1/organizations/ORG_NAME/spaces/SPACE_NAME"

Por exemplo, o comando a seguir exclui o espaço vermelho na organização acme:

curl -X DELETE -H "Authorization: Bearer $TOKEN" \
    "https://apigee.googleapis.com/v1/organizations/acme/spaces/red"

Se você tentar excluir um espaço com recursos ativos ainda associados a ele, verá o seguinte erro:

{
  "error": {
    "code": 400,
    "message": "Space \"red\" has resources associated with it. Please delete the resources before deleting the space.",
    "status": "FAILED_PRECONDITION"
  }
}

Para resolver o erro, exclua ou mova os recursos do espaço antes de tentar excluir o espaço.

A seguir