> For the complete documentation index, see [llms.txt](https://docs.airops.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.airops.com/docs/pt/contexto/memory-stores/add-data/import-from-sql-database/data-sources/snowflake.md).

# Snowflake

Conecte a um data warehouse Snowflake no AirOps

{% hint style="info" %}
**Lembre-se de adicionar o nosso endereço IP à allowlist `52.71.87.39`**

Se a sua base de dados estiver protegida por uma firewall, lembre-se de permitir o acesso de entrada ao endereço IP da AirOps através da porta da sua base de dados.
{% endhint %}

## Parâmetros Básicos de Ligação

1. **Identificador da Conta** - o ID da sua conta Snowflake.
   * Se o seu URL Snowflake for `https://**[en54071.us-east-2.aws](http://en54071.us-east-2.aws)**.snowflakecomputing.com/`, então o identificador da sua conta é **`en54071.us-east-2.aws`.**
   * Também pode encontrar o ID da sua conta Snowflake escrevendo `CURRENT_ACCOUNT()` numa worksheet do Snowflake e executando-o.
2. **Utilizador** - o utilizador Snowflake com o qual a AirOps se ligará à base de dados. É uma boa prática criar um novo utilizador para a AirOps (instruções abaixo), mas pode ser utilizado qualquer utilizador com privilégios SELECT. **Os nomes de utilizador Snowflake são sensíveis a maiúsculas e minúsculas.**
3. **Armazém** - o armazém Snowflake ao qual a AirOps se ligará.
4. **Base de Dados** - base de dados dentro do armazém Snowflake acima.
5. **Função** (Opcional) - a função Snowflake a utilizar para a\
   ligação. Se não for fornecida, utilizaremos a\
   função predefinida do utilizador.

## Métodos de Autenticação

A AirOps suporta dois métodos de autenticação para ligações Snowflake:

### Autenticação por Nome de Utilizador e Palavra-passe

**Palavra-passe** - palavra-passe para o utilizador acima.

### Autenticação por Par de Chaves (Recomendado)

A autenticação por par de chaves proporciona segurança reforçada e é obrigatória quando a MFA está ativada na sua conta Snowflake.

**Chave Privada** - a sua chave privada RSA em formato PEM (consulte as instruções de configuração abaixo).

**Frase-senha da Chave Privada** (Opcional) - Só é necessário se a sua chave privada estiver encriptada.

## Configurar a Autenticação por Par de Chaves

### Passo 1: Gerar Par de Chaves

Abra a linha de comandos numa janela de terminal.

Gere uma chave privada. Pode gerar uma versão encriptada da chave privada ou uma versão não encriptada da chave privada.

**Para gerar uma versão não encriptada**, pode executar um dos seguintes comandos:

```
openssl genrsa -out rsa_key.pem 2048
```

```
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
```

**Para gerar uma versão encriptada (recomendado)**, execute o comando:

```
openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 <ALGORITHM> -inform PEM -out rsa_key.p8
```

Pode usar diferentes algoritmos com a opção de linha de comandos -v1. Estes algoritmos usam o algoritmo de encriptação baseado em palavra-passe PKCS#12 e permitem-lhe usar algoritmos de encriptação fortes como triple DES ou RC2 de 128 bits. Pode usar os seguintes algoritmos de encriptação:

* `PBE-SHA1-RC2-40`
* `PBE-SHA1-RC4-40`
* `PBE-SHA1-RC2-128`
* `PBE-SHA1-RC4-128`
* `PBE-SHA1-3DES`
* `PBE-SHA1-2DES`

Para usar **algoritmos de encriptação mais fortes**, execute o comando:

```
openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 -inform PEM -out rsa_key.p8
```

Pode usar diferentes algoritmos com a opção de linha de comandos -v2. Pode usar os seguintes algoritmos de encriptação:

* `AES128`
* `AES256`
* `DES3`

### Passo 2: Gerar Chave Pública

Na linha de comandos, gere a chave pública referenciando a versão correta da sua chave privada gerada. Pode executar um dos seguintes comandos:

Se usou o comando openssl genrsa -out rsa\_key.pem 2048 para criar a chave privada, execute:

```
openssl rsa -in rsa_key.pem -pubout -out rsa_key.pub
```

Se usou o comando openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa\_key.p8 -nocrypt para criar a chave privada, então execute:

```
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
```

### Passo 3: Atribuir a Chave Pública ao Utilizador Snowflake

Numa worksheet do Snowflake, execute o comando:

```
ALTER USER <USERNAME> SET RSA_PUBLIC_KEY='<PUBLIC_KEY>';
```

Substitua \<USERNAME> pelo seu nome de utilizador Snowflake e \<PUBLIC\_KEY> pelo conteúdo do ficheiro da sua chave pública (excluindo as linhas -----BEGIN PUBLIC KEY----- e -----END PUBLIC KEY-----).

### Passo 4: Configurar a Ligação da AirOps

1. Selecione "Autenticação por Par de Chaves" como método de autenticação
2. Copie e cole a sua chave privada no campo "Chave Privada" (inclua as linhas -----BEGIN PRIVATE KEY----- e -----END PRIVATE KEY-----)
3. Se a sua chave privada estiver encriptada, introduza a frase-senha no campo "Frase-senha da Chave Privada"
4. Preencha os outros campos de ligação e teste a sua ligação

## Configuração do Utilizador e da Função (para Novos Utilizadores)

Para adicionar uma base de dados Snowflake como Fonte de Dados na AirOps, use um utilizador existente ou crie um utilizador com **acesso de leitura** às tabelas, vistas e esquemas aos quais pretende aceder a partir da AirOps:

### 1. Criar Função da AirOps

```sql
CREATE ROLE IF NOT EXISTS AIROPS_ROLE COMMENT = "Função predefinida da AirOps";
```

### 2. Criar Utilizador da AirOps e Atribuir Função

<pre class="language-sql"><code class="lang-sql"><strong>CREATE USER AIROPS_USER
</strong>	password = '&#x3C;secure-password>'
	first_name = 'AirOps'
	last_name = 'User'
	default_warehouse = '&#x3C;warehouse>' 
	default_namespace = '&#x3C;database>.&#x3C;schema>'
	default_role = AIROPS_ROLE;

GRANT ROLE AIROPS_ROLE TO USER AIROPS_USER;
GRANT ROLE AIROPS_ROLE TO ROLE SYSADMIN;
</code></pre>

### 3. Conceder privilégios de USAGE à função da AirOps

```sql
GRANT USAGE ON WAREHOUSE COMPUTE_WH TO ROLE AIROPS_ROLE;

GRANT USAGE ON DATABASE "<database>" TO ROLE AIROPS_ROLE;

GRANT USAGE ON ALL SCHEMAS IN DATABASE "<database>" TO ROLE AIROPS_ROLE;
GRANT USAGE ON FUTURE SCHEMAS IN DATABASE "<database>" TO ROLE AIROPS_ROLE;

GRANT SELECT ON ALL TABLES IN DATABASE "<database>" TO ROLE AIROPS_ROLE;
GRANT SELECT ON FUTURE TABLES IN DATABASE "<database>" TO ROLE AIROPS_ROLE;

GRANT SELECT ON ALL VIEWS IN DATABASE "<database>" TO ROLE AIROPS_ROLE;
GRANT SELECT ON FUTURE VIEWS IN DATABASE "<database>" TO ROLE AIROPS_ROLE;
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.airops.com/docs/pt/contexto/memory-stores/add-data/import-from-sql-database/data-sources/snowflake.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
