Spec-Zone.ru › MySQL 9.2

8.4.4.8 Использование компонента AWS Keyring component_keyring_aws

Примечание

component_keyring_aws — это расширение, включенное в MySQL Enterprise Edition, коммерческий продукт. Чтобы узнать больше о коммерческих продуктах, посетите https://www.mysql.com/products/.

Компонент AWS Keyring предназначен для замены плагина AWS Keyring, который теперь устарел. См. Миграция с плагина AWS keyring.

Компонент keyring хранит данные keyring в зашифрованном, защищенном паролем файле, локальном для хоста сервера.

component_keyring_aws поддерживает функции, составляющие стандартный интерфейс службы MySQL Keyring. Операции keyring, выполняемые этими функциями, доступны в операторах SQL, как описано в разделе 8.4.4.13 «Общие функции управления ключами keyring».

Пример:

SELECT keyring_key_generate('MyKey', 'AES', 32);
SELECT keyring_key_remove('MyKey');

Сведения о характеристиках допустимых значений ключей, поддерживаемых component_keyring_aws, см. в разделе 8.4.4.11 «Поддерживаемые типы и длины ключей keyring».

Чтобы использовать component_keyring_aws для управления хранилищем ключей, необходимо:

  1. Создать манифест, указывающий серверу загрузить component_keyring_aws, как описано в разделе 8.4.4.2 «Установка компонента keyring».

    Для component_keyring_aws содержимое файла манифеста показано здесь:

    {
      "components": "file://component_aws_keyring"
    }
    
  2. Создать файл конфигурации для component_keyring_aws, как описано в Конфигурация компонента AWS Keyring.

Компонент AWS keyring поддерживает два режима аутентификации: простой и родной, определяемые значением параметра aws_authentication.mode, указанного в component_keyring_aws.cnf. Этот параметр обязателен. Конфигурацию компонента для поддержки каждого из этих режимов можно найти в режиме простой аутентификации и режиме родной аутентификации соответственно.

  • Конфигурация компонента AWS Keyring

  • Режим простой аутентификации

  • Режим родной аутентификации

  • Миграция с плагина AWS keyring

Конфигурация компонента AWS Keyring

При инициализации component_keyring_aws считывает файл конфигурации компонента ~/.aws/component_keyring_aws.cnf (Linux и MacOS) или %USERPROFILE%.aws\component_keyring_aws.cnf (Windows). Вы можете переопределить это, задав переменную среды AWS_CONFIG_FILE.

В некоторых случаях дополнительная информация может быть прочитана из файла конфигурации AWS, файла с учетными данными или из обоих. Эти файлы описаны ниже в этом разделе.

Если component_keyring_aws не может найти файл конфигурации, возникает ошибка, и компонент не может инициализироваться.

Файл конфигурации компонента component_keyring_aws.cnf должен иметь допустимый формат JSON. На следующей таблице показаны поддерживаемые в этом файле элементы конфигурации:

Таблица 8.31 Элементы конфигурации component_keyring_aws.cnf

Таблица 8.31 Элементы конфигурации component_keyring_aws.cnf
Параметр Родитель Описание Допустимо Обязательно Значение по умолчанию Допустимые значения
cmk_id — Идентификатор Customer Master Key (CMK), полученный с сервера AWS KMS — Да — —
data_file — Расположение файла хранения компонента в формате JSON — Да — —
cache_keys — true: Ключи кэшируются в памяти в виде открытого текста; false: Ключи дешифруются при обращении — Нет false true, false
mode aws_authentication Режим аутентификации AWS — Да — native, simple
profile aws_authentication Имя профиля AWS, используемого для родной аутентификации AWS Когда aws_authentication.mode равен native Нет default —
region aws_authentication Регион AWS Когда aws_authentication.mode равен simple Да, когда aws_authentication.mode равен simple — —
access_key_id aws_authentication Идентификатор ключа доступа AWS Когда aws_authentication.mode равен simple Да, когда aws_authentication.mode is simple — —
access_key_secret aws_authentication Секретный ключ доступа AWS Когда aws_authentication.mode равен simple Да, когда aws_authentication.mode is simple — —
connect_timeout_ms aws_connection Таймаут соединения сокета Нет 1000 —
host aws_connection.proxy Хост прокси-сервера — Нет — —
port aws_connection.proxy Порт прокси-сервера — Нет — —
user aws_connection.proxy Имя пользователя прокси-сервера — Нет — —
password aws_connection.proxy Пароль пользователя прокси-сервера — Нет — —
read_only — Если true, операции по изменению keyring запрещены — Нет false true, false

