Crea una instancia de Secure Source Manager

Secure Source Manager es un servicio de usuario único. Una sola instancia de Secure Source Manager solo debe incluir usuarios de un cliente deGoogle Cloud , a menos que varias empresas que tengan una relación contractual necesiten usar una sola instancia para colaborar.

Si trabajas con varias empresas y quieres colaborar con ellas en el código fuente, te recomendamos que crees una instancia independiente para cada empresa.

Para crear una instancia con los Controles del servicio de VPC habilitados, consulta Configura Secure Source Manager en un perímetro de Controles del servicio de VPC.

Antes de comenzar

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  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

Roles obligatorios

Para obtener los permisos que necesitas para crear una instancia de Secure Source Manager, pídele a tu administrador que te otorgue el rol de IAM de propietario de la instancia de Secure Source Manager (roles/securesourcemanager.instanceOwner) en el proyecto de Google Cloud .

Los roles de Secure Source Manager no aparecen en la consola de Google Cloud hasta que se hayan otorgado a una principal. Para otorgar un rol de Secure Source Manager por primera vez, consulta Otorga y revoca roles de IAM.

Encriptación de datos

De forma predeterminada, Google Cloud encripta los datos en reposo automáticamente con claves de encriptación administradas por Google. Si tienes requisitos normativos o de cumplimiento específicos relacionados con las claves que protegen los datos, puedes crear instancias de Secure Source Manager encriptadas con claves de encriptación administradas por el cliente (CMEK).

No almacenes datos sensibles en los IDs de instancia ni en los pares clave-valor de las etiquetas, ya que no se encriptan con CMEK.

Si creas tu primera instancia de Secure Source Manager en tu proyecto, debes crear manualmente el agente de servicio de Secure Source Manager ejecutando el siguiente comando:

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

Donde PROJECT_ID es el ID del proyecto en el que crearás tu instancia de Secure Source Manager.

Después de crear el agente de servicio de Secure Source Manager, debes otorgar el rol de agente de servicio de Secure Source Manager (roles/securesourcemanager.serviceAgent) a la principal service-PROJECT-NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com o la creación de la instancia fallará.

Crea una instancia

Para crear una instancia, sigue estos pasos:

gcloud CLI

  1. Ejecuta el siguiente comando para crear una instancia. Es posible que se te solicite autenticarte en gcloud CLI.

    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
    

    Aquí:

    • INSTANCE_ID es el ID permanente de la instancia. El ID debe usar solo letras minúsculas, números y guiones, debe comenzar con una letra y no se puede cambiar después de crearlo.

    • LOCATION es la región en la que deseas crear la instancia. Para obtener información sobre las ubicaciones compatibles, consulta Ubicaciones.

    • PROJECT_ID es el ID del proyecto en el que deseas crear una instancia.

    • -kms-key es una marca opcional. Incluye si deseas usar tu propia clave de encriptación administrada por el cliente (CMEK) para crear la instancia. Las claves de CMEK deben estar en la misma ubicación en la que creas la instancia, pero pueden estar en un proyecto diferente. Omite esta marca si deseas usar la encriptación predeterminada de Google. Si deseas encriptar tus datos con CMEK, reemplaza lo siguiente:

      • KEY_PROJECT por el proyecto en el que creaste la clave.
      • KEY_LOCATION por la ubicación de la clave.
      • KEYRING_NAME con el nombre del llavero de claves.
      • KEY por el nombre de la clave.

    Se inicia una operación de creación de instancias de larga duración. El resultado se ve de la siguiente manera:

    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
    

    Donde projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2e es el OPERATION_NAME.

    La creación de la instancia tarda hasta 60 minutos.

  2. Toma nota del OPERATION_NAME, ya que lo necesitarás para verificar el estado de la operación.

  3. Para verificar el estado de la operación create, ejecuta el siguiente comando:

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

    Reemplaza lo siguiente:

    • OPERATION_NAME por el nombre de la operación de la respuesta del comando create.
    • LOCATION por la región en la que deseas crear la instancia. Para obtener información sobre las ubicaciones compatibles, consulta Ubicaciones.

    Una vez que la instancia esté lista, la respuesta será similar a la siguiente:

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

    Donde test-098765432109.us-central1.sourcemanager.dev es la URL HTML de la instancia.

  4. Copia la URL HTML del comando de verificación de estado que se creó correctamente. Necesitarás esta URL para acceder a la instancia a través de su interfaz web.

