community.aws.aws_kms – Выполнение различных задач управления KMS.
Примечание
Этот плагин входит в состав коллекции community.aws (версия 1.3.0).
Для его установки используйте: ansible-galaxy collection install community.aws.
Для использования в книге задач укажите: community.aws.aws_kms.
Новое в версии 1.0.0: коллекции community.aws
Обзор
- Управление доступом роли/пользователя к ключу KMS. Не предназначен для шифрования/расшифрования.
Требования
Ниже перечислены требования к хосту, на котором будет выполняться этот модуль.
- python >= 2.6
- boto
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии | |
|---|---|---|---|
| alias строка | Псевдоним для ключа. Для безопасности, хотя KMS не требует, чтобы ключи имели псевдоним, этот модуль ожидает, что все новые ключи будут иметь псевдоним для облегчения управления. Существующие ключи без псевдонима могут быть указаны по key_id. Используйте community.aws.aws_kms_info для поиска идентификаторов ключей. Требуется, если не указан key_id. Обратите внимание, что передача key_id и alias приведет только к добавлению нового псевдонима, псевдоним никогда не будет переименован. Префикс 'alias/' необязателен. Псевдонимы: key_alias | ||
| aws_access_key строка | Ключ доступа AWS. Если не задан, используется значение переменной среды AWS_ACCESS_KEY_ID, AWS_ACCESS_KEY или EC2_ACCESS_KEY. Если задан параметр profile, этот параметр игнорируется. Передача параметров aws_access_key и profile одновременно устарела и параметры будут сделаны взаимоисключающими после 2022-06-01. Псевдонимы: ec2_access_key, access_key | ||
| aws_ca_bundle путь | Расположение файла сертификата CA для проверки SSL-сертификатов. Используется только для модулей, основанных на boto3. Примечание: Файл CA Bundle считывается со стороны 'модуля' и может потребоваться явно скопировать его с контроллера, если он не запускается локально. | ||
| aws_config словарь | Словарь для модификации конфигурации botocore. Параметры можно найти по адресу https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#botocore.config.Config. Для модулей boto используется только ключ 'user_agent'. Дополнительную информацию о конфигурации boto см. по адресу http://boto.cloudhackers.com/en/latest/boto_config_tut.html#boto. | ||
| aws_secret_key строка | Секретный ключ AWS. Если не задан, используется значение переменной среды AWS_SECRET_ACCESS_KEY, AWS_SECRET_KEY или EC2_SECRET_KEY. Если задан параметр profile, этот параметр игнорируется. Передача параметров aws_secret_key и profile одновременно устарела и параметры будут сделаны взаимоисключающими после 2022-06-01. Псевдонимы: ec2_secret_key, secret_key | ||
| debug_botocore_endpoint_logs логический тип |
| Используйте логирование botocore.endpoint для анализа уникальных (а не общих) API-вызовов «ресурс:действие», выполненных во время задачи, выводить набор в ключ resource_actions в результатах задачи. Используйте обратный вызов aws_resource_action для вывода в общий список, созданный во время выполнения playbook. Также может использоваться переменная среды ANSIBLE_DEBUG_BOTOCORE_LOGS. | |
| description строка | Описание CMK. Используйте описание, которое поможет вам определить, подходит ли CMK для задачи. | ||
| ec2_url строка | URL для подключения к EC2 или вашему облаку Eucalyptus (по умолчанию модуль будет использовать конечные точки EC2). Игнорируется для модулей, где регион является обязательным. Должен быть указан для всех других модулей, если регион не используется. Если не задан, используется значение переменной среды EC2_URL, если таковая имеется. Псевдонимы: aws_endpoint_url, endpoint_url | ||
| enable_key_rotation логический тип |
| Автоматически ли ключ должен вращаться ежегодно. | |
| enabled логический тип |
| Включен ли ключ | |
| grants список / элементы=словарь | Список прав, которые нужно применить к ключу. Каждый элемент должен содержать grantee_principal. Каждый элемент может также содержать retiring_principal, operations, constraints, name.
grantee_principal и retiring_principal должны быть ARNs Полную документацию по подпараметрам см. в документации boto3: | ||
| constraints словарь | Constraints — это словарь, содержащий encryption_context_subset или encryption_context_equals, либо оба, являющиеся словарем, определяющим соответствие контексту шифрования. См. https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html или https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/kms.html#KMS.Client.create_grant
| ||
| grantee_principal строка / обязательно | Полный ARN субъекта, которому предоставляются разрешения. | ||
| operations список / элементы=строка |
| Список операций, которые субъект может выполнять с помощью CMK. | |
| retiring_principal строка | Полный ARN субъекта, которому разрешено аннулировать/снять разрешение. | ||
| key_id строка | Идентификатор или ARN ключа. Требуется один из параметров alias или key_id. Псевдонимы: key_arn | ||
| policy json | Политика, применяемая к ключу KMS. | ||
| policy_clean_invalid_entries логический тип |
| (устарело) Если добавляется/удаляется роль и обнаружены недопустимые субъекты, удалить их. В известных случаях эти записи вызовут ошибку обновления. Очищается только при внесении изменений. Используется для изменения политики ключа, а не изменения разрешения и работает только с политикой по умолчанию, созданной через AWS Console. Этот параметр устарел и будет удален в версии 2.13. Используйте policy вместо этого. Псевдонимы: clean_invalid_entries | |
| policy_grant_types список / элементы=строка | (устарело) Список разрешений, которые нужно предоставить пользователю/роли. Вероятно, "роль,разрешение роли" или "роль,разрешение роли,админ". Требуется, когда policy_mode=grant. Используется для изменения политики ключа, а не изменения разрешения и работает только с политикой по умолчанию, созданной через AWS Console. Этот параметр устарел и будет удален в версии 2.13. Используйте policy вместо этого. Псевдонимы: grant_types | ||
| policy_mode строка |
| (устарело) Предоставление или отказ в доступе. Используется для изменения политики ключа, а не изменения разрешения и работает только с политикой по умолчанию, созданной через AWS Console. Этот параметр устарел и будет удален в версии 2.13. Используйте policy вместо этого. Псевдонимы: mode | |
| policy_role_arn строка | (устарело) ARN роли, которой разрешен/запрещен доступ. Требуется один из параметров policy_role_name или policy_role_arn. Используется для изменения политики ключа, а не изменения разрешения и работает только с политикой по умолчанию, созданной через AWS Console. Этот параметр устарел и будет удален в версии 2.13. Используйте policy вместо этого. Псевдонимы: role_arn | ||
| policy_role_name строка | (устарело) Роль, которой разрешен/запрещен доступ. Требуется один из параметров policy_role_name или policy_role_arn. Используется для изменения политики ключа, а не изменения разрешения и работает только с политикой по умолчанию, созданной через AWS Console. Этот параметр устарел и будет удален в версии 2.13. Используйте policy вместо этого. Псевдонимы: role_name | ||
| profile строка | Использует профиль boto. Работает только с boto >= 2.24.0. Использование profile переопределяет aws_access_key, aws_secret_key и security_token, а поддержка их одновременной передачи с profile устарела. aws_access_key, aws_secret_key и security_token будут сделаны взаимоисключающими с profile после 2022-06-01. Псевдонимы: aws_profile | ||
| purge_grants логический тип |
| Удалить разрешения, отсутствующие в списке grants | |
| purge_tags логический тип |
| Удалить метки, отсутствующие в списке tags | |
| регион строка | AWS регион для использования. Если не указан, используется значение переменной окружения AWS_REGION или EC2_REGION, если таковая имеется. См. http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region
псевдонимы: aws_region, ec2_region | ||
| токен_безопасности строка | AWS STS токен безопасности. Если не задан, используется значение переменной окружения AWS_SECURITY_TOKEN или EC2_SECURITY_TOKEN. Если параметр профиль установлен, этот параметр игнорируется. Передача параметров токен_безопасности и профиль одновременно устарела и параметры будут сделаны взаимоисключающими после 2022-06-01. псевдонимы: aws_security_token, access_token | ||
| состояние строка |
| Указывает, должен ли ключ быть присутствующим или отсутствующим. Обратите внимание, что установка существующего ключа в состояние «отсутствует» только запланирует удаление ключа. Передача ключа, запланированного на удаление, со значением «present» отменит удаление ключа. | |
| метки словарь | Словарь меток для применения к ключу. | ||
| проверять_сертификаты логическое |
| Если установлено «нет», SSL сертификаты не будут проверены для версий boto >= 2.6.0. | |
Примечания
Примечание
- Если параметры не установлены в модуле, можно использовать следующие переменные окружения в порядке убывания приоритета
AWS_URLилиEC2_URL,AWS_PROFILEилиAWS_DEFAULT_PROFILE,AWS_ACCESS_KEY_IDилиAWS_ACCESS_KEYилиEC2_ACCESS_KEY,AWS_SECRET_ACCESS_KEYилиAWS_SECRET_KEYилиEC2_SECRET_KEY,AWS_SECURITY_TOKENилиEC2_SECURITY_TOKEN,AWS_REGIONилиEC2_REGION,AWS_CA_BUNDLE - Ansible использует файл конфигурации boto (обычно ~/.boto), если учетные данные не предоставлены. См. https://boto.readthedocs.io/en/latest/boto_config_tut.html
-
AWS_REGIONилиEC2_REGIONобычно используются для указания AWS региона, когда это требуется, но это также можно настроить в файле конфигурации boto
Примеры
# Managing the KMS IAM Policy via policy_mode and policy_grant_types is fragile
# and has been deprecated in favour of the policy option.
- name: grant user-style access to production secrets
community.aws.aws_kms:
args:
alias: "alias/my_production_secrets"
policy_mode: grant
policy_role_name: "prod-appServerRole-1R5AQG2BSEL6L"
policy_grant_types: "role,role grant"
- name: remove access to production secrets from role
community.aws.aws_kms:
args:
alias: "alias/my_production_secrets"
policy_mode: deny
policy_role_name: "prod-appServerRole-1R5AQG2BSEL6L"
# Create a new KMS key
- community.aws.aws_kms:
alias: mykey
tags:
Name: myKey
Purpose: protect_stuff
# Update previous key with more tags
- community.aws.aws_kms:
alias: mykey
tags:
Name: myKey
Purpose: protect_stuff
Owner: security_team
# Update a known key with grants allowing an instance with the billing-prod IAM profile
# to decrypt data encrypted with the environment: production, application: billing
# encryption context
- community.aws.aws_kms:
key_id: abcd1234-abcd-1234-5678-ef1234567890
grants:
- name: billing_prod
grantee_principal: arn:aws:iam::1234567890123:role/billing_prod
constraints:
encryption_context_equals:
environment: production
application: billing
operations:
- Decrypt
- RetireGrant
- name: Update IAM policy on an existing KMS key
community.aws.aws_kms:
alias: my-kms-key
policy: '{"Version": "2012-10-17", "Id": "my-kms-key-permissions", "Statement": [ { <SOME STATEMENT> } ]}'
state: present
- name: Example using lookup for policy json
community.aws.aws_kms:
alias: my-kms-key
policy: "{{ lookup('template', 'kms_iam_policy_template.json.j2') }}"
state: present
Возвращаемые значения
Общие возвращаемые значения документированы здесь, следующие поля уникальны для данного модуля:
| Ключ | Возвращается | Описание | |
|---|---|---|---|
| псевдонимы список / элементы=строка | всегда | список псевдонимов, связанных с ключом Пример: ['aws/acm', 'aws/ebs'] | |
| aws_account_id строка | всегда | AWS идентификатор учетной записи, к которой принадлежит ключ Пример: 1234567890123 | |
| необходимые_изменения словарь | всегда | типы разрешений, которые будут изменены/были изменены. Пример: {'роль': 'добавить', 'разрешение_роли': 'добавить'} | |
| дата_создания строка | всегда | Дата создания ключа Пример: 2017-04-18T15:12:08.551000+10:00 | |
| описание строка | всегда | Описание ключа Пример: Мой ключ для защиты важных данных | |
| активирован строка | всегда | Включен ли ключ. True, если KeyState равно true. | |
| разрешения сложный | всегда | список разрешений, связанных с ключом | |
| ограничения словарь | всегда | Ограничения контекста шифрования, разрешенные предоставлением. См. https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html для получения дополнительной информации Пример: {'encryption_context_equals': {'aws:lambda:_function_arn': 'arn:aws:lambda:ap-southeast-2:012345678912:function:xyz'}} | |
| дата_создания строка | всегда | Дата создания разрешения Пример: 2017-04-18T15:12:08+10:00 | |
| id_разрешения строка | всегда | Уникальный идентификатор разрешения Пример: abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234 | |
| субъект_получателя строка | всегда | Субъект, получающий разрешения Пример: arn:aws:sts::0123456789012:assumed-role/lambda_xyz/xyz | |
| выпустившая_учетная_запись строка | всегда | AWS учетная запись, под которой было выдано разрешение Пример: arn:aws:iam::01234567890:root | |
| id_ключа строка | всегда | ARN ключа, к которому применяется разрешение. Пример: arn:aws:kms:ap-southeast-2:123456789012:key/abcd1234-abcd-1234-5678-ef1234567890 | |
| имя строка | всегда | Наименование разрешения Пример: xyz | |
| операции список / элементы=строка | всегда | Список операций, разрешенных разрешением Пример: ['Decrypt', 'RetireGrant'] | |
| субъект_удаления строка | всегда | Субъект, который может удалить разрешение Пример: arn:aws:sts::0123456789012:assumed-role/lambda_xyz/xyz | |
| имели_ошибки логическое | всегда | В записи KMS содержатся недопустимые записи (не ARN). Они не учитываются как изменение, но будут удалены, если будут вноситься какие-либо изменения. | |
| arn_ключа строка | всегда | ARN ключа Пример: arn:aws:kms:ap-southeast-2:123456789012:key/abcd1234-abcd-1234-5678-ef1234567890 | |
| id_ключа строка | всегда | Идентификатор ключа Пример: abcd1234-abcd-1234-5678-ef1234567890 | |
| состояние_ключа строка | всегда | Состояние ключа Пример: PendingDeletion | |
| использование_ключа строка | всегда | Криптографические операции, которые можно выполнять с помощью ключа. Пример: ENCRYPT_DECRYPT | |
| источник строка | всегда | Источник ключевого материала ключа. Когда это значение AWS_KMS, AWS KMS создал ключевой материал. Когда это значение EXTERNAL, ключевой материал был импортирован или у CMK отсутствует ключевой материал.Пример: AWS_KMS | |
| политики список / элементы=строка | всегда | список документов политик для ключей. Пустой, когда доступ запрещен, даже если политики есть. Пример: {'Id': 'auto-ebs-2', 'Statement': [{'Action': ['kms:Encrypt', 'kms:Decrypt', 'kms:ReEncrypt*', 'kms:GenerateDataKey*', 'kms:CreateGrant', 'kms:DescribeKey'], 'Condition': {'StringEquals': {'kms:CallerAccount': '111111111111', 'kms:ViaService': 'ec2.ap-southeast-2.amazonaws.com'}}, 'Effect': 'Allow', 'Principal': {'AWS': '*'}, 'Resource': '*', 'Sid': 'Разрешить доступ через EBS для всех субъектов в учетной записи, имеющих разрешения на использование EBS'}, {'Action': ['kms:Describe*', 'kms:Get*', 'kms:List*', 'kms:RevokeGrant'], 'Effect': 'Allow', 'Principal': {'AWS': 'arn:aws:iam::111111111111:root'}, 'Resource': '*', 'Sid': 'Разрешить прямой доступ к метаданным ключа для учетной записи'}], 'Version': '2012-10-17'} | |
| метки словарь | всегда | словарь примененных меток Пример: {'Имя': 'мойКлюч', 'Цель': 'защита_данных'} | |
Авторы
- Ted Timmons (@tedder)
- Will Thames (@willthames)
- Mark Chappell (@tremble)
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/community/aws/aws_kms_module.html