Параметры файла конфигурации компонента, которые не являются допустимыми, игнорируются. Например, aws_authentication.access_key_id и aws_authentication.access_key_secret не оказывают никакого влияния, когда aws_authentication.mode равно native.

Администратор базы данных несет ответственность за создание файлов конфигурации и за обеспечение правильности их содержимого. При возникновении ошибки происходит сбой запуска сервера; администратор должен исправить любые проблемы, указанные в диагностических сообщениях в журнале ошибок сервера.

Важно

Любой файл конфигурации, хранящий пароль, должен иметь ограниченный режим доступа и быть доступен только учетной записи, используемой для запуска сервера MySQL.

С учетом вышеперечисленных элементов файла конфигурации для настройки component_keyring_aws создайте файл конфигурации компонента с именем component_keyring_aws.cnf в указанной ранее директории.

Также требуется файл данных keyring для чтения/записи в формате JSON, расположение которого определяется элементом конфигурации data_file; следующие инструкции предполагают, что такой файл существует по адресу /usr/local/mysql/keyring.json. Пример его содержимого показан здесь:

{
  "version":"1.0","elements":
    [
      {
        "user":"mary@%",
        "data_id":"key0",
        "data_type":"AES",
        "data":"0102010078865A35D86559D92C3124146819057E927382E061F6EA7613DF2B9B
E72FB0E62C01A1CF92B96934CB08D42D231CF6828A420000006E306C06092A864886F70D010706A0
5F305D020100305806092A864886F70D010701301E060960864801650304012E3011040C19F809F2
7900EACEF99DE2B4020110802BEDA406610AF033504B601C5EC937EFB9F38BB631F68856FF7FA81E
637FCC400BA35900929E99E628E1B3E7",
        "extension":[]
      },
      {
        "user":"mary@%",
        "data_id":"key1",
        "data_type":"AES",
        "data":"0102010078865A35D86559D92C3124146819057E927382E061F6EA7613DF2B9B
E72FB0E62C017CAA36B2F756892C3AFCAA074A13E655000001043082010006092A864886F70D0107
06A081F23081EF0201003081E906092A864 886F70D010701301E060960864801650304012E30110
40CCDECB095F68DE68BC331A0730201108081BB52EF64775CCE3DD47ADD8C274A297EB1A6E988085
C0036D0AAE64DE50BB7D5AC020A12BF70",
        "extension":[]
      },
      {
        "user":"john@%",
        "data_id":"key2",
        "data_type":"AES",
        "data":"0102010078865A35D86559D92C3124146819057E927382E061F6EA7613DF2B9B
E72FB0E62C01BB9CC22B82E3DB50C76FD855DE0CB305000001043082010006092A864886F70D0107
06A081F23081EF0201003081E906092A864886F70D010701301E060960864801650304012E301104
0C778A6EDBA93A1FF27D82F5340201108081BB809B9599C191BF0DF1F7721DB2915F7A02A5928981
BF9264D9B76BE41046C3B5AF60006F4A",
        "extension":[]
        }
    ]
}
Примечание

Каждое из показанных значений data состоит из одной строки; здесь значения были переведены для соответствия размеру отображения.

Операции keyring являются транзакционными: component_keyring_aws использует резервный файл во время операций записи, чтобы гарантировать возможность возврата к исходному файлу в случае сбоя операции. Резервный файл имеет то же имя, что и файл данных, с добавленным суффиксом .backup.

Файлы конфигурации component_keyring_aws не должны располагаться в каталоге данных сервера MySQL.

Вы также должны выбрать пароль.

Режим простой аутентификации

Этот режим обеспечивает простоту использования, когда не требуются более сложные механизмы AWS. (Это также упрощает обновление с устаревшего плагина keyring AWS до компонента; см. Миграция с плагина keyring AWS.) Файлы config и credentials в этом случае не используются; конфигурация считывается только из глобального файла component_keyring_aws.cnf. Для активации режима простой аутентификации установите значение aws_authentication.mode в этом файле в simple.

