AWS Configに関するIAMロールについて

記事タイトルとURLをコピーする

こんにちは、技術1課の多田です。

唐突ですが、サーバーワークスは、社内の部活が盛んです。 私はデュエリストやったり、駅伝出たり、ロードバイクを始めたりと、広く手を出しております。 最近は、カバディを少々勉強中であります。 カバディを調べてみると、予想を遥かに上回るスポーツなので気になった方は是非チェックしてください。

 

さて、今回は、AWS Configで使用する、Identity & Access Management(以下、IAM)のロールについてです。 AWS Configの設定時にIAMロールの設定が必要になるのですが、事前定義しておくことで設定がしやすいため、その方法をご紹介します。

以下、目次です。

  1. AWS Configとは
  2. AWS Configで必要な権限について
  3. IAMロールの設定方法について
  4. まとめ

AWS Configとは

まず、AWS Configのサービス概要を押さえます。 AWS Configとは、AWSのリソースの構成履歴、構成変更の通知を行うためのフルマネージドサービスです。 現時点で、対応しているAWSリソースは以下の通りです。

  対象
EC2 EC2インスタンス EC2 Network Interface EC2 セキュリティグループ EC2 Elastic IP EC2 Dedicated Hosts
EBS 汎用(SSD)ボリューム プロビジョンドIOPS(SSD)ボリューム マグネティックボリューム
VPC カスタマーゲートウェイ インターネットゲートウェイ ネットワークACL ルートテーブル サブネット VPN ゲートウェイ VPN接続
CloudTrail  
IAM IAM ユーザー IAM Group IAM ロール IAM 管理ポリシー

例えば、EC2のEIPをアタッチしたり、デタッチした操作がいつ実行されたかを追えたり、Security Groupのポリシーが変更された場合に通知がされたりする等AWS Configの対象のAWS構成の変更をチェックできます。

また、AWS ConfigのログをSimple Storage Service(以下、S3)に保存したり、AWSリソースの変更をSimple Notification Service(以下、SNS)で通知するよう設定が可能です。 尚、現在は、GA(一般利用)となっているリージョン全てで利用可能になっております。

詳しくは、こちらをご覧ください(英語のドキュメントになります)。

AWS Configで必要な権限について

AWS Configの動作に必要な権限は、次の3つより構成されています。

1、Read権限ポリシー

これは、各AWSリソースに対するRead の権限を定義します。 このポリシーは、リージョン間で共通で使用できます。

2、配送ポリシー

これは、AWS Config の監査結果を配送するための S3バケットおよび SNS トピックに対する権限を定義します。 このポリシーは、リージョン間で異なるように定義できます。

3、信頼ポリシー

これは、AWS Config サービス(config.amazonaws.com)がユーザーに成りかわり動作(AssumeRole)できるように定義します。 このポリシーは、リージョン間で共通に使用できます。

上記3つのポリシーをIAMロールで設定します。

IAMロール設定方法について

それでは、実際にIAMロールを設定してみます。

AWSマネジメントコンソールにログイン後、IAMをクリック -> 左メニューよりRolesを選択 -> Create New Roleボタンをクリック 新規のロール作成画面が表示されます。 任意のロール名をつけて、Next Stepをクリックします。

config_1

 

AWS Service Rolesの中よりAWS ConfigをSelectします。 ここで、信頼ポリシーを定義しています。

 config_12r2

 

ポリシー編集画面に遷移します。 ここでは、Custom Policyを選択して、Selectボタンをクリックします。

config_6

 

Policy Nameには、任意のポリシー名を入力してください。 Policy Documentには定義したい、ポリシーを入力しますが、S3とSNSのどちらかもしくは両方を使うかによって設定内容が異なります。 今回、AWS Configのログを格納するためにS3へ書き込むポリシーを設定します。 下記のポリシー例が、こちらに載っていますので、適宜環境に合わせた設定を行ってください。

{
  "Version": "2012-10-17",
  "Statement":
   [


 {
   "Effect": "Allow",
   "Action": ["s3:PutObject"],
   "Resource": ["arn:aws:s3:::S3バケット名/prefix(任意)/AWSLogs/ハイフンなしのAWSアカウントID/*"],
   "Condition":
{
  "StringLike":
{
  "s3:x-amz-acl": "bucket-owner-full-control"
}
}
 },
 {
   "Effect": "Allow",
   "Action": ["s3:GetBucketAcl"],
   "Resource": "arn:aws:s3:::S3バケット名"
 }
  ]
  }

設定の入力が完了しましたら、Validate Policyをクリックしてポリシー定義が問題ないかを確認します。 問題ない場合、「This Policy is valid.」とページ上部に表示されるので、その後、Apply Policyをクリックします。

config_7

 

IAMロールの詳細画面にページが遷移され、Inline Policiesに定義したポリシーが存在することを確認します。

config_5

 

それでは、次にAWS Configに作成したIAMロールを紐付ける作業を実施します。 尚、リージョンは東京リージョンになります。 AWS Configのページにのページに移動し、Get Startedをクリックします。

config_8

 

変更履歴を取りたいAWSリソース、ログを保管するS3バケットを指定した後、AWS Config roleの項目に移動します。 その後、「Choose a role from your account」を選択します。 プルダウンより作成したIAMロールを選択して、Nextクリックします。

config_91

 

Config Rulesについては、今回の記事では触れないため、デフォルトのままでNextをクリックします。

config_10

 

設定の確認画面です。 IAMロールが設定できていうことを確認し、Confirmをクリックします。

config_11

 

以上でAWS ConfigのIAMロールのアタッチが完了となります。

まとめ

AWS Configで使用するIAMロールを事前定義する方法をご紹介しましたが、いかがでしたでしょうか? 設定自体は簡単で、AWS Configへの紐付けもボタンひとつで実現できます。 また、管理するポリシーは一つで済むので、管理コストを低く抑えられます。ぜひお試しください。