Criar uma instância do Secure Source Manager para usar com identidades federadas

Aprenda a criar uma instância do Secure Source Manager que usa a Federação de Identidade de Colaboradores com um provedor de identidade externa (IdP).

Para mais informações sobre a Federação de Identidade de Colaboradores, consulte Federação de Identidade de Colaboradores.

Para informações sobre limitações da Federação de Identidade de Colaboradores no Secure Source Manager, consulte Federação de identidade: produtos e limitações.

O Secure Source Manager é um serviço de locatário único. Uma única instância do Secure Source Manager só deve incluir usuários de um Google Cloud cliente, a menos que várias empresas que tenham uma relação contratual precisem usar uma única instância para colaboração.

Se você estiver trabalhando com várias empresas e quiser colaborar com elas no código-fonte, recomendamos que crie uma instância separada para cada empresa.

Antes de começar

  1. Faça login na sua Conta do Google.

    Se você ainda não tiver uma, inscreva-se agora.

  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Enable the Secure Source Manager API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  4. Install the Google Cloud CLI.

  5. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  8. Enable the Secure Source Manager API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  9. Install the Google Cloud CLI.

  10. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  11. To initialize the gcloud CLI, run the following command:

    gcloud init

Criptografia de dados

Por padrão, Google Cloud automaticamente criptografa os dados em repouso usando Google-owned and Google-managed encryption keys. Se você tiver requisitos regulatórios ou de conformidade específicos relacionados às chaves que protegem seus dados, crie instâncias do Secure Source Manager criptografadas com chaves de criptografia gerenciadas pelo cliente (CMEK).

Não armazene dados sensíveis em IDs de instância ou pares de chave-valor de rótulo, porque eles não são criptografados com CMEK.

Se você estiver criando sua primeira instância do Secure Source Manager no projeto, crie manualmente o agente de serviço do Secure Source Manager executando o seguinte comando:

gcloud beta services identity create \
    --service=securesourcemanager.googleapis.com \
    --project=PROJECT_ID

Em que PROJECT_ID é o ID do projeto em que você cria a instância do Secure Source Manager.

Depois de criar o agente de serviço do Secure Source Manager, conceda o papel de agente de serviço do Secure Source Manager (roles/securesourcemanager.serviceAgent) ao principal service-PROJECT-NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com ou a criação da instância vai falhar.

Configurar a Federação de Identidade de Colaboradores

Antes de criar uma instância, configure um pool e um provedor da Federação de Identidade de Colaboradores.

  1. Crie um pool da Federação de Identidade de Colaboradores.

  2. Configure o provedor de pool de identidade de colaboradores com os seguintes mapeamentos de atributos:

    • google.subject
    • google.email

Criar uma instância

gcloud

Antes de usar os dados do comando abaixo, faça estas substituições:

  • INSTANCE_ID: o nome da instância que você quer criar.
  • LOCATION: a região em que você quer criar a instância. Para informações sobre locais com suporte, consulte Locais.
  • PROJECT_ID: o ID do projeto em que você quer criar uma instância.

Execute este comando seguinte:

Linux, macOS ou Cloud Shell

gcloud source-manager instances create INSTANCE_ID --region=LOCATION --project=PROJECT_ID --enable-workforce-identity-federation

Windows (PowerShell)

gcloud source-manager instances create INSTANCE_ID --region=LOCATION --project=PROJECT_ID --enable-workforce-identity-federation

Windows (cmd.exe)

gcloud source-manager instances create INSTANCE_ID --region=LOCATION --project=PROJECT_ID --enable-workforce-identity-federation

Uma operação de criação de instância de longa duração é iniciada. A saída será assim:

  Create request issued for [my-instance].
  done: false
  metadata:
    '@type': type.googleapis.com/google.cloud.securesourcemanager.v1.OperationMetadata
    apiVersion: v1
    createTime: '2023-02-27T20:57:52.315609549Z'
    requestedCancellation: false
    target: projects/my-project/locations/us-central1/instances/my-instance
    verb: create
  name: projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2e

Em que projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2e é o OPERATION_NAME.

Registre o OPERATION_NAME, porque você precisará usá-lo para verificar o status da operação.

Leva até 60 minutos para criar a instância.

API

Antes de executar esse comando, substitua os seguintes valores:

  • INSTANCE_ID: o nome da instância que você quer criar.
  • LOCATION: a região em que você quer criar a instância. Para informações sobre locais com suporte, consulte Locais.
  • PROJECT_ID: o ID do projeto em que você quer criar uma instância.

Execute este comando:

curl \
    -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances?instance_id=INSTANCE_ID \
    -H "Content-Type: application/json" \
    -d "{workforce_identity_federation_config: {enabled: true}}"

Uma operação de criação de instância de longa duração é iniciada. A saída será assim:

{
"name": "OPERATION_NAME",
"metadata": {
  "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.OperationMetadata",
  "createTime": "2022-11-01T14:31:32.420469714Z",
  "target": "projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID",
  "verb": "create",
  "requestedCancellation": false,
  "apiVersion": "v1"
},
"done": false
}

Essa saída de exemplo inclui os seguintes valores:

  • OPERATION_NAME: o nome da operação, por exemplo, projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2e.
  • PROJECT_ID: o Google Cloud projeto.
  • LOCATION: a região em que a instância está localizada.

Registre o OPERATION_NAME, porque você precisará usá-lo para verificar o status da operação.

Leva até 60 minutos para criar a instância.

Terraform

O exemplo a seguir cria uma instância do Secure Source Manager com a Federação de Identidade de Colaboradores ativada:

resource "google_secure_source_manager_instance" "instance" {
  instance_id = "INSTANCE_ID"
  location    = "LOCATION"
  project     = "PROJECT_ID"
  workforce_identity_federation_config {
    enabled = true
  }
}

