Integração com o Assured OSS para segurança de código

O Assured Open Source Software (Assured OSS) permite que você aumente a segurança do seu código usando os pacotes OSS que o Google usa nos próprios fluxos de trabalho de desenvolvedor. Ao usar o Assured OSS, seus desenvolvedores podem aproveitar a experiência e o conhecimento em segurança que o Google aplica para proteger as próprias dependências de código aberto.

Ao integrar o Assured OSS ao Security Command Center, você pode fazer o seguinte:

  • Escolha entre mais de 3.700 pacotes Java e Python selecionados e mais conhecidos, incluindo projetos comuns de machine learning e inteligência artificial, como TensorFlow, Pandas e Scikit-learn.
  • Configure um proxy seguro para fazer o download de todos os pacotes Java, Python e JavaScript com atestados do Assured OSS, tornando o Google um fornecedor conhecido e confiável.
  • Use as SBOMs e VEX no Assured OSS fornecidas em formatos padrão do setor, como SPDX e CycloneDX, para saber mais sobre seus ingredientes.
  • Aumente a confiança na integridade dos pacotes que você está usando, por meio de uma procedência assinada e inviolável do Google.
  • Reduza o risco de segurança, já que o Google está ativamente verificando, encontrando e corrigindo novas vulnerabilidades em pacotes selecionados.

Antes de começar

Conclua essas tarefas antes de concluir as tarefas restantes nesta página.

Ativar o nível Enterprise do Security Command Center

Verifique se o nível Enterprise do Security Command Center está ativado no nível da organização e se você concluiu as seis primeiras etapas do guia de configuração.

Configurar permissões no nível da organização

É necessário configurar permissões nos níveis da organização e do projeto.

  1. Verifique se você tem os seguintes papéis na organização: Security Center Admin, Organization Admin

    Verificar os papéis

    1. No console do Google Cloud, abra a página IAM.

      Acessar IAM
    2. Selecionar uma organização.
    3. Na coluna Principal, encontre a linha que contém seu endereço de e-mail.

      Caso seu endereço de e-mail não esteja nessa coluna, isso significa que você não tem papéis.

    4. Na coluna Papel da linha com seu endereço de e-mail, verifique se a lista de papéis inclui os papéis necessários.

    Conceder os papéis

    1. No console do Google Cloud, abra a página IAM.

      Acesse o IAM
    2. Selecionar uma organização.
    3. Clique em CONCEDER ACESSO.
    4. No campo Novos participantes, digite seu endereço de e-mail.
    5. Na lista Selecionar um papel, escolha um.
    6. Para conceder outros papéis, clique em Adicionar outro papel e adicione cada papel adicional.
    7. Clique em Save.

Configurar permissões no nível do projeto

  1. Verifique se você tem os seguintes papéis no projeto: Service Usage Admin, Service Account Admin, Project IAM Admin

    Verificar os papéis

    1. No console do Google Cloud, abra a página IAM.

      Acessar IAM
    2. Selecionar um projeto.
    3. Na coluna Principal, encontre a linha que contém seu endereço de e-mail.

      Caso seu endereço de e-mail não esteja nessa coluna, isso significa que você não tem papéis.

    4. Na coluna Papel da linha com seu endereço de e-mail, verifique se a lista de papéis inclui os papéis necessários.

    Conceder os papéis

    1. No console do Google Cloud, abra a página IAM.

      Acesse o IAM
    2. Selecionar um projeto.
    3. Clique em CONCEDER ACESSO.
    4. No campo Novos participantes, digite seu endereço de e-mail.
    5. Na lista Selecionar um papel, escolha um.
    6. Para conceder outros papéis, clique em Adicionar outro papel e adicione cada papel adicional.
    7. Clique em Save.

Configurar a Google Cloud CLI

É possível usar as amostras da CLI do gcloud nesta página de um dos seguintes ambientes de desenvolvimento:

  • Cloud Shell: para usar um terminal on-line com a CLI gcloud já configurada, ative o Cloud Shell.

    Na parte de baixo desta página, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. A inicialização da sessão pode levar alguns segundos.

  • Shell local: para usar a CLI da gcloud em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud.

