> 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/es/contexto/memory-stores/add-data/import-from-sql-database/data-sources/snowflake.md).

# Snowflake

Conéctate a un almacén de datos Snowflake en AirOps

{% hint style="info" %}
**Recuerda permitir nuestra dirección IP en la lista permitida `52.71.87.39`**

Si tu base de datos está protegida por un firewall, recuerda permitir el acceso entrante a la dirección IP de AirOps a través del puerto de tu base de datos.
{% endhint %}

## Parámetros básicos de conexión

1. **Identificador de cuenta** - el ID de tu cuenta de Snowflake.
   * Si la URL de tu Snowflake es `https://**[en54071.us-east-2.aws](http://en54071.us-east-2.aws)**.snowflakecomputing.com/`, entonces tu identificador de cuenta es **`en54071.us-east-2.aws`.**
   * También puedes encontrar el ID de tu cuenta de Snowflake escribiendo `CURRENT_ACCOUNT()` en una hoja de trabajo de Snowflake y ejecutándolo.
2. **Usuario** - el usuario de Snowflake con el que AirOps se conectará a la base de datos. La mejor práctica es crear un nuevo usuario para AirOps (instrucciones a continuación), pero se puede usar cualquier usuario con privilegios SELECT. **Los nombres de usuario de Snowflake distinguen entre mayúsculas y minúsculas.**
3. **Almacén** - el almacén de Snowflake al que AirOps se conectará.
4. **Base de datos** - base de datos dentro del almacén de Snowflake anterior.
5. **Rol** (Opcional) - el rol de Snowflake que se usará para la\
   conexión. Si no se proporciona, usaremos el rol\
   defecto del usuario.

## Métodos de autenticación

AirOps admite dos métodos de autenticación para conexiones de Snowflake:

### Autenticación con nombre de usuario y contraseña

**Contraseña** - contraseña del usuario anterior.

### Autenticación con par de claves (recomendado)

La autenticación con par de claves proporciona mayor seguridad y es necesaria cuando MFA está habilitado en tu cuenta de Snowflake.

**Clave privada** - tu clave privada RSA en formato PEM (consulta las instrucciones de configuración a continuación).

**Frase de contraseña de la clave privada** (Opcional) - solo es necesario si tu clave privada está cifrada.

## Configuración de la autenticación con par de claves

### Paso 1: Generar el par de claves

Abre la línea de comandos en una ventana de terminal.

Genera una clave privada. Puedes generar una versión cifrada de la clave privada o una versión no cifrada de la clave privada.

**Para generar una versión no cifrada**, puedes ejecutar uno de los siguientes comandos:

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

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

**Para generar una versión cifrada (recomendado)**, ejecuta el comando:

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

Puedes usar diferentes algoritmos con la opción de línea de comandos -v1. Estos algoritmos usan el algoritmo de cifrado basado en contraseña PKCS#12 y te permiten usar algoritmos de cifrado fuertes como triple DES o RC2 de 128 bits. Puedes usar los siguientes algoritmos de cifrado:

* `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 cifrado más fuertes**, ejecuta el comando:

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

Puedes usar diferentes algoritmos con la opción de línea de comandos -v2. Puedes usar los siguientes algoritmos de cifrado:

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

### Paso 2: Generar la clave pública

Desde la línea de comandos, genera la clave pública haciendo referencia a la versión correcta de la clave privada que generaste. Puedes ejecutar uno de los siguientes comandos:

Si usaste el comando openssl genrsa -out rsa\_key.pem 2048 para crear la clave privada, ejecuta:

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

Si usaste el comando openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa\_key.p8 -nocrypt para crear la clave privada, entonces ejecuta:

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

### Paso 3: Asignar la clave pública al usuario de Snowflake

En una hoja de trabajo de Snowflake, ejecuta el comando:

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

Reemplaza \<USERNAME> con tu nombre de usuario de Snowflake y \<PUBLIC\_KEY> con el contenido de tu archivo de clave pública (excluyendo las líneas -----BEGIN PUBLIC KEY----- y -----END PUBLIC KEY-----).

### Paso 4: Configurar la conexión de AirOps

1. Selecciona "Key Pair Authentication" como tu método de autenticación
2. Copia y pega tu clave privada en el campo "Private Key" (incluye las líneas -----BEGIN PRIVATE KEY----- y -----END PRIVATE KEY-----)
3. Si tu clave privada está cifrada, introduce la frase de contraseña en el campo "Private Key Passphrase"
4. Completa los demás campos de conexión y prueba tu conexión

## Configurar usuario y rol (para nuevos usuarios)

Para añadir una base de datos de Snowflake como fuente de datos en AirOps, usa un usuario existente o crea un usuario con **acceso de lectura** a las tablas, vistas y esquemas a los que te gustaría acceder desde AirOps:

### 1. Crear rol de AirOps

```sql
CREATE ROLE IF NOT EXISTS AIROPS_ROLE COMMENT = "Rol predeterminado de AirOps";
```

### 2. Crear usuario de AirOps y asignar rol

<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 privilegios USAGE al rol de 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/es/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.
