Uso de extensões do Trust Center

Para integrar soluções com o Trust Center, os parceiros de segurança podem usar o Snowflake Native App Framework para criar aplicativos que fornecem um ou mais pacotes de scanner adicionais. Esses aplicativos são chamados de extensões do Trust Center.

Você pode criar extensões do Trust Center para personalizar soluções de segurança, privacidade, governança e conformidade a fim de melhor atender às suas necessidades e, em seguida, compartilhar as extensões em sua organização. Você também pode criar extensões que podem ser usadas de maneira mais ampla e listá-las para contas Snowflake específicas ou no Snowflake Marketplace. Para obter mais informações, consulte Desenvolver uma extensão do Trust Center.

Os usuários podem descobrir, instalar e gerenciar extensões de terceiros que contêm pacotes de scanner. Para obter mais informações, consulte Instalar extensões do Trust Center.

Requisitos de controle de acesso

Para criar e gerenciar extensões do Trust Center, um usuário com a função ACCOUNTADMIN deve conceder os seguintes privilégios à sua função:

Desenvolver uma extensão do Trust Center

Você pode desenvolver e implantar uma extensão do Trust Center com pacotes de verificadores. Você pode controlar a versão de sua extensão do Trust Center usando o controle de versão do Native App. As extensões também usam o :doc:` modelo de privilégios de Native Apps </developer-guide/native-apps/requesting-about>` para acessar todos os dados ou metadados, como tabelas em uma conta de cliente ou visualizações do uso da conta.

Pré-requisitos

Antes de desenvolver uma extensão com pacotes de verificadores, conclua os seguintes pré-requisitos:

  • Entenda como desenvolver um Native App.

  • Entenda como criar e usar :doc:`procedimentos armazenados </developer-guide/extensibility> ` do Snowflake.

  • Crie ou identifique uma conta Snowflake que possa atuar como uma conta de provedor de extensão. Todo Native App requer uma conta de provedor.

Criar verificadores e um manifesto de pacote de verificadores.

Etapa 1: Criar um arquivo de manifesto de extensão

Crie um arquivo de manifesto que contenha informações e metadados sobre os vários verificadores e pacotes de verificadores:

  1. Crie um arquivo de manifesto.

    O arquivo de manifesto tem os seguintes requisitos:

    • O nome do arquivo de manifesto deve ser tc_extension_manifest.yml.

    • O arquivo tc_extension_manifest.yml deve existir na raiz da estrutura de diretórios na área de preparação nomeada onde fica o arquivo manifest.yml do Native App.

    O arquivo de manifesto lista as propriedades do pacote de verificadores e todos os verificadores incluídos no pacote.

    Use a seguinte definição para o arquivo de manifesto:

    manifest_version: '2.0'
    scanner_packages:
    - id: ''
      name: ''
      short_description: ''
      description: ''
      scanners:
        - id: ''
          name: ''
          short_description: ''
          description: ''
          type: 'VULNERABILITY'
          callback:
            schema: ''
            name: ''
            version: ''
    
    Copy

    O arquivo de manifesto tem as seguintes propriedades:

    Propriedade

    Descrição

    Número máximo de caracteres

    manifest_version

    Atualmente, apenas 2.0 é válido.

    Não aplicável

    scanner_packages.id

    Um identificador exclusivo para o pacote de verificadores, que o provedor deve manter durante toda a vida útil do pacote. Apenas caracteres alfanuméricos ASCII e sublinhados são compatíveis. Todas as configurações que o cliente aplica a um pacote de verificadores são armazenadas de forma persistente no Trust Center usando esse ID.

    25

    scanner_packages.name

    O nome do pacote de verificadores.

    30

    scanner_packages.short_description

    A breve descrição do pacote de verificadores.

    150

    scanner_packages.description

    A descrição do pacote de verificadores.

    700

    scanner_packages.scanners.id

    Um identificador exclusivo para o verificador, que o provedor deve manter durante toda a vida útil do verificador. Apenas caracteres alfanuméricos ASCII e sublinhados são compatíveis. Todas as configurações que os clientes aplicam a um verificador são armazenadas de forma persistente no Trust Center usando esse ID.

    25

    scanner_packages.scanners.name

    O nome do verificador.

    30

    scanner_packages.scanners.short_description

    A descrição curta do verificador.

    150

    scanner_packages.scanners.description

    A descrição longa do verificador.

    1.500

    scanner_packages.scanners.type

    O tipo do verificador. Atualmente, apenas VULNERABILITY é compatível.

    scanner_packages.scanners.callback

    A seção de retorno de chamada para o verificador. Todo verificador deve ter uma seção callback que especifique schema, name e version.

    Não aplicável

    scanner_packages.scanners.callback.schema

    O esquema para o procedimento armazenado. O esquema deve existir no arquivo setup_script.sql. Para obter mais informações sobre este arquivo, consulte Etapa 3: Criar uma extensão.

    Não aplicável

    scanner_packages.scanners.callback.name

    O nome do procedimento armazenado. Os seguintes requisitos se aplicam ao procedimento armazenado:

    • Atualmente, ele deve ser nomeado scan.

    • O nome do procedimento armazenado definido aqui deve existir no arquivo setup_script.sql sob o esquema especificado em callback.schema.

    Não aplicável

    scanner_packages.scanners.callback.version

    A versão do procedimento armazenado. Atualmente, apenas 1.0 é compatível.

    Não aplicável