В простом режиме компонент использует идентификатор ключа доступа и секретный ключ, полученные от AWS, которые также заданы в файле component_keyring_aws.cnf, в качестве значений параметров конфигурации aws_authentication.access_key_id и aws_authentication.access_key_secret. Кроме того, необходимо указать регион с помощью aws_authentication.region.

Здесь показано содержимое примера файла конфигурации component_keyring_aws.cnf, соответствующего требованиям для активации режима простой аутентификации:

{
  "cmk_id": "arn:aws:kms:us-east-1:79566666666:key/d0111111-1111-1111-1111-999999999abd",
  "data_file": "/usr/local/mysql/keyring.json",
  "cache_keys": "true",
  "aws_authentication":
  {
    "mode": "simple",
    "region": "us-east-1",
    "access_key_id": "wwwwwwwwwwwwwEXAMPLE",
    "access_key_secret": "xxxxxxxxxxxxx/yyyyyyy/zzzzzzzzEXAMPLEKEY"
  }
}
Режим аутентификации по умолчанию

Когда aws_authentication.mode имеет значение native, компонент AWS keyring использует стандартный механизм конфигурации аутентификации AWS (см. AWS SDKs и инструменты: Конфигурация) и профиль AWS, указанный в файле конфигурации компонента. Источником данных учетных данных AWS в этом случае является цепочка провайдеров по умолчанию для учетных данных AWS (см. AWS SDKs и инструменты: Стандартизированные провайдеры учетных данных).

Активация режима аутентификации по умолчанию для компонента AWS Keyring более сложная, но включает следующие преимущества:

  • Соответствие стандартному поведению клиентов AWS

  • Поддержка методов конфигурации аутентификации, отличных от хранения долгосрочных секретов в одном файле с другими параметрами конфигурации.

  • Возможность использовать роль, подключенную к контейнеру или вычислительному узлу AWS, что повышает безопасность.

  • Более гибкая конфигурация, так как доступен более широкий набор параметров, таких как таймауты, проксирование и использование CA, чем в альтернативном режиме.

Для активации режима аутентификации по умолчанию AWS значение aws_authentication.mode в файле component_keyring_aws.cnf должно быть установлено в native, как показано здесь:

{
  "cmk_id": "arn:aws:kms:us-east-1:79566666666:key/d0111111-1111-1111-1111-999999999abd",
  "data_file": "/usr/local/mysql/keyring.json",
  "cache_keys": true,
  "aws_authentication":
  {
    "mode": "native"
  }
}

Конфигурация компонента для режима аутентификации по умолчанию AWS основана на цепочке провайдеров учетных данных. Каждый провайдер использует разный источник учетных данных; возможные источники включают файлы, переменные среды и внешние службы. Провайдеры учетных данных вызываются в порядке, указанном в цепочке провайдеров по умолчанию, описанной в следующих нескольких абзацах.

Цепочка провайдеров учетных данных по умолчанию. Цепочка провайдеров учетных данных состоит из одного или нескольких провайдеров учетных данных. Каждый такой провайдер предоставляет учетные данные, взятые из разных источников. Провайдеры вызываются до тех пор, пока не будут предоставлены и собраны учетные данные для дальнейшего использования. Цепочка по умолчанию состоит из провайдеров учетных данных, перечисленных ниже, вместе с учетными данными, предоставляемыми каждым из них:

  • EnvironmentAWSCredentialsProvider: Ключи доступа AWS, взятые из переменных среды (см. AWS SDKs и инструменты: Ключи доступа AWS для подробностей). Это удобно в средах разработки или других краткосрочных средах, но не рекомендуется для производства.

  • ProfileConfigFileAWSCredentialsProvider: Ключи доступа AWS, взятые из файла учетных данных *раздел по умолчанию (см. AWS SDKs и инструменты: Ключи доступа AWS). Это рекомендуется для MySQL-серверов, работающих вне AWS.

  • ProcessCredentialsProvider: Ключи доступа AWS, взятые из вывода внешней команды, указанной параметром конфигурации AWS credential_process. Вывод этой команды должен быть в формате JSON (см. AWS SDKs и инструменты: Провайдер учетных данных процесса).

  • STSAssumeRoleWebIdentityCredentialsProvider: Набор временных учетных данных безопасности для определенной роли (см. AWS SDKs и инструменты: Провайдер учетных данных для принятия роли).

  • SSOCredentialsProvider: Учетные данные из AWS IAM Identity Center (см. AWS SDKs и инструменты: Провайдер учетных данных IAM Identity Center).

  • TaskRoleCredentialsProvider: Учетные данные для использования в контейнере AWS ECS (см. AWS SDKs и инструменты: Роль задачи Amazon ECS). Это рекомендуется, когда MySQL-сервер работает внутри контейнера AWS ECS.

  • InstanceProfileCredentialsProvider: Учетные данные, загруженные из службы метаданных экземпляра Amazon EC2 (IMDS) (см. AWS SDKs и инструменты: Провайдер учетных данных IMDS). Это рекомендуется, когда MySQL-сервер работает на узле AWS EC2.

