Criar uma instância do Secure Source Manager

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 cliente doGoogle Cloud , a menos que várias empresas com uma relação contratual precisem usar uma única instância para colaboração.

Se você trabalha com várias empresas e quer colaborar com elas no código-fonte, recomendamos criar uma instância separada para cada uma.

Para criar uma instância com o VPC Service Controls ativado, consulte Configurar o Secure Source Manager em um perímetro do VPC Service Controls.

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.

    Go to project selector

  3. Enable the Secure Source Manager API.

    Enable the API

  4. Install the Google Cloud CLI.

  5. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

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

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

    Go to project selector

  8. Enable the Secure Source Manager API.

    Enable the API

  9. Install the Google Cloud CLI.

  10. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

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

    gcloud init
  12. Instale o componente "beta" da Google Cloud CLI:
    gcloud components install beta
  13. Funções exigidas

    Para receber as permissões necessárias para criar uma instância do Secure Source Manager, peça ao administrador para conceder a você o papel do IAM de Proprietário da instância do Secure Source Manager (roles/securesourcemanager.instanceOwner) no projeto Google Cloud .

    As funções do Secure Source Manager não aparecem no console Google Cloud até que sejam concedidas a um principal. Para conceder um papel do Secure Source Manager pela primeira vez, consulte Conceder e revogar papéis do IAM.

    Criptografia de dados

    Por padrão,o Google Cloud automaticamente criptografa os dados em repouso usando chaves de criptografia gerenciadas pelo Google. Se você tiver requisitos regulatórios ou de compliance 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 a CMEK.

    Se você estiver criando sua primeira instância do Secure Source Manager no projeto, será necessário criar 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ê vai criar sua instância do Secure Source Manager.

    Depois de criar a conta de serviço por produto e por projeto (P4SA), 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. Caso contrário, a criação da instância vai falhar.

    Criar uma instância

    Para criar uma instância:

    CLI da gcloud

    1. Execute o comando a seguir para criar uma instância. Talvez seja necessário fazer a autenticação na CLI gcloud.

      gcloud beta source-manager instances create INSTANCE_ID \
          --region=LOCATION \
          --project=PROJECT_ID \
          --kms-key=projects/KEY_PROJECT/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY
      

      Em que:

      • 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 os locais compatíveis, consulte Locais.
      • PROJECT_ID é o ID do projeto em que você quer criar uma instância.
      • -kms-key é uma flag opcional. Inclua se quiser usar sua própria chave de criptografia gerenciada pelo cliente (CMEK) para criar a instância. As chaves CMEK precisam estar no mesmo local em que você está criando a instância, mas podem estar em um projeto diferente. Omita essa flag se quiser usar a criptografia padrão do Google. Se você quiser criptografar seus dados usando CMEK, substitua o seguinte:
        • KEY_PROJECT com o projeto em que você criou a chave.
        • KEY_LOCATION com o local da chave.
        • KEYRING_NAME pelo nome do keyring;
        • KEY pelo nome da chave.

      Uma operação de longa duração para criar instância é 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.

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

    2. Anote o OPERATION_NAME, porque você vai precisar dele para verificar o status da operação.

    3. Verifique o status da operação create executando o seguinte comando:

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

      Substitua:

      • OPERATION_NAME com o nome da operação da resposta do comando create.
      • LOCATION com a região em que você quer criar a instância. Para informações sobre os locais compatíveis, consulte Locais.

      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/test",
        "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/test",
        "createTime": "2022-11-01T14:31:32.416413630Z",
        "updateTime": "2022-11-01T14:31:32.416413630Z",
        "labels": {
          "ldap": "user",
          "source": "manual"
        },
        "state": "ACTIVE",
        "hostConfig": {
          "html": "test-098765432109.us-central1.sourcemanager.dev",
          "api": "test-098765432109-api.us-central1.sourcemanager.dev",
          "gitHttp": "test-098765432109-git.us-central1.sourcemanager.dev"
        }
      }
      }
      

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

    4. Copie o URL HTML do comando de verificação de status criado. Você vai precisar desse URL para acessar a instância pela interface da Web.

    API

    1. Execute o comando a seguir para criar uma instância. Talvez seja necessário fazer a autenticação na CLI gcloud.

      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 '{ "kms_key":"projects/KEY_PROJECT/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY"}'
      
      

      Em que:

      • 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 os locais compatíveis, consulte Locais.
      • PROJECT_ID é o ID do projeto em que você quer criar uma instância.
      • -d é uma flag de dados HTTP POST opcional que pode ser usada para especificar uma chave CMEK para criptografar sua instância. Omita essa flag se quiser usar a criptografia padrão do Google. Se você quiser criptografar seus dados usando CMEK, substitua o seguinte:
        • KEY_PROJECT com o projeto em que você criou a chave.
        • KEY_LOCATION com o local da chave.
        • KEYRING_NAME pelo nome do keyring;
        • KEY pelo nome da chave.

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

      {
      "name": "projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2e",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.OperationMetadata",
        "createTime": "2022-11-01T14:31:32.420469714Z",
        "target": "projects/my-project/locations/us-central1/instances/test",
        "verb": "create",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
      }
      

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

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

    2. Copie o OPERATION_NAME.

    3. Verifique o status da operação de criação executando o seguinte comando:

      curl \
          -X GET \
          -H "Authorization: Bearer $(gcloud auth print-access-token)" \
          https://securesourcemanager.googleapis.com/v1/OPERATION_NAME
      

      Em que OPERATION_NAME é o nome da operação da resposta ao comando de criação.

      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/test",
        "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/test",
        "createTime": "2022-11-01T14:31:32.416413630Z",
        "updateTime": "2022-11-01T14:31:32.416413630Z",
        "labels": {
          "ldap": "user",
          "source": "manual"
        },
        "state": "ACTIVE",
        "hostConfig": {
          "html": "test-098765432109.us-central1.sourcemanager.dev",
          "api": "test-098765432109-api.us-central1.sourcemanager.dev",
          "gitHttp": "test-098765432109-git.us-central1.sourcemanager.dev"
        }
      }
      }
      

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

    4. Copie o URL HTML do comando de verificação de status criado. Você vai precisar desse URL para acessar a instância pela interface da Web.

    Acessar uma instância

    Depois que a instância for criada, acesse a interface da Web dela usando um navegador.

    Para criar repositórios na instância, você precisa ter o papel Criador de repositórios (roles/securesourcemanager.repoCreator) no projeto da instância e o papel Criador de repositórios da instância (roles/securesourcemanager.instanceRepositoryCreator) na instância do Secure Source Manager.

    1. Para acessar a instância do Secure Source Manager pela interface da Web, copie o seguinte URL 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 com a região da instância.

    2. Uma tela do OAuth vai aparecer perguntando se você quer dar acesso à sua Conta do Google para sourcemanager.dev.

    3. Clique no botão Permitir.

    4. A interface da Web do Secure Source Manager é aberta. É possível criar e visualizar repositórios e todos os problemas e solicitações de pull associados na interface da Web.

    A seguir