O exemplo a seguir mostra o conteúdo de um arquivo de manifesto:

manifest_version: '2.0'
scanner_packages:
  - id: 'se_extension'
    name: 'Security Extension'
    short_description: 'Enhances security features and capabilities.'
    description: 'This extension provides additional security features and capabilities to the platform.'
    scanners:
      - id: 'es_check'
        name: 'NA event sharing check'
        short_description: 'Checks for NA event sharing configurations.'
        description: 'This scanner checks for event sharing configurations in the North America region.'
        type: 'VULNERABILITY'
        callback:
          schema: 'security_essentials_na_consumer_es_check'
          name: 'scan'
          version: '1.0'
      - id: 'se_mfa'
        name: 'MFA Required for Users'
        short_description: 'Ensures that MFA is required for all users.'
        description: 'This scanner checks that Multi-Factor Authentication (MFA) is enforced for all users in the system.'
        type: 'VULNERABILITY'
        callback:
          schema: 'security_essentials_mfa_required_for_users_check'
          name: 'scan'
          version: '1.0'
      - id: 'se_client'
        name: 'Client Security'
        short_description: 'Ensures that client security best practices are followed.'
        description: 'This scanner checks that client security best practices are enforced for all clients in the system.'
        type: 'VULNERABILITY'
        callback:
          schema: 'security_essentials_client_security'
          name: 'scan'
          version: '1.0'
      - id: 'cis_1_4'
        name: 'Extension CIS 1_4'
        short_description: 'Checks for compliance with CIS Benchmark 1.4.'
        description: 'This scanner checks for compliance with the CIS Benchmark 1.4, ensuring that security best practices are followed.'
        type: 'VULNERABILITY'
        callback:
          schema: 'security_essentials_cis1_4'
          name: 'scan'
          version: '1.0'
      - id: 'cis_3_1'
        name: 'Extension CIS 3_1'
        short_description: 'Checks for compliance with CIS Benchmark 3.1.'
        description: 'This scanner checks for compliance with the CIS Benchmark 3.1, ensuring that security best practices are followed.'
        type: 'VULNERABILITY'
        callback:
          schema: 'security_essentials_cis3_1'
          name: 'scan'
          version: '1.0'
Copy

Etapa 2: Criar verificadores

Crie um esquema com controle de versão :doc:` </developer-guide/native-apps/update-app-versioned-schema>` e um procedimento armazenado que implemente a lógica do verificador.