Configurar o Assured OSS

Console

  1. No console do Google Cloud, acesse a página Visão geral de riscos do Security Command Center.

    Acessar Visão geral de riscos

  2. Verifique se você está visualizando a organização em que ativou o nível Security Command Center Enterprise.

  3. Clique em Ver o guia de configuração.

  4. Clique em Configurar segurança do código.

  5. Selecione uma nova conta de serviço ou as contas de serviço atuais a que você quer adicionar as permissões de software de código aberto do Assured.

  6. Selecione o projeto do Google Cloud em que você quer localizar os recursos do Assured OSS.

  7. Clique em Set up Assured OSS (Configurar o Assured OSS).

    O processo de configuração conclui automaticamente o seguinte:

    • Se selecionado, cria a nova conta de serviço assuredoss@PROJECT_ID.gservicesaccount.com.
    • Atribui o papel de usuário do Assured OSS à conta de serviço designada para usar com o Assured OSS.
    • Atribui o papel de administrador do Assured OSS à conta de usuário conectada para que ela possa configurar o serviço.
    • Ativa a API Assured Open Source Software e, caso ainda não esteja ativada, a API Artifact Registry.
    • Configura o serviço de proxy do Assured OSS em uma instância do Artifact Registry no projeto selecionado. Um repositório é provisionado para cada linguagem (Java, Python e JavaScript). Esses repositórios podem extrair automaticamente pacotes do portfólio selecionado. Se um pacote não estiver disponível como parte do portfólio selecionado, os repositórios vão redirecionar a solicitação para os repositórios canônicos. O serviço de proxy é compatível apenas com a região dos EUA.
    • Concede a você e à conta de serviço permissões para acessar metadados de pacotes e notificações de projetos de propriedade do Google.
  8. Crie uma chave de conta de serviço para cada conta de serviço designada do Assured OSS e faça o download da chave no formato JSON.

  9. Na linha de comando da máquina local, execute o seguinte no arquivo de chave transferido por download para receber a string codificada em base64:

    base64 KEY_FILENAME.json
    

    Substitua KEY_FILENAME.json pelo nome da chave da conta de serviço que você transferiu por download.

    Você precisa da string codificada em base64 ao configurar um repositório remoto para o Assured OSS.

  10. Para fazer o download dos pacotes, use os endpoints que o Assured OSS provisiona para cada idioma. Anote esses endpoints para uso posterior.

    • Java:
      https://us-maven.pkg.dev/PROJECT_ID/assuredoss-java
    • Python:
      https://us-python.pkg.dev/PROJECT_ID/assuredoss-python
    • JavaScript:
      https://us-npm.pkg.dev/PROJECT_ID/assuredoss-javascript

    Substitua PROJECT_ID pelo ID do projeto que você selecionou ao configurar o Assured OSS.

  11. Clique em Seguinte. Configure o Assured OSS com o gerenciador de repositório de artefatos da sua organização, como o JFrog Artifactory ou o Sonatype Nexus.