API

  1. Ejecuta el siguiente comando para crear una instancia. Es posible que se te solicite autenticarte en gcloud CLI.

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

    Aquí:

    • INSTANCE_ID es el ID permanente de la instancia. El ID debe usar solo letras minúsculas, números y guiones, y debe comenzar con una letra.

    • LOCATION es la región en la que deseas crear la instancia. Para obtener información sobre las ubicaciones compatibles, consulta Ubicaciones.

    • PROJECT_ID es el ID del proyecto en el que deseas crear una instancia.

    • -d es una marca de datos HTTP POST opcional que se puede usar para especificar una clave de CMEK para encriptar tu instancia. Omite esta marca si deseas usar la encriptación predeterminada de Google. Si deseas encriptar tus datos con CMEK, reemplaza lo siguiente:

      • KEY_PROJECT por el proyecto en el que creaste la clave.
      • KEY_LOCATION por la ubicación de la clave.
      • KEYRING_NAME con el nombre del llavero de claves.
      • KEY por el nombre de la clave.

    Se inicia una operación de creación de instancias de larga duración. El resultado se ve de la siguiente manera:

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

    Donde projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2e es el OPERATION_NAME.

    La creación de la instancia tarda hasta 60 minutos.

  2. Copia el OPERATION_NAME.

  3. Para verificar el estado de la operación de creación, ejecuta el siguiente comando:

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

    En el ejemplo anterior, OPERATION_NAME es el nombre de la operación de la respuesta a tu comando de creación.

    Una vez que la instancia esté lista, la respuesta será similar a la siguiente:

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

    Donde test-098765432109.us-central1.sourcemanager.dev es la URL HTML de la instancia.

  4. Copia la URL HTML del comando de verificación de estado que se creó correctamente. Necesitarás esta URL para acceder a la instancia a través de su interfaz web.

Terraform

Para crear una instancia de Secure Source Manager con Terraform, usa el recurso google_secure_source_manager_instance.

Accede a una instancia

Después de crear la instancia, puedes acceder a ella a través de su interfaz web con un navegador.

Para crear repositorios en la instancia, necesitas el rol de creador de repositorios (roles/securesourcemanager.repoCreator) en el proyecto de la instancia y el rol de creador de repositorios de instancias (roles/securesourcemanager.instanceRepositoryCreator) en la instancia de Secure Source Manager.

  1. Para acceder a la instancia de Secure Source Manager a través de su interfaz web, copia la siguiente URL en la barra de direcciones de tu navegador.

    INSTANCE_ID-PROJECT_NUMBER.LOCATION.sourcemanager.dev

    Reemplaza lo siguiente:

    • INSTANCE_ID por el nombre de la instancia.
    • PROJECT_NUMBER por el número de proyecto de Google Cloud de la instancia. Para obtener información sobre cómo identificar proyectos, consulta Identifica proyectos.
    • LOCATION por la región de la instancia.

  2. Aparecerá una pantalla de OAuth en la que se te preguntará si quieres otorgar a sourcemanager.dev acceso a tu Cuenta de Google.

  3. Haz clic en el botón Permitir.

  4. Se abrirá la interfaz web de Secure Source Manager. Puedes crear y ver repositorios, así como todos los problemas y las solicitudes de extracción asociados, desde la interfaz web.

¿Qué sigue?