Se o pacote de verificadores contiver vários deles, execute estas etapas para cada verificador, usando um esquema com controle de versão diferente para cada um:

  1. Crie um esquema com controle de versão para hospedar a lógica do verificador.

    O nome do esquema deve ser o mesmo que o especificado para o verificador no arquivo de manifesto de extensão.

    Por exemplo, a seguinte instrução SQL cria um esquema com controle de versão chamado security_essentials_mfa_required_for_users:

    CREATE OR ALTER VERSIONED SCHEMA security_essentials_mfa_required_for_users;
    
    Copy
  2. Crie um procedimento armazenado que implemente a lógica do verificador.

    O exemplo a seguir cria um procedimento armazenado chamado scan no esquema security_essentials_mfa_required_for_users:

    CREATE OR REPLACE PROCEDURE security_essentials_mfa_required_for_users.scan(
        run_id VARCHAR)
      RETURNS TABLE(
        risk_id VARCHAR,
        risk_name VARCHAR,
        total_at_risk_count NUMBER,
        scanner_type VARCHAR,
        risk_description VARCHAR,
        suggested_action VARCHAR,
        impact VARCHAR,
        severity VARCHAR,
        at_risk_entities ARRAY
      )
      LANGUAGE SQL
      AS
      $$
        -- Scanning logic --
      $$;
    
    Copy

    Verifique se o procedimento armazenado retorna exatamente uma linha para cada combinação de ID de gravidade e risco.

    A tabela retornada deve ter as seguintes colunas:

    Coluna

    Tipo

    Descrição

    risk_id

    VARCHAR

    O identificador do risco.

    risk_name

    VARCHAR

    O nome do risco.

    total_at_risk_count

    NUMBER

    Número total de entidades em risco para um verificador. Para cenários em que o verificador não detecta nenhuma violação, o valor é 0. O número máximo de entidades em risco é 1.000, e o tamanho máximo combinado de todos os valores em uma matriz é 128 MB

    scanner_type

    VARCHAR

    Atualmente, apenas o tipo de verificador VULNERABILITY é compatível.

    risk_description

    VARCHAR

    A descrição do risco.

    suggested_action

    VARCHAR

    Ação sugerida para remediação.

    impact

    VARCHAR

    Possíveis consequências de não abordar o risco.

    severity

    VARCHAR

    O nível de gravidade do risco. Os valores possíveis são LOW, MEDIUM, HIGH e CRITICAL.

    at_risk_entities

    Valores OBJECT de ARRAY

    Os valores OBJECT na matriz têm a seguinte estrutura:

    [
      {
        "entity_id": <id>,
        "entity_name": "<name>",
        "entity_object_type": "<type>",
        "entity_detail": {
          ..., -- custom data
        }
      },
      ...
    ]
    

    Os valores OBJECT contêm os seguintes pares chave-valor:

    • entity_id – um campo opcional que corresponde ao ID da entidade em risco.

    • entity_name – um campo obrigatório que corresponde ao nome da entidade em risco.

    • entity_object_type – um campo obrigatório que corresponde ao tipo da entidade em risco. Por exemplo: APPLICATION, TASK, NETWORK_POLICY, SECURITY_INTEGRATION, ROLE, PROCEDURE, QUERY, DRIVER, PARAMETER, TABLE, STAGE, DATA_MASKING_POLICY ou ROW_ACCESS_POLICY.

    • entity_detail – dados personalizados que descrevem a entidade.

    O tamanho máximo de uma matriz é 128 MB.

    Para cenários em que o verificador não detecta nenhuma violação, o valor é uma lista vazia.

Etapa 3: Criar uma extensão

Uma extensão agrupa pacotes de verificadores em um Native App, os torna acessíveis ao Trust Center e configura os privilégios para permitir que o Trust Center invoque os procedimentos armazenados necessários.

Para criar uma extensão, siga estas etapas:

  1. Crie um arquivo setup_script.sql para a extensão seguindo as instruções em Criação de um script de configuração.

    No arquivo setup_script.sql, crie uma função de aplicativo chamada trust_center_integration_role.

    Em seguida, conceda os privilégios necessários :ref:` no esquema com controle de versão e no procedimento armazenado <label-trust_center_extensions_create_scanners>` para essa função de aplicativo.

    O exemplo a seguir mostra como criar a função de aplicativo trust_center_integration_role e, em seguida, conceder os privilégios necessários:

    CREATE APPLICATION ROLE IF NOT EXISTS trust_center_integration_role;
    
    GRANT USAGE ON SCHEMA security_essentials_mfa_required_for_users
      TO APPLICATION ROLE trust_center_integration_role;
    
    GRANT USAGE ON PROCEDURE security_essentials_mfa_required_for_users.scan(VARCHAR)
      TO APPLICATION ROLE trust_center_integration_role;
    
    Copy

    Os privilégios são necessários para cada verificador no pacote.

  2. Crie um arquivo manifest.yml para a extensão seguindo as instruções em Criação do arquivo de manifesto para um aplicativo.

    O exemplo a seguir mostra o conteúdo de um arquivo manifest.yml para uma extensão do Trust Center:

    manifest_version: 1
    artifacts:
      setup_script: setup_script.sql
      readme: README.md
    privileges:
      - IMPORTED PRIVILEGES ON SNOWFLAKE DB:
        description: "Required access to SNOWFLAKE.ACCOUNT_USAGE views to scan for vulnerabilities"
    
    Copy
  3. Crie um pacote de aplicativos para a extensão seguindo as instruções em Criação de um pacote de aplicativo.

  4. Registre uma versão do pacote de aplicativos seguindo as instruções em Registrar uma versão.

    Para confirmar se o pacote de aplicativos tem versões registradas, você pode executar SHOW VERSIONS IN APPLICATION PACKAGE.

  5. Crie um aplicativo baseado em uma versão registrada seguindo as instruções em Criar um aplicativo a partir de uma versão ou patch.

    Para confirmar se o objeto do aplicativo foi criado, você pode executar SHOW APPLICATIONS.