gcloud

  1. Autentique-se no Google Cloud com uma conta de usuário que você quer usar para ativar o Assured OSS:

    gcloud auth revoke
    gcloud auth application-default revoke
    gcloud auth login
    
  2. Pesquise o projeto em que você quer localizar os recursos do Assured OSS:

    gcloud alpha projects search --query="displayName=PROJECT_NAME"
    

    Substitua PROJECT_NAME pelo nome do projeto.

  3. Defina o projeto em que você quer localizar os recursos do Assured OSS:

    gcloud config set project PROJECT_ID
    

    Substitua PROJECT_ID pelo identificador do projeto.

  4. Conceda papéis à conta de usuário para configurar o Assured OSS:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=user:email@domain.com \
      --role=roles/assuredoss.admin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=user:email@domain.com \
      --role=roles/serviceusage.serviceUsageAdmin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=user:email@domain.com \
      --role=roles/iam.serviceAccountAdmin
    

    Em que email@domain.com é o endereço de e-mail da conta de usuário.

  5. Ativar o Assured OSS no projeto. Ativar o Assured OSS também ativa a API Artifact Registry.

    gcloud services enable assuredoss.googleapis.com
    
  6. Para criar uma nova conta de serviço para o Assured OSS em vez de usar as atuais, siga estas etapas:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
      --description="Service account for using Assured OSS"
      --display-name="Assured OSS service account"
    

    Substitua SERVICE_ACCOUNT_NAME pelo nome da conta de serviço (por exemplo, assuredoss).

  7. Configure as contas de serviço para o Assured OSS:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
      --role roles/assuredoss.user
    

    Substitua:

    • SERVICE_ACCOUNT_NAME: o nome da conta de serviço (por exemplo, assuredoss).
    • PROJECT_ID: o identificador do projeto.
  8. Configure o serviço de proxy do Assured OSS em uma instância do Artifact Registry criando repositórios do Assured OSS. Você precisa criar repositórios para todas as linguagens. O serviço de proxy do Assured OSS que provisiona os repositórios oferece suporte apenas à região dos EUA.

    alias gcurlj='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -X'
    
    gcurlj POST https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories\?repositoryId\=assuredoss-java   -d '{"format": "MAVEN", "mode": "AOSS_REPOSITORY"}'
    
    gcurlj POST https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories\?repositoryId\=assuredoss-javascript   -d '{"format": "NPM", "mode": "AOSS_REPOSITORY"}'
    
    gcurlj POST https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories\?repositoryId\=assuredoss-python   -d '{"format": "PYTHON", "mode": "AOSS_REPOSITORY"}'
    

    Substitua PROJECT_ID pelo ID do projeto que você selecionou ao configurar o Assured OSS.

    Esses repositórios podem extrair pacotes automaticamente do portfólio selecionado. Se um pacote não estiver disponível como parte do portfólio selecionado, os repositórios vão redirecionar a solicitação para os repositórios canônicos.

  9. Crie uma chave de conta de serviço para cada conta de serviço do Assured OSS e faça o download da chave no formato JSON.

  10. Na linha de comando, execute o seguinte no arquivo de chave salvo para receber a string codificada em base64:

    base64 KEY_FILENAME.json
    

    Substitua KEY_FILENAME.json pelo nome da chave da conta de serviço que você transferiu por download.

    Você precisa da string codificada em base64 ao configurar um repositório remoto para o Assured OSS.

  11. Para fazer o download dos pacotes, use os endpoints provisionados pelo Assured OSS para cada idioma. Anote estes endpoints:

    • Java:
      https://us-maven.pkg.dev/PROJECT_ID/assuredoss-java
    • Python:
      https://us-python.pkg.dev/PROJECT_ID/assuredoss-python
    • JavaScript:
      https://us-npm.pkg.dev/PROJECT_ID/assuredoss-javascript

    Substitua PROJECT_ID pelo ID do projeto que você selecionou ao configurar o Assured OSS.

  12. Configure o Assured OSS para fazer o download de pacotes com o gerenciador de repositório de artefatos da sua organização, como JFrog Artifactory ou Sonatype Nexus.

  13. Opcionalmente, veja os pacotes Java, Python e JavaScript disponíveis:

    gcloud auth revoke
    gcloud auth application-default revoke
    gcloud auth login --cred-file=KEY_FILENAME.json
    

    Substitua KEY_FILENAME.json pelo nome da chave da conta de serviço que você transferiu por download.

    export GOOGLE_APPLICATION_CREDENTIALS=KEY_FILENAME.json
    

    Substitua KEY_FILENAME.json pelo nome da chave da conta de serviço que você transferiu por download.

    gcurlj GET "https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-java/packages"
    gcurlj GET "https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-python/packages"
    gcurlj GET "https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-javascript/packages"
    

    Substitua PROJECT_ID pelo ID do projeto que você selecionou ao configurar o Assured OSS.

A seguir