この記事では、IAMロールを作成する方法を説明します。先に進む前に、TerraformとAWSIAMロールの基本に精通していることを前提としています。 IAMの役割について詳しく知りたい場合は、ここをクリックしてください。この記事では、役割を作成し、管理者の権限を割り当てます。
前提条件
- Terraformの基本的な理解。
- システムにインストールされているTerraform。
- AWSアカウント(アカウントがない場合は作成します)。
- AWSIAMユーザーの「access_key」と「secret_key」。 (AWSで「access_key」と「secret_key」を使用してIAMユーザーを作成する方法については、ここをクリックしてください)
何をするか
- IAMロールを作成するためのTerraform構成ファイルを作成します。
- Terraform構成ファイルを使用してIAMロールを作成します。
- Terraformを使用して作成されたIAMロールを削除します。
IAMロールのTerraform構成ファイルを作成する
テラフォーム構成ファイルを作成できる専用ディレクトリを作成します。
次のコマンドを使用してディレクトリを作成し、現在の作業ディレクトリをそのディレクトリに変更します。
mkdir terraform
cd terraform /
ファイルを書き込むためのエディターとして「vim」を使用しています。選択したエディターを使用して、次の構成をコピーして貼り付け、variables.tf、terraform.tfvarsを作成できます。およびmain.tf
AWSでIAMロールを作成する責任がある「main.tf」を作成します。このmain.tfは、variables.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) }
上記の構成で使用される引数の意味:
- assert_role_policy-(必須)エンティティに役割を引き受ける権限を付与するポリシー。
- policy_arn(必須)-適用するポリシーのARN
変数の宣言と定義を含む'variables.tf'を作成します。
ここで、
"principal_arns"変数は、このロールの使用を想定できるAWSアカウント番号を保持します。ここで口座番号のリストを渡すこともできます。
"policy_arns"変数は、作成するロールにアタッチする必要のあるポリシーのARNを保持します。ここでポリシーARNのリストを渡すこともできます。
vim変数.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" }
'variables.tf'を作成したら、変数に割り当てられた値を変更することを忘れないでください。強調表示されている値は私の環境に固有のものであるため、変更する必要があります。残りの変数はそのままにしておくことができます。作成しているロールに管理者アクセスを割り当てたくない場合は、選択したポリシーのポリシーARNを定義することで変更できます。
上記のファイルで定義されたaccess_key変数とsecret_key変数の定義を含む「terraform.tfvars」を作成します。これらの2つの変数の宣言は、regionとともに「terraform.tfvars」ファイルに保持されています。
IAMロールを作成するために、特定のリージョンは特に必要ありません。このリージョン変数を理解して使用できるように、この変数をここに保持しました。他のリソース作成ファイルで。
次のキーは、IAMユーザーのキーで変更する必要があります。これらのキーを指定する前に、AWSコンソールからキーを作成する必要があり、これらのキーを他の人と共有しないでください。
vim terraform.tfvars
region = "eu-west-3" access_key = "AKIAQ6GAIA5XFLXF6HOV" secret_key = "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"
これで、3つのファイル、つまり、variables.tf、terraform.tfvars、main.tfが必要になります
Terraform構成ファイルを使用してIAMロールを作成する
次のコマンドを実行する前に、有効なaccess_keyとsecret_keyが構成されていることを確認してください。
最初に使用するコマンドは「terraforminit」です。このコマンドは、構成内で使用されるプロバイダーのプラグインをダウンロードしてインストールします。私たちの場合はAWSです。
terraform init
使用する2番目のコマンドは「terraformplan」です。このコマンドは、インフラストラクチャで行われる変更を確認するために使用されます。
テラフォームプラン
'terraform apply'コマンドは、main.tfファイルに記載されているAWSにリソースを作成します。リソースを作成するための入力を入力するように求められます。
テラフォーム適用
上記のコマンドを実行すると、正常に完了すると、新しいリソースが追加され、0が破棄されたことがわかります。
[ロール]の下のAWSIAMコンソールに移動して、IAMロールが作成されているかどうかを確認できます。
Terraformを使用して作成されたIAMロールを削除します
main.tfファイルに記載されている構成を使用して作成したリソースが不要になった場合は、「terraformdestroy」コマンドを使用してそれらのリソースをすべて削除できます。
>テラフォーム破壊
結論
この記事では、管理者権限を持つIAMロールを作成する手順について説明しました。また、1つのコマンドでIAMの役割を削除する方法も確認しました。