Поиск по сайту:

Как создать роль IAM в AWS с помощью Terraform


В этой статье мы увидим, как создать роль IAM. Прежде чем продолжить, я предполагаю, что вы знакомы с основами Terraform и ролями AWS IAM. Если вы хотите узнать больше о ролях IAM, нажмите здесь. В этой статье мы создадим роль и назначим ей права администратора.

Предпосылки

  1. Основное понимание Terraform.
  2. Terraform установлен в вашей системе.
  3. Аккаунт AWS (создайте, если у вас его нет).
  4. access_key и secret_key пользователя AWS IAM. (Нажмите здесь, чтобы узнать, как создать пользователя IAM с ключом доступа и секретным ключом в AWS, )

Что мы будем делать

  1. Запишите файлы конфигурации Terraform для создания роли IAM.
  2. Создайте роль IAM с помощью файлов конфигурации Terraform.
  3. Удалите созданную роль 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 может быть удалена только в одной команде.