Crear una instancia de Secure Source Manager para usarla con identidades federadas

Consulta cómo crear una instancia de Secure Source Manager que use Workforce Identity Federation con un proveedor de identidades externo.

Para obtener más información sobre la federación de identidades de Workforce, consulta Federación de identidades de Workforce.

Para obtener información sobre las limitaciones de la federación de identidades de Workforce en Secure Source Manager, consulte Federación de identidades: productos y limitaciones.

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

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.

Antes de empezar

  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. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  6. Para inicializar gcloud CLI, ejecuta el siguiente 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. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  11. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  12. Encriptado de datos

    De forma predeterminada, Google Cloud encripta automáticamente los datos en reposo medianteGoogle-owned and Google-managed encryption keys. Si tienes requisitos de cumplimiento o normativos específicos relacionados con las claves que protegen tus datos, puedes crear instancias de Secure Source Manager cifradas con claves de cifrado gestionadas por el cliente (CMEK).

    No almacenes datos sensibles en IDs de instancia ni en pares clave-valor de etiquetas, ya que no están cifrados con CMEK.

    Si vas a crear 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 services identity create \
        --service=securesourcemanager.googleapis.com \
        --project=PROJECT_ID
    

    En este caso, PROJECT_ID es el ID del proyecto en el que creas tu instancia de Secure Source Manager.

    Después de crear la cuenta de servicio por producto y por proyecto (P4SA), debes asignar el rol Agente de servicio de Secure Source Manager (roles/securesourcemanager.serviceAgent) al principal service-PROJECT-NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com, ya que, de lo contrario, no se podrá crear la instancia.

    Configurar Workforce Identity Federation

    Antes de crear una instancia, debes configurar un grupo y un proveedor de federación de identidades de los trabajadores.

    1. Crea un grupo de Workforce Identity Federation.

    2. Configura tu proveedor de grupos de identidades de carga de trabajo con las siguientes asignaciones de atributos:

      • google.subject
      • google.email

    Crear una instancia

    gcloud

    Antes de usar cualquiera de los datos de los comandos que se indican a continuación, haz las siguientes sustituciones:

    • INSTANCE_ID: el nombre de la instancia que quieres crear.
    • LOCATION: la región en la que quieres crear la instancia. Para obtener información sobre las ubicaciones admitidas, consulta Ubicaciones.
    • PROJECT_ID: el ID del proyecto en el que quieres crear una instancia.

    Ejecuta el siguiente comando:

    Linux, macOS o 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

    Se inicia una operación de creación de instancias de larga duración. La salida tiene este aspecto:

      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.

    Anota el OPERATION_NAME, ya que lo necesitarás para comprobar el estado de la operación.

    La creación de la instancia puede tardar hasta 60 minutos.

    API

    Antes de ejecutar este comando, sustituye los siguientes valores:

    • INSTANCE_ID: el nombre de la instancia que quieras crear.
    • LOCATION: la región en la que quieres crear la instancia. Para obtener información sobre las ubicaciones admitidas, consulta Ubicaciones.
    • PROJECT_ID: el ID del proyecto en el que quieres crear una instancia.

    Ejecuta el siguiente 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}}"
    
    

    Se inicia una operación de creación de instancias de larga duración. La salida es similar a la siguiente:

    {
    "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 ejemplo de salida incluye los siguientes valores:

    • OPERATION_NAME: el nombre de la operación. Por ejemplo, projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2e.
    • PROJECT_ID: el Google Cloud proyecto.
    • LOCATION: la región en la que se encuentra la instancia.

    Anota el OPERATION_NAME, ya que lo necesitarás para comprobar el estado de la operación.

    La creación de la instancia puede tardar hasta 60 minutos.

    Terraform

    En el siguiente ejemplo se crea una instancia de Secure Source Manager con la federación de identidades de Workforce habilitada:

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

    Comprobar el estado de la operación

    gcloud

    Antes de usar cualquiera de los datos de los comandos que se indican a continuación, haz las siguientes sustituciones:

    • OPERATION_NAME: el nombre de la operación de la respuesta del comando create.
    • LOCATION: la región de la instancia.

    Ejecuta el siguiente comando:

    Linux, macOS o 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

    Cuando la instancia esté lista, la respuesta tendrá un aspecto similar al 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/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"
        }
      }
    

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

    API

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • OPERATION_NAME: el nombre de la operación de la respuesta del comando create.

    Método HTTP y URL:

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

    Para enviar tu solicitud, despliega una de estas opciones:

    Cuando la instancia esté lista, la respuesta tendrá un aspecto similar al 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": "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
        }
      }
    

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

    Copia la URL HTML de la respuesta de estado de comprobación correcta. Necesitas esta URL para acceder a la instancia a través de su interfaz web.

    Acceder a la instancia

    Una vez creada la instancia, puedes acceder a ella a través de su interfaz web con un navegador.

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

      INSTANCE_ID-PROJECT_NUMBER.LOCATION.sourcemanager.dev

      Haz los cambios siguientes:

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

      Aparecerá una pantalla de OAuth en la que se te pedirá el nombre de tu proveedor.

    2. Introduce el nombre de tu proveedor de identidades de la plantilla en el siguiente formato:

      locations/global/workforcePools/POOL_ID/providers/PROVIDER_ID
      

      Haz los cambios siguientes:

      • POOL_ID con el ID de tu grupo de Workforce Identity Federation.
      • PROVIDER_ID con el ID de tu proveedor de Workforce Identity Federation.

      Para obtener más información sobre los grupos y proveedores de la federación de identidades de los empleados, consulta Gestionar grupos y proveedores de la federación de identidades de los empleados.

      Se te pedirá que inicies sesión con las credenciales de tu proveedor.

    3. Inicia sesión con las credenciales de tu proveedor.

    4. Se abrirá la interfaz web de Secure Source Manager. Desde aquí, puedes crear y ver repositorios, incidencias y solicitudes de extracción.

      Debes volver a iniciar sesión a través de la interfaz web después de que caduque la duración de la sesión de tu grupo de federación de identidades de la plantilla.

    Crear la configuración de inicio de sesión de la CLI de gcloud

    Para autenticarte con las credenciales de tu grupo de identidades de empleados en tu instancia de Secure Source Manager mediante comandos de la CLI de gcloud o comandos de Git, debes crear una configuración de inicio de sesión con tu grupo de identidades de empleados.

    Para crear una configuración de inicio de sesión de un grupo de identidades de Workforce, sigue las instrucciones de Obtener tokens de corta duración para la federación de identidades de Workforce para crear un inicio de sesión basado en navegador con la CLI de gcloud.

    Una vez que te hayas autenticado, podrás usar comandos de Git para interactuar con tu instancia de Secure Source Manager. Para empezar a usar Git, consulta el artículo Usar la gestión de código fuente de Git.

    Siguientes pasos