Как создать роль IAM в AWS с помощью Terraform
В этой статье мы увидим, как создать роль IAM. Прежде чем продолжить, я предполагаю, что вы знакомы с основами Terraform и ролями AWS IAM. Если вы хотите узнать больше о ролях IAM, нажмите здесь. В этой статье мы создадим роль и назначим ей права администратора.
Предпосылки
- Основное понимание Terraform.
- Terraform установлен в вашей системе.
- Аккаунт AWS (создайте, если у вас его нет).
- access_key и secret_key пользователя AWS IAM. (Нажмите здесь, чтобы узнать, как создать пользователя IAM с ключом доступа и секретным ключом в AWS, )
Что мы будем делать
- Запишите файлы конфигурации Terraform для создания роли IAM.
- Создайте роль IAM с помощью файлов конфигурации Terraform.
- Удалите созданную роль IAM с помощью Terraform.
Запись файлов конфигурации Terraform для роли IAM
Создайте специальный каталог, в котором вы сможете создавать файлы конфигурации terraform.
Используйте следующую команду, чтобы создать каталог и изменить на него текущий рабочий каталог.
mkdir terraform
cd terraform/
Я использую \vim\ в качестве редактора для записи в файлы, вы можете использовать редактор по вашему выбору и скопировать и вставить следующие конфигурации для создания переменных.tf, terraform.tfvars и main.tf
Создайте файл main.tf, отвечающий за создание роли IAM в AWS. Этот файл main.tf будет считывать значения переменных из переменных.tf и terraform.tfvars.
vim main.tf
provider "aws" { region = "${var.region}" access_key = "${var.access_key}" secret_key = "${var.secret_key}" } data "aws_iam_policy_document" "cross_account_assume_role_policy" { statement { effect = "Allow" principals { type = "AWS" identifiers = var.principal_arns } actions = ["sts:AssumeRole"] } } resource "aws_iam_role" "cross_account_assume_role" { name = var.name assume_role_policy = data.aws_iam_policy_document.cross_account_assume_role_policy.json } resource "aws_iam_role_policy_attachment" "cross_account_assume_role" { count = length(var.policy_arns) role = aws_iam_role.cross_account_assume_role.name policy_arn = element(var.policy_arns, count.index) }
Значение аргументов, используемых в приведенной выше конфигурации:
- assume_role_policy – (обязательно) политика, которая предоставляет объекту разрешение на выполнение роли.
- policy_arn (обязательно) — ARN политики, которую вы хотите применить.
Создайте файл variable.tf, содержащий объявление и определение переменных.
Здесь,
Переменная «principal_arns» содержит номер учетной записи AWS, которому разрешено использовать эту роль. Вы даже можете передать список номеров счетов здесь.
Переменная «policy_arns» содержит ARN политики, которую нам нужно прикрепить к роли, которую мы будем создавать. Вы даже можете передать здесь список ARN политик.
vim variables.tf
variable "access_key" { description = "Access key to AWS console" } variable "secret_key" { description = "Secret key to AWS console" } variable "region" { description = "Region of AWS VPC" } variable "name" { default = "myrole" type = "string" description = "The name of the role. " } variable "principal_arns" { default = ["123456789012"] type = list(string) description = "ARNs of accounts, groups, or users with the ability to assume this role." } variable "policy_arns" { default = ["arn:aws:iam::aws:policy/AdministratorAccess"] type = list(string) description = "List of ARNs of policies to be associated with the created IAM role" }
Создав файл variable.tf, не забудьте изменить значения, присвоенные переменным. Вы должны изменить выделенные значения, поскольку они относятся к моей среде. Вы можете оставить остальные переменные как есть. Если вы не хотите назначать доступ администратора к роли, которую вы создаете, вы можете изменить ее, определив Policy ARN выбранной вами политики.
Создайте terraform.tfvars, который содержит определение переменных access_key и secret_key, определенных в приведенном выше файле. Мы сохранили объявление этих двух переменных в файле terraform.tfvars вместе с регионом.
Для создания роли IAM нам не нужен конкретный регион, я просто оставил эту переменную здесь, чтобы вы могли понять эту переменную региона и использовать ее в других своих файлах создания ресурсов.
Следующие ключи необходимо изменить на ключи вашего пользователя IAM. Прежде чем указывать эти ключи, вам нужно создать их из Консоли AWS и никому не передавать эти ключи.
vim terraform.tfvars
region = "eu-west-3" access_key = "AKIAQ6GAIA5XFLXF6HOV" secret_key = "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"
Теперь у вас должно быть 3 файла, а именно, variable.tf, terraform.tfvars и main.tf.
Создайте роль IAM с помощью файлов конфигурации Terraform.
Прежде чем выполнять следующие команды, убедитесь, что вы настроили действительный ключ доступа и секретный ключ.
Первая используемая команда — terraform init. Эта команда загружает и устанавливает плагины для провайдеров, используемых в конфигурации. В нашем случае это AWS.
terraform init
Вторая используемая команда — terraform plan. Эта команда используется для просмотра изменений, которые произойдут в инфраструктуре.
terraform plan
Команда terraform apply создаст ресурсы на AWS, упомянутые в файле main.tf. Вам будет предложено ввести данные для создания ресурсов.
terraform apply
Когда вы выполните указанную выше команду, после успешного завершения вы увидите, что новый ресурс был добавлен, а 0 был уничтожен.
Вы можете перейти в консоль AWS IAM в разделе Роль, чтобы проверить, создана ли роль IAM.
Удалите созданную роль IAM с помощью Terraform.
Если вам больше не нужны ресурсы, которые вы создали, используя конфигурацию, указанную в файле main.tf, вы можете использовать команду \terraform destroy\, чтобы удалить все эти ресурсы.
terraform destroy
Заключение
В этой статье мы увидели шаги по созданию роли IAM с привилегиями администратора. Мы также видели, как роль IAM может быть удалена только в одной команде.