汎用パスワードを使用して AWS のサービスやその他のコンポーネントにアクセスしていますか? その場合、セッションの有効期限が切れた後に資格情報のプロンプトが繰り返されるのが煩わしくありませんか? おそらく、Terraform の使用に切り替えるときです IAM ロール 代わりは。
IAM ロールは、特定のアクセス許可を含む IAM ユーザーに似ており、AWS インフラストラクチャ内のすべての AWS サービスにアクセスして管理できます。
このチュートリアルでは、AWS IAM ロールをプロビジョニングし、Terraform IAM モジュールを使用してポリシーをロールにアタッチする方法を学習します。 また、実践的な例を使用して、Terraform IAM ロールのアクセス許可をテストし、一部の AWS サービスとリソースにアクセスします。
前提条件
この投稿は、段階的なチュートリアルになります。 フォローしたい場合は、次のものが揃っていることを確認してください。
Terraform IAM ロールの構成の構築
Terraform は、構成を介してインフラストラクチャを構築、変更、およびバージョン管理できるコード ツールとしてのインフラストラクチャです。 ただし、最初に、AWS IAM ロールの Terraform 構成を構築する必要があります。
この構成では、Terraform IAM モジュールを使用して AWS IAM ロールを作成し、ポリシーを添付します。 以下の手順に従って、構成を作成します。
1. お気に入りの SSH クライアントで Ubuntu マシンにログインします。
2. 次に、以下のコマンドを実行して、~/terraform-iam-role-demo という作業ディレクトリを作成します。. このフォルダーには、このチュートリアルで使用するすべての構成ファイルが含まれます。
mkdir ~/terraform-iam-role-demo
cd ~/terraform-iam-role-demo
注: 以下の Terraform 構成は、このチュートリアルと使用する AWS サブスクリプションに固有のものです。 必要に応じて、またはエラーが発生した場合は、必ず構成をカスタマイズしてください。
3. 任意のコード エディターを開き、次の名前のファイルを作成します。 main.tf 内部 ~/terraform-iam-role ディレクトリ。 これ main.tf ファイルは、AWS IAM モジュールの Terraform 構成です。
次の設定をコピーして main.tf ファイルを作成して変更を保存します。
resource "aws_iam_role" "role" {
name = "instance-role"
assume_role_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "ec2.amazonaws.com", "s3.amazonaws.com"
},
"Effect": "Allow",
"Sid": ""
}
]
}
EOF
}
resource "aws_iam_instance_profile" "test_profile" {
name = "instance_profile"
role = aws_iam_role.role.name
}
resource "aws_iam_policy" "policy" {
name = "iam-policy-for-instance-role"
description = "iam-policy-for-instance-role"
policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:Describe*","s3:Get*"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "rds:*",
"Resource": [
"arn:aws:rds:*:063048070623:db:*",
"arn:aws:rds:*:063048070623:cluster-endpoint:*",
"arn:aws:rds:*:063048070623:cluster:*"
]
}
]
}
EOF
}
resource "aws_iam_role_policy_attachment" "test-attach" {
role = aws_iam_role.role.name
policy_arn = aws_iam_policy.policy.arn
}
resource "aws_s3_bucket" "b" {
bucket = "my-s3-test-bucket"
tags = {
Name = "My bucket"
Environment = "Dev"
}
}
4.別のファイルを作成します ~/terraform-iam-role-demo 命名された プロバイダー.tf ファイルに以下のコンテンツを入力します。 の プロバイダー.tf ファイルが含まれています Terraform プロバイダー Terraform はプラグインに依存して、クラウド プロバイダーまたは API サービスに接続または対話するためです。
1 つの構成ファイルにすべての構成値を含めることができます。 ただし、開発者と管理者にわかりやすくするために、ロジックと変数を別々のファイルに分割することをお勧めします。
# Declaring the AWS Provider
provider "aws" {
region = "us-east-1"
}
このチュートリアルでは、us-east-1 リージョンにリソースを作成します。 のリストですが、 AWS がサポートするリージョン も利用できます。
5. 最後に、tree コマンドを実行して、必要なすべてのファイルを確認します。 ~/terraform-cloudwatch-demo 以下に示すように、ディレクトリ。
Terraform IAM ロールとロール ポリシーの作成
Terraform 構成ファイルと変数ファイルをセットアップしたので、Terraform を開始して IAM ロールとロール ポリシーを作成します。 最後に、ポリシーを IAM ロールにアタッチします。
AWS IAM ロールとロール ポリシーをプロビジョニングするために、他のすべての Terraform 構成と同様に、Terraform は 3 つのコマンドを順番に使用します (テラフォーム初期化、 テラフォーム計画、 と 適用するテラフォーム)。
作成した Terraform 構成ファイルが正しくフォーマットされていない場合は、 テラフォーム fmt それらを修正するコマンド。
1. ~/ で terraform init コマンドを実行します。テラフォーム-バックエンド-デモ ディレクトリ。 これにより、リソースの操作に必要なプラグインとプロバイダーが初期化されます。
すべてがうまくいけば、以下に示すように、Terraform が正常に初期化されたことを示すメッセージが出力に表示されます。
2. 次に、terraform plan コマンドを実行して、構成ファイルの構文が正しいことを確認し、インフラストラクチャでリソース プロビジョニングの青写真を提供します。
コマンドが完了すると、Plan: 「X」で追加、「Y」で変更、または「Z」で破棄のようなメッセージが出力に表示されます。 以下の Plan は 4 を示しています。これは、4 つの新しいリソースを追加することを意味します。
3. 最後に、terraform apply the コマンドを実行して、各設定に基づいて AWS IAM ロールとポリシーをプロビジョニングします (*.tf) 現在のディレクトリに。
–auto-approve パラメーターは、コマンドの実行中にすべてのプロンプトを自動的に受け入れます。
terraform apply --auto-approve
Terraform IAM ロールとポリシーの確認
Terraform で IAM ロールと IAM ポリシーを作成しておく必要があります。 しかし、それらが AWS クラウドに存在することをどうやって確認するのでしょうか? AWS マネジメント コンソールを手動で確認して、AWS IAM ロールとポリシーを確認します。
1. お気に入りの Web ブラウザを開き、 AWS マネジメント コンソール.
2. コンソールのホームページで、検索ボックスに「IAM」と入力し、[IAM]をクリックして[ID およびアクセス管理]ページを開きます。 ブラウザは、ページを自動的に IAM ページにリダイレクトします。
3.[ID およびアクセス管理]ページで、左側のナビゲーション メニューの[役割]をクリックします。 作成したインスタンス ロールが表示されます。 instance-role をクリックして、ロールの詳細を表示します。
4. さらに instance-role に、アタッチしたポリシー (iam-policy-for-instance-role) が表示されます。 また、ここでは、右側のボックスで選択したインスタンス プロファイルが作成されていることがわかります。 さらに iam-policy-for-instance-role ポリシーをクリックします。
5. 作成したポリシーをクリックすると、terraform 構成ファイルで定義したすべてのアクセス許可が表示されます (main.tf)。
6. 最後に、IAM ロールとポリシーを確認したら、以下に示すように、AWS EC2 コンソールから IAM インスタンス プロファイルを Ubuntu マシンにアタッチします。 以下に示すように、AWS EC2 ページに移動し、EC2 の結果を選択します。
7. 次に、[インスタンス]ページで、[インスタンスの状態]→[セキュリティ]→[IAM ロールの変更]をクリックします。
[IAM ロール]ドロップダウン ボックスから[instance_profile]を選択し、[IAM ロールの更新]をクリックします。
AWS S3 を使用した Terraform IAM ロール アクセスのテスト
前の 2 つのセクションでは、Terraform を使用して IAM ロールと IAM ポリシーを作成し、後で Amazon マネジメント コンソールでそれらを検証しました。 このセクションでは、Terraform IAM ロールのアクセス許可をテストします。
具体的には、Terraform IAM ロールのアクセス許可をテストして、AWS S3 バケット オブジェクトにアクセスします。 Ubuntu マシンにまだログインしていると仮定して、次の手順に従います。
1. まず、ターミナルで aws s3 ls コマンドを実行します。 このコマンドを実行すると、すべてのバケットのリストが表示されます。 ただし、aws s3 ls コマンドでバケット名を指定すると、指定したバケットのコンテンツのみが AWS アカウントに一覧表示されます。
ここで、-recursive は、コマンドがサブディレクトリのすべてのオブジェクトをリストし、-人間が判読できることを意味します。
# Listing all the tickets in the AWS account
aws ls
# Listing all the objects of the bucket (my-s3-test-bucket-for-iam) in the AWS account
aws s3 ls s3://my-s3-test-bucket-for-iam --recursive --human-readable
2. バケット オブジェクト (my-s3-test-bucket-for-iam) を一覧表示したら、次のコマンドを実行して内容を Ubuntu コンピューターにコピーします。
# Copying all the objects of the bucket (my-s3-test-bucket-for-iam) in the tmp directory
aws s3 cp s3://my-s3-test-bucket-for-iam/ATA.txt.txt /tmp
以下に示すように、Ubuntu マシンにアタッチされた IAM ロールは、オブジェクトを Ubuntu マシンにコピーするなど、AWS S3 サービスでアクションを実行できるようになりました。 何よりも、資格情報を使用して手動で再認証する必要はありませんでした。
AWS RDS データベースを使用した Terraform IAM ロール アクセスのテスト
前のセクションで、AWS S3 バケットのオブジェクトを取得する方法を学習しました。 今回は、Ubuntu マシンにアタッチされた IAM ロールを使用して、AWS RDS データベースのすべてのプロパティを読み取る方法について簡単に説明します。
まだUbuntuマシンにログインしていると仮定して、以下を実行します aws rds describe
コマンドを使用して、データベース インスタンスを記述します。 以下の例では、データベース名は database-3
.
aws rds describe-db-instances --db-instance-identifier database-3
コマンドを実行すると、端末出力に database-3 のすべての詳細が表示されます。
結論
このチュートリアルでは、Terraform クラウド ツールを使用して AWS IAM ロールとポリシーを設定する方法を説明しました。 また、AWS RDS データベース インスタンス情報の一覧表示や、AWS S3 オブジェクトの Ubuntu マシンへのコピーなど、例で IAM ロールをテストする方法も学びました。
これで、AWS アカウントに完全に機能する Terraform IAM ロールができました。 この IAM ロールとポリシーを使用して、AWS クラウドで何を保護する予定ですか?
The post AWS Terraform IAM ロールを活用するための決定的なガイド appeared first on Gamingsym Japan.