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

Saiba como criar uma instância do Secure Source Manager que usa a Workforce Identity Federation com um fornecedor de identidade (IdP) externo.

Para mais informações sobre a federação de identidade da força de trabalho, consulte o artigo Federação de identidade da força de trabalho.

Para ver informações sobre as limitações da federação de identidade da força de trabalho no Secure Source Manager, consulte o artigo Federação de identidade: produtos e limitações.

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

Se estiver a trabalhar 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. Sign in to your Google Account.

    If you don't already have one, sign up for a new account.

  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.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  4. Install the Google Cloud CLI.

  5. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  6. Para inicializar a CLI gcloud, execute o seguinte comando:

    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.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  9. Install the Google Cloud CLI.

  10. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  11. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  12. Encriptação de dados

    Por predefinição, Google Cloud encripta automaticamente os dados em repouso através de Google-owned and Google-managed encryption keys. Se tiver requisitos de conformidade ou regulamentares específicos relacionados com as chaves que protegem os seus dados, pode criar instâncias do Secure Source Manager encriptadas com chaves de encriptação geridas pelo cliente (CMEK).

    Não armazene dados confidenciais em IDs de instâncias nem em pares chave-valor de etiquetas, porque não são encriptados com CMEK.

    Se estiver a criar a primeira instância do Secure Source Manager no seu projeto, tem de criar manualmente o agente do serviço do Secure Source Manager executando o seguinte comando:

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

    Aqui, PROJECT_ID é o ID do projeto onde cria a instância do Secure Source Manager.

    Depois de criar a conta de serviço por produto e por projeto (P4SA), tem de conceder a função de agente do serviço Secure Source Manager (roles/securesourcemanager.serviceAgent) ao principal service-PROJECT-NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com Caso contrário, a criação da instância falha.

    Configure a federação de identidade da força de trabalho

    Antes de criar uma instância, tem de configurar um Workforce Identity Federation pool e um fornecedor.

    1. Crie um Workload Identity Pool.

    2. Configure o fornecedor do Workforce Identity Pool com os seguintes mapeamentos de atributos:

      • google.subject
      • google.email

    Crie uma instância

    gcloud

    Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

    • INSTANCE_ID: o nome da instância que quer criar.
    • LOCATION: a região onde quer criar a instância. Para ver informações sobre as localizações suportadas, consulte o artigo Localizações.
    • PROJECT_ID: o ID do projeto no qual quer criar uma instância.

    Execute o seguinte comando:

    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

    É iniciada uma operação de criação de instância de longa duração. O resultado tem o seguinte aspeto:

      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
    

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

    Registe o OPERATION_NAME, uma vez que vai precisar de o usar para verificar o estado da operação.

    A criação da instância demora até 60 minutos.

    API

    Antes de executar este comando, substitua os seguintes valores:

    • INSTANCE_ID: o nome da instância que quer criar.
    • LOCATION: a região onde quer criar a instância. Para ver informações sobre as localizações suportadas, consulte a secção Localizações.
    • PROJECT_ID: o ID do projeto no qual quer criar uma instância.

    Execute o seguinte 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}}"
    
    

    É iniciada uma operação de criação de instância de longa duração. O resultado é semelhante ao seguinte:

    {
    "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
    }
    

    Este exemplo de saída 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 onde a instância está localizada.

    Registe o OPERATION_NAME porque tem de o usar para verificar o estado da operação.

    A criação da instância demora até 60 minutos.

    Terraform

    O exemplo seguinte cria uma instância do Secure Source Manager com a Workforce Identity Federation ativada:

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

    Verifique o estado da operação

    gcloud

    Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

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

    Execute o seguinte comando:

    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 à seguinte:

      "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 qualquer um dos dados do pedido, faça as seguintes substituições:

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

    Método HTTP e URL:

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

    Para enviar o seu pedido, expanda uma destas opções:

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

      "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 do estado da verificação bem-sucedida. Precisa deste URL para aceder à instância através da respetiva interface Web.

    Aceda à instância

    Depois de criar a instância, pode aceder à mesma através da respetiva interface Web com um navegador.

    1. Para aceder à instância do Secure Source Manager através da respetiva interface Web, copie o seguinte URL para a barra de endereço do navegador.

      INSTANCE_ID-PROJECT_NUMBER.LOCATION.sourcemanager.dev

      Substitua o seguinte:

      • INSTANCE_ID com o nome da instância.
      • PROJECT_NUMBER com o número do projeto Google Cloud da instância. Para obter informações sobre a identificação de projetos, consulte o artigo Identificar projetos.
      • LOCATION com a região da instância.

      É apresentado um ecrã OAuth a pedir o nome do seu fornecedor.

    2. Introduza o nome do fornecedor de identidade da força de trabalho no seguinte formato:

      locations/global/workforcePools/POOL_ID/providers/PROVIDER_ID
      

      Substitua o seguinte:

      • POOL_ID com o ID do seu Workforce Identity Federation Pool.
      • PROVIDER_ID com o ID do fornecedor da federação de identidade da força de trabalho.

      Para mais informações sobre os fornecedores e os Workload Identity Pools da Workforce Identity Federation, consulte o artigo Faça a gestão de fornecedores e Workload Identity Pools da Workforce Identity Federation.

      É-lhe pedido que inicie sessão com as credenciais do seu fornecedor.

    3. Inicie sessão com as credenciais do seu fornecedor.

    4. A interface Web do Secure Source Manager é aberta. Aqui, pode criar e ver repositórios, problemas e pedidos de envio.

      Tem de iniciar sessão novamente através da interface Web após a expiração da duração da sessão no seu conjunto de federação de identidades de força de trabalho.

    Crie a sua configuração de início de sessão da CLI gcloud

    Para se autenticar com as credenciais do conjunto de identidades da força de trabalho na instância do Secure Source Manager através de comandos da CLI gcloud ou comandos Git, tem de criar uma configuração de início de sessão com o conjunto de identidades da força de trabalho.

    Para criar uma configuração de início de sessão do Workload Identity Pool, siga as instruções em Obtenha tokens de curta duração para a federação de identidade da força de trabalho para criar um início de sessão baseado no navegador com a CLI gcloud.

    Depois de se autenticar, pode usar comandos Git para interagir com a sua instância do Secure Source Manager. Para começar a usar o Git, consulte o artigo Use Git source code management.

    O que se segue?