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 для управления хранилищем ключей, необходимо:
-
Создать манифест, указывающий серверу загрузить
component_keyring_aws, как описано в разделе 8.4.4.2 «Установка компонента keyring».Для
component_keyring_awsсодержимое файла манифеста показано здесь:{ "components": "file://component_aws_keyring" } Создать файл конфигурации для
component_keyring_aws, как описано в Конфигурация компонента AWS Keyring.
Компонент AWS keyring поддерживает два режима аутентификации: простой и родной, определяемые значением параметра aws_authentication.mode, указанного в component_keyring_aws.cnf. Этот параметр обязателен. Конфигурацию компонента для поддержки каждого из этих режимов можно найти в режиме простой аутентификации и режиме родной аутентификации соответственно.
Конфигурация компонента 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
| Параметр | Родитель | Описание | Допустимо | Обязательно | Значение по умолчанию | Допустимые значения |
|---|---|---|---|---|---|---|
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
|
Да, когда
|
— | — |
access_key_secret |
aws_authentication |
Секретный ключ доступа AWS | Когда aws_authentication.mode равен 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, взятые из вывода внешней команды, указанной параметром конфигурации AWScredential_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 необходимо выполнить следующие шаги:
-
Создайте эквивалентную конфигурацию для компонента:
-
Создайте локальный или глобальный манифестный файл
mysqld.my(см. Раздел 8.4.4.2, «Установка компонента keyring»). Содержимое файла должно соответствовать показанному здесь:{ "components": "file://component_keyring_aws" } -
Создайте файл конфигурации компонента
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»).
-
Выполните миграцию ключей, как описано в Разделе 8.4.4.12, «Миграция ключей между хранилищами ключей keyring».
Удалите плагин.
© 2025 Oracle
Licensed under the GPLv2 License.