Etapa 4: Privilégios Grant

Após instalar a extensão, conceda os privilégios necessários concluindo as seguintes etapas:

  1. Conceda os privilégios solicitados pela extensão seguindo as instruções em Gerenciar solicitações de acesso usando o Snowsight.

  2. Para conceder a função de aplicativo trust_center_integration_role no namespace da extensão ao aplicativo SNOWFLAKE, execute o comando GRANT APPLICATION ROLE:

    GRANT APPLICATION ROLE <extension_name>.trust_center_integration_role
      TO APPLICATION snowflake;
    
    Copy

    Por exemplo, para conceder a função de aplicativo tc_extension.trust_center_integration_role ao aplicativo SNOWFLAKE, execute o seguinte comando:

    GRANT APPLICATION ROLE tc_extension.trust_center_integration_role
      TO APPLICATION snowflake;
    
    Copy

Etapa 5: Registrar a extensão

Você pode registrar ou cancelar o registro de uma extensão chamando os seguintes procedimentos armazenados:

Para registrar uma extensão no Trust Center, conclua as seguintes etapas:

  1. Alterne para uma função com a função de aplicativo SNOWFLAKE.TRUST_CENTER_ADMIN concedida a ela.

  2. Chame o procedimento armazenado SNOWFLAKE.TRUST_CENTER.REGISTER_EXTENSION.

    Para ver detalhes sobre a extensão, você pode executar o comando SHOW APPLICATIONS. O pacote de aplicativos ou o identificador da listagem está na coluna source.

    Por exemplo, para registrar uma extensão chamada tc_extension que foi instalada a partir do pacote de aplicativos chamado my_tc_package, chame o procedimento armazenado:

    CALL SNOWFLAKE.TRUST_CENTER.REGISTER_EXTENSION(
      'APPLICATION PACKAGE',
      'my_tc_package',
      'tc_extension');
    
    Copy

    Você pode exibir informações sobre suas extensões registradas consultando Exibição EXTENSIONS.

    Nota

    Para cancelar o registro de uma extensão, chame o procedimento armazenado SNOWFLAKE.TRUST_CENTER.DEREGISTER_EXTENSION.

  3. Confirme se o pacote de verificadores fornecido pela extensão agora está na lista de pacotes do Trust Center seguindo as instruções em Como consultar os pacotes de verificadores disponíveis.

Etapa 6: Testar a extensão

Após conceder os privilégios e habilitar o pacote de verificadores, teste a extensão e examine os resultados gerados pelo verificador consultando a exibição SNOWFLAKE.TRUST_CENTER.FINDINGS. Se a execução de um verificador falhar, você pode verificar ERROR_CODE e ERROR_MESSAGE para depurar a falha.

Você também pode monitorar dados de telemetria para extensões do Trust Center usando as exibições no esquema DATA_SHARING_USAGE. Por exemplo, você pode encontrar o número de instâncias instaladas da extensão consultando a Exibição APPLICATION_STATE e pode monitorar o uso da extensão pelo consumidor consultando a Exibição LISTING_ACCESS_HISTORY.

Instalar extensões do Trust Center

Você pode descobrir, instalar e gerenciar extensões de terceiros que contêm pacotes de verificadores.

Instalar e gerenciar pacotes de verificadores de terceiros

Etapa 1: Descobrir e instalar extensões

Você pode descobrir e instalar uma extensão do Trust Center que foi publicada no Snowflake Marketplace ou compartilhada usando listagens privadas. As extensões do Trust Center podem conter um ou mais pacotes de verificadores.

