# Airbyte

Since SnowDDL v0.27, it is possible to natively configure database, user and permissions for Airbyte.

## How to configure Airbyte with SnowDDL?

#### 1) Create custom permission model

Configuration guide for [PERMISSION MODEL](/basic/yaml-configs/permission-model.md)

```yaml
airbyte:
  ruleset: DATABASE_OWNER

  owner_create_grants:
    - STAGE
    - TABLE
    - VIEW

  owner_future_grants:
    STAGE: [OWNERSHIP]
    TABLE: [OWNERSHIP]
    VIEW: [OWNERSHIP]

  read_future_grants:
    STAGE: [READ]
    TABLE: [SELECT, REFERENCES]
    VIEW: [SELECT, REFERENCES]

```

#### 2) Create database

Configuration guide for [DATABASE](/basic/yaml-configs/database.md)

```
is_sandbox: true
permission_model: airbyte
quoted_identifiers_ignore_case: true
```

{% hint style="info" %}
It is recommended to enable `quoted_identifiers_ignore_case` parameter to prevent issues with Airbyte using lower-case characters for internal stage names.
{% endhint %}

#### 3) Create business role

Configuration guide for [BUSINESS ROLE](/basic/yaml-configs/business-role.md)

```
airbyte_owner:
  database_owner:
    - airbyte_db
```

#### 4) Create user

```
ext_airbyte:
  rsa_public_key: ...
  business_roles:
    - airbyte_owner
```

#### 5) Finish configuration in Airbyte GUI

It is highly recommended to change name of schema `airbyte_internal` to UPPER-case, e.g. `AIRBYTE_INTERNAL`. Lower-cased identifiers are not supported by SnowDDL, so you won't be able to set granular access on schema with lower-cased name.&#x20;

## How to grant access to objects created by Airbyte?

You may grant read access on all objects inside Airbyte database by using `database_read` parameter for [BUSINESS ROLE](/basic/yaml-configs/business-role.md).

For example:

```
airbyte_reader:
  database_read:
    - airbyte_db
```

If you want to provide granular on per-schema basis, it requires a bit more work.

1. Explicitly configure schema(s) in Airbyte database by creating corresponding sub-directories with `params.yaml` files inside.
2. Use parameter `schema_read` for [BUSINESS ROLE](/basic/yaml-configs/business-role.md).

For example:

```
airbyte_specific_reader:
  schema_read:
    - airbyte_db.braintree
    - airbyte_db.paypal
```

SnowDDL can only create "schema roles" for schemas which are explicitly defined in config.


---

# Agent Instructions: Querying This Documentation

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

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.snowddl.com/guides/other-guides/airbyte.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
