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:
Função de aplicativo SNOWFLAKE.TRUST_CENTER_ADMIN
CREATE APPLICATION PACKAGE
CREATE APPLICATION
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:
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.ymldeve existir na raiz da estrutura de diretórios na área de preparação nomeada onde fica o arquivomanifest.ymldo 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: ''
O arquivo de manifesto tem as seguintes propriedades:
Propriedade
Descrição
Número máximo de caracteres
manifest_versionAtualmente, apenas
2.0é válido.Não aplicável
scanner_packages.idUm 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.nameO nome do pacote de verificadores.
30
scanner_packages.short_descriptionA breve descrição do pacote de verificadores.
150
scanner_packages.descriptionA descrição do pacote de verificadores.
700
scanner_packages.scanners.idUm 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.nameO nome do verificador.
30
scanner_packages.scanners.short_descriptionA descrição curta do verificador.
150
scanner_packages.scanners.descriptionA descrição longa do verificador.
1.500
scanner_packages.scanners.typeO tipo do verificador. Atualmente, apenas
VULNERABILITYé compatível.—
scanner_packages.scanners.callbackA seção de retorno de chamada para o verificador. Todo verificador deve ter uma seção
callbackque especifiqueschema,nameeversion.Não aplicável
scanner_packages.scanners.callback.schemaO 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.nameO 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.sqlsob o esquema especificado emcallback.schema.
Não aplicável
scanner_packages.scanners.callback.versionA 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'
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:
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;
Crie um procedimento armazenado que implemente a lógica do verificador.
O exemplo a seguir cria um procedimento armazenado chamado
scanno esquemasecurity_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 -- $$;
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_idVARCHAR
O identificador do risco.
risk_nameVARCHAR
O nome do risco.
total_at_risk_countNUMBER
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 MBscanner_typeVARCHAR
Atualmente, apenas o tipo de verificador
VULNERABILITYé compatível.risk_descriptionVARCHAR
A descrição do risco.
suggested_actionVARCHAR
Ação sugerida para remediação.
impactVARCHAR
Possíveis consequências de não abordar o risco.
severityVARCHAR
O nível de gravidade do risco. Os valores possíveis são LOW, MEDIUM, HIGH e CRITICAL.
at_risk_entitiesValores 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_POLICYouROW_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:
Crie um arquivo
setup_script.sqlpara 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 chamadatrust_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_rolee, 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;
Os privilégios são necessários para cada verificador no pacote.
Crie um arquivo
manifest.ymlpara 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.ymlpara 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"
Crie um pacote de aplicativos para a extensão seguindo as instruções em Criação de um pacote de aplicativo.
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.
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:
Conceda os privilégios solicitados pela extensão seguindo as instruções em Gerenciar solicitações de acesso usando o Snowsight.
Para conceder a função de aplicativo
trust_center_integration_roleno 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;
Por exemplo, para conceder a função de aplicativo
tc_extension.trust_center_integration_roleao aplicativo SNOWFLAKE, execute o seguinte comando:GRANT APPLICATION ROLE tc_extension.trust_center_integration_role TO APPLICATION snowflake;
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:
Alterne para uma função com a função de aplicativo SNOWFLAKE.TRUST_CENTER_ADMIN concedida a ela.
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_extensionque foi instalada a partir do pacote de aplicativos chamadomy_tc_package, chame o procedimento armazenado:CALL SNOWFLAKE.TRUST_CENTER.REGISTER_EXTENSION( 'APPLICATION PACKAGE', 'my_tc_package', 'tc_extension');
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.
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:
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.
No menu de navegação, selecione Governance & security » Trust Center.
Selecione a guia Manage scanners.
Para visualizar uma lista de extensões disponíveis para sua conta, selecione Extensions.
Selecione a extensão que deseja instalar.
A página da extensão no Snowflake Marketplace será aberta.
Para acessar a listagem, selecione Get.
Opcional: para Application name, digite um nome.
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:
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.
No menu de navegação, selecione Governance & security » Trust Center.
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.
Para ativar um novo pacote de verificadores, siga estas etapas:
Na lista de pacotes de verificadores, selecione o pacote.
Na página do pacote de verificadores, selecione Enable package.
Para conceder os privilégios necessários para o novo pacote de verificadores, selecione Grant.
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;
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.