Para descobrir e instalar uma extensão, siga estas etapas:

  1. Entre no Snowsight.

  2. Alterne para uma função que tenha recebido a função de aplicativo SNOWFLAKE.TRUST_CENTER_ADMIN.

    Para obter mais informações sobre a concessão dessa função, consulte Privilégios obrigatórios.

  3. No menu de navegação, selecione Governance & security » Trust Center.

  4. Selecione a guia Manage scanners.

  5. Para visualizar uma lista de extensões disponíveis para sua conta, selecione Extensions.

  6. Selecione a extensão que deseja instalar.

    A página da extensão no Snowflake Marketplace será aberta.

  7. Para acessar a listagem, selecione Get.

  8. Opcional: para Application name, digite um nome.

  9. Para instalar a extensão, selecione Get.

Quando a instalação for concluída, uma notificação do Snowsight será exibida e um e-mail será enviado para o endereço de e-mail associado à sua conta.

Para obter mais informações sobre como instalar Native Apps, consulte Usar e gerenciar Snowflake Native Apps como um consumidor.

Etapa 2: Gerenciar os novos pacotes de verificadores

Ao instalar uma extensão, você pode instalar um ou mais pacotes de verificadores. Para visualizar os pacotes de verificadores recém-instalados, siga estas etapas:

  1. Entre no Snowsight.

  2. Alterne para uma função que tenha recebido a função de aplicativo SNOWFLAKE.TRUST_CENTER_ADMIN.

    Para obter mais informações sobre a concessão dessa função, consulte Privilégios obrigatórios.

  3. No menu de navegação, selecione Governance & security » Trust Center.

  4. Selecione a guia Manage scanners.

    Na lista de pacotes de verificadores, as seguintes informações são exibidas para cada novo pacote:

    • NAME – o nome do novo pacote de verificadores.

    • SOURCE – o nome da extensão que você instalou.

    • SCANNERS – o número de verificadores ativados e desativados no pacote.

    • STATUS – o status do pacote de verificadores. Por padrão, os novos pacotes de verificadores instalados ficam desativados.

  5. Para ativar um novo pacote de verificadores, siga estas etapas:

    1. Na lista de pacotes de verificadores, selecione o pacote.

    2. Na página do pacote de verificadores, selecione Enable package.

    3. Para conceder os privilégios necessários para o novo pacote de verificadores, selecione Grant.

    4. Selecione Enable.

    Repita essas etapas para cada novo pacote de verificadores que você deseja habilitar.

Você pode gerenciar o novo pacote de verificadores da mesma forma que gerencia outros pacotes de verificadores no Trust Center. Por exemplo, você pode agendar ou desabilitar o novo pacote de verificadores. Para obter mais informações, consulte Gerenciamento de pacotes de verificadores.

Você pode gerenciar os verificadores no novo pacote de verificadores da mesma forma que gerencia outros verificadores. Por exemplo, você pode habilitar, desabilitar ou agendar um verificador. Para obter mais informações, consulte Gerenciamento de verificadores.

Você também pode monitorar e gerenciar o Native App associado à extensão diretamente. Para obter mais informações, consulte Gerenciamento de aplicativos.

Você pode visualizar as descobertas geradas pelos pacotes de verificadores instalados com a extensão consultando a exibição SNOWFLAKE.TRUST_CENTER.FINDINGS. Por exemplo, a consulta a seguir retorna as descobertas dos pacotes de verificadores instalados com uma extensão que tem um extension_id de 4486988721:

SELECT * FROM snowflake.trust_center.findings WHERE extension_id = 4486988721;
Copy

Para encontrar os identificadores das extensões registradas, consulte Exibição EXTENSIONS.

Para obter mais informações sobre as descobertas do Trust Center, consulte Resultados e Consulta aos riscos de segurança.

Solução de problemas de instalação e registro de extensões

Se uma consulta na exibição SNOWFLAKE.TRUST_CENTER.FINDINGS retornar FAILED na coluna COMPLETION_STATUS, a execução do verificador falhou. Um possível motivo para a falha do verificador é que a extensão não recebeu os privilégios necessários. Verifique se a extensão recebeu os privilégios descritos em Etapa 4: Privilégios Grant.

Depois de conceder os privilégios necessários, execute o pacote de verificadores novamente para gerar novas descobertas. Se uma consulta na exibição SNOWFLAKE.TRUST_CENTER.FINDINGS ainda retornar FAILED na coluna COMPLETION_STATUS, entre em contato com o Suporte Snowflake.