Для использования аутентификации по умолчанию AWS, aws_authentication.mode должно быть установлено на native в файле component_keyring_aws.cnf, как показано здесь:

{
  "cmk_id": "arn:aws:kms:us-east-1:79566666666:key/d0111111-1111-1111-1111-999999999abd",
  "data_file": "/usr/local/mysql/keyring.json",
  "cache_keys": true,
  "aws_authentication":
  {
    "mode": "native"
  }
}

Файл конфигурации AWS (config) использует формат INI, аналогичный используемому в файле конфигурации MySQL Server my.cnf. Можно указать раздел этого файла для чтения, установив aws_authentication.profile. Например, установка aws_authentication.profile на значение mysql заставит компонент читать раздел [mysql] файла config, как показано здесь:

{
  "cmk_id": "arn:aws:kms:us-east-1:79566666666:key/d0111111-1111-1111-1111-999999999abd",
  "data_file": "/usr/local/mysql/keyring.json",
  "cache_keys": true,
  "aws_authentication":
  {
    "mode": "native",
    "profile": "mysql"
  }
}

Если aws_authentication.profile не указано, компонент пытается прочитать раздел файла config с меткой [default].

Компонент AWS keyring также поддерживает файл AWS credentials в качестве источника учетных данных для провайдера ProfileConfigFileAWSCredentialsProvider, как описано ниже в разделе об аутентификации по умолчанию. Расположение этого файла определяется так же, как и файлов component_keyring_aws.cnf и config. Чтобы переопределить значение по умолчанию для файла credentials (%USERPROFILE%\.aws\credentials для Windows, ~/.aws/credentials for Linux or MacOS), установите переменную среды AWS_SHARED_CREDENTIALS_FILE в нужное расположение.

Миграция с плагина keyring AWS

Для миграции с плагина AWS keyring на компонент AWS keyring необходимо выполнить следующие шаги:

  1. Создайте эквивалентную конфигурацию для компонента:

    1. Создайте локальный или глобальный манифестный файл mysqld.my (см. Раздел 8.4.4.2, «Установка компонента keyring»). Содержимое файла должно соответствовать показанному здесь:

      {
        "components": "file://component_keyring_aws"
      }
      
    2. Создайте файл конфигурации компонента component_keyring_aws.cnf, как описано в Разделе 8.4.4.4, «Использование компонента keyring_file для хранения ключей» (в примере для component_keyring_file). Также обратите внимание на инструкции, предоставленные для раздела простой конфигурации. В частности, значение параметра конфигурации cmk_id, используемого компонентом, должно быть установлено в значение keyring_aws_cmk_id, используемого плагином; аналогично, значение параметра aws_region должно быть установлено в значение keyring_aws_region. Например:

      {
        "cmk_id": "arn:aws:kms:us-east-1:79566666666:key/d0111111-1111-1111-1111-999999999abd",
        "data_file": "/usr/local/mysql/keyring.json",
        "cache_keys": true,
        "aws_authentication":
        {
           "mode":"simple",
           "region": "us-east-1",
           "access_key_id": "wwwwwwwwwwwwwEXAMPLE",
           "access_key_secret": "xxxxxxxxxxxxx/yyyyyyy/zzzzzzzzEXAMPLEKEY"
         }
      }
      

      Значения идентификатора ключа доступа и секретного ключа, только что показанные, должны быть скопированы из файла конфигурации keyring_aws, используемого плагином AWS keyring (см. Раздел 8.4.4.7, «Использование плагина keyring_aws Amazon Web Services»).

  2. Выполните миграцию ключей, как описано в Разделе 8.4.4.12, «Миграция ключей между хранилищами ключей keyring».

  3. Удалите плагин.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/keyring-aws-component.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API