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ó pode incluir usuários de um Google Cloud cliente, a menos que várias empresas com um relacionamento 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.

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. 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.

    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. Instale a Google Cloud CLI.

  5. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com 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. Instale a Google Cloud CLI.

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

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

    gcloud init

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ê opapel de proprietário da instância do Secure Source Manager (roles/securesourcemanager.instanceOwner) do IAM no Google Cloud projeto.

Os papéis do Secure Source Manager não aparecem no Google Cloud console até serem concedidos 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, Google Cloud automaticamente criptografa dados em repouso usando chaves de criptografia gerenciadas pelo Google. 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, 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 a instância do Secure Source Manager.

Depois de criar a conta de serviço por produto e por projeto (P4SA), você deve conceder o papel de agente de serviço do Secure Source Manager (roles/securesourcemanager.serviceAgent) ao principal service-PROJECT-NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.comou a criação da instância vai falhar.

Criar uma instância

Para criar uma instância:

CLI gcloud

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

    gcloud 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 ID permanente da instância. O ID precisa usar apenas letras minúsculas, números e hífens, começar com uma letra e não pode ser alterado depois da criação.

    • LOCATION é a região em que você quer criar a instância. Para informações sobre os locais com suporte, 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 pelo projeto em que você criou a chave.
      • KEY_LOCATION pelo local da chave.
      • KEYRING_NAME pelo nome do keyring.
      • KEY pelo nome da chave.

    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.

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

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

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

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

    Substitua:

    • OPERATION_NAME pelo nome da operação na resposta do comando de criação.
    • LOCATION pela região em que você quer criar a instância. Para informações sobre os locais com suporte, 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 com sucesso. Você 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 ID permanente da instância. O ID precisa usar apenas letras minúsculas, números e hífens, e começar com uma letra.

    • LOCATION é a região em que você quer criar a instância. Para informações sobre os locais com suporte, 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 pelo projeto em que você criou a chave.
      • KEY_LOCATION pelo local da chave.
      • KEYRING_NAME pelo nome do keyring.
      • KEY pelo nome da chave.

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

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

  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 na resposta ao seu 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 com sucesso. Você precisará desse URL para acessar a instância pela interface da Web.

Terraform

Para criar uma instância do Secure Source Manager com o Terraform, use o google_secure_source_manager_instance recurso.

Acessar uma instância

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

Para criar repositórios na instância é necessário ter o papel de criador de repositórios (roles/securesourcemanager.repoCreator) no projeto da instância e o papel de criador de repositórios de 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 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 da instância. Google CloudPara informações sobre como identificar projetos, consulte Identificar projetos.
    • LOCATION pela região da instância.

  2. Uma tela do OAuth aparece perguntando se você quer conceder acesso sourcemanager.dev à sua Conta do Google.

  3. Clique no botão Permitir.

  4. A interface da Web do Secure Source Manager é aberta. Você pode criar e visualizar repositórios e todos os problemas e solicitações de envio associados na interface da Web.

A seguir