---
metadata:
  - name: generator
    content: Diplodoc Platform v5.63.0
alternate:
  - ru/concepts/secrets-instance/config
  - href: ru/concepts/secrets-instance/config.md
    type: text/markdown
    title: Markdown version
csp:
  - script-src:
      - https://mc.yandex.ru
    img-src:
      - https://mc.yandex.ru
    connect-src:
      - https://mc.yandex.ru
      - wss://mc.yandex.ru
    child-src:
      - 'blob:'
      - https://mc.yandex.ru
    frame-src:
      - 'blob:'
      - https://mc.yandex.ru
    frame-ancestors:
      - 'blob:'
      - https://mc.yandex.ru
canonical: ru/concepts/secrets-instance/config.html
title: Конфигурирование секретов DataLens On-premises
description: >-
  В этом разделе описаны способы настройки секретов для развертывания DataLens
  On-premises.
vcsPath: ru/concepts/secrets-instance/config.md
---

# Конфигурирование секретов DataLens On-premises

Секреты можно задать двумя способами:

1. Через параметры в [файле](../create-instance.md#values-yaml) `values.yaml` (рекомендуется для первичного развертывания).
1. Через внешний [секрет Kubernetes](https://kubernetes.io/docs/concepts/configuration/secret/), указав ссылку в `secrets.ref`.

При использовании скрипта `./init.sh` секреты генерируются автоматически при первом [развертывании](../create-instance.md#deployment) и сохраняются в секретах кластера Kubernetes.


## Пример YAML-конфигурации {#yaml-example}

```yaml
secrets:
  ref: null                              # Ссылка на внешний секрет Kubernetes
  #
  # === RSA-ключи аутентификации (обязательные) ===
  AUTH_TOKEN_PRIVATE_KEY: null           # Генерируется автоматически при первом развертывании
  AUTH_TOKEN_PUBLIC_KEY: null            # Генерируется автоматически при первом развертывании
  AUTH_PROVIDERS_CONFIG: null            # JSON-массив провайдеров (опционально)
  AUTH_ADMIN_PASSWORD: null              # Пароль admin (генерируется автоматически)
  AUTH_CALLBACK_COOKIE_SECRET: null      # Генерируется автоматически
  #
  # === Безопасность ===
  CSRF_SECRET: null                      # Генерируется автоматически
  #
  # === Мастер-токены ===
  AUTH_MASTER_TOKEN: null                # Генерируется автоматически
  US_MASTER_TOKEN: null                  # Генерируется автоматически
  FILE_UPLOADER_MASTER_TOKEN: null       # Генерируется автоматически
  EXPORT_DATA_VERIFICATION_KEY: null     # Генерируется автоматически
  #
  # === Ключи шифрования ===
  CONTROL_API_CRYPTO_KEY: null           # Генерируется автоматически
  #
  # === Docker Registry ===
  DOCKER_CONFIG_JSON: null               # Обязателен при registry.private: true
  #
  # === PostgreSQL ===
  POSTGRES_PASSWORD_ROOT: null           # Генерируется автоматически
  POSTGRES_PASSWORD_US: null             # Генерируется автоматически
  POSTGRES_PASSWORD_COMPENG: null        # Генерируется автоматически
  POSTGRES_PASSWORD_AUTH: null           # Генерируется автоматически
  POSTGRES_PASSWORD_TEMPORAL: null       # Генерируется автоматически
  POSTGRES_PASSWORD_META_MANAGER: null   # Генерируется автоматически
  POSTGRES_PASSWORD_DEMO: null           # Генерируется автоматически
  #
  # === RSA-ключи Temporal (для импорта/экспорта) ===
  TEMPORAL_AUTH_PRIVATE_KEY: null        # Генерируется при включении features.export
  TEMPORAL_AUTH_PUBLIC_KEY: null         # Генерируется при включении features.export
  #
  # === Инфраструктурные компоненты ===
  CLICKHOUSE_PASSWORD: null              # Генерируется автоматически
  REDIS_PASSWORD: null                   # Генерируется автоматически
  S3_ACCESS_KEY_ID: null                 # Генерируется автоматически
  S3_SECRET_ACCESS_KEY: null             # Генерируется автоматически
```

## Генерация RSA-ключей вручную {#rsa-key-generation}

Если требуется сгенерировать RSA-ключи вручную, используйте следующие команды:

```bash
# Генерация приватного ключа (4096 bit)
openssl genpkey -algorithm RSA -pkeyopt "rsa_keygen_bits:4096" -out private.pem

# Извлечение публичного ключа
openssl rsa -in private.pem -pubout -out public.pem

# Просмотр содержимого для вставки в values.yaml
cat private.pem
cat public.pem
```

При указании в `values.yaml` используйте многострочный формат YAML:

```yaml
secrets:
  AUTH_TOKEN_PRIVATE_KEY: |
    -----BEGIN PRIVATE KEY-----
    MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQC...
    ...
    -----END PRIVATE KEY-----
  AUTH_TOKEN_PUBLIC_KEY: |
    -----BEGIN PUBLIC KEY-----
    MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA...
    ...
    -----END PUBLIC KEY-----
```

## Формат DOCKER_CONFIG_JSON {#docker-config-json}

Пример конфигурации для приватного реестра:

```json
{
  "auths": {
    "registry.example.com": {
      "username": "user",
      "password": "password",
      "auth": "base64(user:password)"
    }
  }
}
```

Также обратите внимание на пример в файле `./help/docker-config.example.json`.


## Использование внешнего секрета Kubernetes {#external-secret}

Если секреты уже существуют в кластере Kubernetes, укажите ссылку на секрет:

```yaml
secrets:
  ref: my-existing-secret
```

В этом случае все остальные значения в секции `secrets` будут игнорироваться, и система будет использовать значения из указанного секрета Kubernetes.

Внешний секрет должен содержать все необходимые ключи с соответствующими именами.


## Полезные команды {#commands}

```bash
# Получить пароль администратора
./init.sh --get-admin-password

# Сгенерировать новые RSA-ключи для аутентификации
./init.sh --auth-rsa-gen

# Сгенерировать новые RSA-ключи для Temporal
./init.sh --temporal-rsa-gen

# Указать файл с конфигурацией провайдеров аутентификации
./init.sh --auth-providers-config ./my-auth-config.json

# Создать резервную копию PostgreSQL перед ротацией
./init.sh --dump-postgres

# Проверить статус подов после ротации
./init.sh --kubectl get pods

# Посмотреть логи для диагностики проблем
./init.sh --stern .
```

<!-- source: ru/_includes/clickhouse-disclaimer.md -->
_ClickHouse® является зарегистрированным товарным знаком [ClickHouse, Inc](https://clickhouse.com)._
<!-- endsource: ru/_includes/clickhouse-disclaimer.md -->