Verificar o status de funcionamento

gcloud

Antes de usar os dados do comando abaixo, faça estas substituições:

  • OPERATION_NAME: o nome da operação da resposta do comando de criação.
  • LOCATION: a região da instância.

Execute este comando seguinte:

Linux, macOS ou Cloud Shell

gcloud source-manager operations describe OPERATION_NAME --region=LOCATION

Windows (PowerShell)

gcloud source-manager operations describe OPERATION_NAME --region=LOCATION

Windows (cmd.exe)

gcloud source-manager operations describe OPERATION_NAME --region=LOCATION

Quando a instância estiver pronta, a resposta será semelhante a esta:

  "name": "projects/my-project/locations/us-central1/operations/operation-123456789012-5ec69948c0f2b-60dd727f-a9b97a2e",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.OperationMetadata",
    "createTime": "2022-11-01T14:31:32.420469714Z",
    "endTime": "2022-11-01T14:48:34.140378114Z",
    "target": "projects/my-project/locations/us-central1/instances/my-instance",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.Instance",
    "name": "projects/my-project/locations/us-central1/instances/my-instance",
    "createTime": "2022-11-01T14:31:32.416413630Z",
    "updateTime": "2022-11-01T14:31:32.416413630Z",
    "labels": {
      "ldap": "user",
      "source": "manual"
    },
    "state": "ACTIVE",
    "hostConfig": {
      "html": "my-instance-098765432109.us-central1.sourcemanager.dev",
      "api": "my-instance-098765432109-api.us-central1.sourcemanager.dev",
      "gitHttp": "my-instance-098765432109-git.us-central1.sourcemanager.dev"
    }
  }

Em que my-instance-098765432109.us-central1.sourcemanager.dev é o URL HTML da instância.

API

Antes de usar os dados da solicitação, faça estas substituições:

  • OPERATION_NAME: o nome da operação da resposta do comando de criação.

Método HTTP e URL:

GET https://securesourcemanager.googleapis.com/v1/OPERATION_NAME

Para enviar a solicitação, expanda uma destas opções:

Quando a instância estiver pronta, a resposta será semelhante a esta:

  "name": "projects/my-project/locations/us-central1/operations/operation-123456789012-5ec69948c0f2b-60dd727f-a9b97a2e",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.OperationMetadata",
    "createTime": "2024-10-28T15:37:39.009812863Z",
    "endTime": "2024-10-28T16:10:58.416640259Z",
    "target": "projects/my-project/locations/us-central1/instances/my-instance",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.Instance",
    "name": "projects/my-project/locations/us-central1/instances/my-instance",
    "createTime": "2024-10-28T15:37:39.004550840Z",
    "updateTime": "2024-10-28T15:37:39.867857246Z",
    "state": "ACTIVE",
    "hostConfig": {
      "html": "my-instance-326202322590.us-central1.sourcemanager.dev",
      "api": "my-instance-326202322590-api.us-central1.sourcemanager.dev",
      "gitHttp": "my-instance-326202322590-git.us-central1.sourcemanager.dev",
      "gitSsh": "my-instance-326202322590-ssh.us-central1.sourcemanager.dev"
    },
    "workforceIdentityFederationConfig": {
      "enabled": true
    }
  }

Em que my-instance-098765432109.us-central1.sourcemanager.dev é o URL HTML da instância.

Copie o URL HTML da resposta de status de verificação bem-sucedida. Você precisa desse URL para acessar a instância pela interface da Web.

Acessar a instância

Depois que a instância for criada, você poderá acessá-la pela interface da Web usando um navegador.

  1. Para acessar a instância do Secure Source Manager pela interface da Web, copie o URL a seguir na barra de endereço do navegador.

    INSTANCE_ID-PROJECT_NUMBER.LOCATION.sourcemanager.dev

    Substitua:

    • INSTANCE_ID pelo nome da instância.
    • PROJECT_NUMBER pelo número do projeto Google Cloud da instância. Para informações sobre como identificar projetos, consulte Identificar projetos.
    • LOCATION pela região da instância.

    Uma tela do OAuth aparece solicitando o nome do provedor.

  2. Insira o nome do provedor de identidade de colaboradores no seguinte formato:

    locations/global/workforcePools/POOL_ID/providers/PROVIDER_ID
    

    Substitua:

    • POOL_ID pelo ID do pool da Federação de Identidade de Colaboradores.
    • PROVIDER_ID pelo ID do provedor da Federação de Identidade de Colaboradores.

    Para mais informações sobre pools e provedores de identidade federada de colaboradores, consulte Gerenciar pools e provedores de identidade federada de colaboradores.

    Você vai receber uma solicitação para fazer login usando as credenciais do provedor.

  3. Faça login usando as credenciais do provedor.

  4. A interface da Web do Secure Source Manager será aberta. Nela, você pode criar e visualizar repositórios, problemas e solicitações de pull.

    Você precisa fazer login novamente na interface da Web após o término da duração da sessão no pool da Federação de Identidade de Colaboradores.

Criar a configuração de login da CLI gcloud

Para fazer a autenticação com as credenciais do pool de identidade de colaboradores na instância do Secure Source Manager usando comandos da CLI gcloud ou comandos do Git, crie uma configuração de login com o pool de identidade de colaboradores.

Para criar uma configuração de login do pool de identidade de colaboradores, siga as instruções em Receber tokens de curta duração para a Federação de Identidade de Colaboradores para criar um login baseado no navegador com a CLI gcloud.

Depois de fazer a autenticação, você pode usar comandos do Git para interagir com a instância do Secure Source Manager. Para começar a usar o Git, consulte Usar o gerenciamento de código-fonte do Git.

A seguir