Terraform v0.8.5でAmazon Inspectorに対応します
はじめに
こんにちは、中山です。
次期Terraformのリリースバージョンであるv0.8.5でAmazon Inspector用リソースが取り込まれました。今回導入されたリソースは以下の3つです。
リソース名 | 用途 |
---|---|
aws_inspector_resource_group | 対象EC2インスタンスを識別するためのタグを設定 |
aws_inspector_assessment_target | リソースグループからアセスメントの対象を設定 |
aws_inspector_assessment_template | 適用するテンプレートを設定 |
早速使ってみたので本エントリでまとめたいと思います。サンプルとなるコードをGitHubに作成しました。ご自由にお使いください。
執筆時点(2017/01/18)ではまだv0.8.5はリリースされていないため、自分でTerraformのバイナリをコンパイルしておいてください。このPRが取り込まれたコミットハッシュ値は「05c83a3ca19076c79fb93c0ca33bf332236c2a2a」です。
Amazon Inspectorは事前にEC2インスタンスのタグをdescribeするためのIAM Roleを設定しておく必要があるのですが、現状その部分には対応していないため事前にマネジメントコンソールやAWS CLIで作成しておく必要があります。関連するドキュメントはこちらです。
Amazon Inspector関連リソースの引数
新規で導入されたAmazon Inspector関連リソースで設定可能な各種引数は以下の通りです。
aws_inspector_resource_group
設定 | 値 | 必須の有無 |
---|---|---|
tags |
対象EC2インスタンスを識別するためのタグ(Key/Valueを = 形式で指定) |
Yes |
aws_inspector_assessment_target
設定 | 値 | 必須の有無 |
---|---|---|
name |
アセスメントターゲット名 | Yes |
resource_group_arn |
関連付けるリソースグループのARN | Yes |
aws_inspector_assessment_template
設定 | 値 | 必須の有無 |
---|---|---|
name |
アセスメントテンプレート名 | Yes |
target_arn |
関連付けるアセスメントターゲットのARN | Yes |
duration |
Amazon Inspectorの実行時間(秒で指定) | Yes |
rules_package_arns |
関連付けるルールのARN(リストで複数指定可) | Yes |
rules_package_arns
で指定可能なルールは以下のコマンドで確認可能です。
# パッケージ一覧の表示 $ aws inspector list-rules-packages { "rulesPackageArns": [ "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-7WNjqgGu", "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-bBUQnxMq", "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-gHP9oWNT", "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-knGBhqEu" ] } # 詳細を確認 $ aws inspector describe-rules-packages \ --rules-package-arns "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-7WNjqgGu" { "rulesPackages": [ { "description": "The CIS Security Benchmarks program provides well-defined, un-biased and consensus-based industry best practicesto help organizations assess and improve their security.\n\nThe rules in this package help establish a secure configuration posture for the following operating systems:\n\n - Amazon Linux version 2015.03 (CIS benchmark v1.1.0)\n \n ", "version": "1.0", "name": "CIS Operating System Security Configuration Benchmarks", "arn": "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-7WNjqgGu", "provider": "Amazon Web Services, Inc." } ], "failedItems": {} }
使ってみる
それでは早速使ってみましょう。今回は説明を簡易的にするため以下のような構成を作成します。VPCにEC2インスタンスをポツンと立てているだけです。そのインスタンスに対してAmazon Inspectorからアセスメントを実施します。
Amazon Inspector関連のtfファイルは以下の通りです。Amazon Inspector自体がシンプルなサービスなので該当のコードも短めです。
inspector.tf
resource "aws_inspector_resource_group" "inspector" { tags { inspector = "true" } } resource "aws_inspector_assessment_target" "inspector" { name = "tf-inspector-demo" resource_group_arn = "${aws_inspector_resource_group.inspector.arn}" } resource "aws_inspector_assessment_template" "inspector" { name = "tf-inspector-demo" target_arn = "${aws_inspector_assessment_target.inspector.arn}" duration = 3600 rules_package_arns = [ "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-7WNjqgGu", "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-bBUQnxMq", "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-gHP9oWNT", "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-knGBhqEu", ] }
今回は inspector
タグに ture
という値があるインスタンスを対象にしています。適用するルールパッケージは利用可能なものを全て突っ込んでいます。いつものように plan
/ apply
を実行すると各種Amazon Inspector関連のARNがアウトプットに表示されるはずです。
$ $GOPATH/bin/terraform apply <snip> Outputs: assessment_target_arn = arn:aws:inspector:ap-northeast-1:************:target/0-QOvPswHA assessment_template_arn = arn:aws:inspector:ap-northeast-1:************:target/0-QOvPswHA/template/0-uCIUy636 public_ip = 54.199.153.184 resource_group_arn = arn:aws:inspector:ap-northeast-1:************:resourcegroup/0-wWM5pQWa
動作確認
今回はAWS CLIを利用してアセスメントを実行してみます。マネジメントコンソールを利用する方法は以下のエントリを参照してください。
AWS CLIを利用したアセスメントの実行は以下のコマンドで実施可能です。
$ aws inspector start-assessment-run \ --assessment-template-arn arn:aws:inspector:ap-northeast-1:************:target/0-QOvPswHA/template/0-uCIUy636 { "assessmentRunArn": "arn:aws:inspector:ap-northeast-1:************:target/0-QOvPswHA/template/0-uCIUy636/run/0-n9nnWOem" }
暫く待つとアセスメントのステータスがCOMPLETEDとなることが確認できます。
$ aws inspector describe-assessment-runs \ --assessment-run-arns arn:aws:inspector:ap-northeast-1:************:target/0-QOvPswHA/template/0-uCIUy636/run/0-n9nnWOem { "failedItems": {}, "assessmentRuns": [ { "dataCollected": true, "name": "tf-inspector-demo/2017-01-18T10:49/oIxY", "completedAt": 1484740229.791, "userAttributesForFindings": [], "stateChanges": [ { "state": "CREATED", "stateChangedAt": 1484736546.726 }, { "state": "START_DATA_COLLECTION_PENDING", "stateChangedAt": 1484736546.894 }, { "state": "START_DATA_COLLECTION_IN_PROGRESS", "stateChangedAt": 1484736546.947 }, { "state": "COLLECTING_DATA", "stateChangedAt": 1484736547.056 }, { "state": "STOP_DATA_COLLECTION_PENDING", "stateChangedAt": 1484740148.094 }, { "state": "DATA_COLLECTED", "stateChangedAt": 1484740208.547 }, { "state": "EVALUATING_RULES", "stateChangedAt": 1484740209.225 }, { "state": "COMPLETED", "stateChangedAt": 1484740229.791 } ], "createdAt": 1484736546.726, "notifications": [], "state": "COMPLETED", "stateChangedAt": 1484740229.791, "durationInSeconds": 3600, "rulesPackageArns": [ "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-7WNjqgGu", "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-gHP9oWNT", "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-bBUQnxMq", "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-knGBhqEu" ], "startedAt": 1484736547.056, "assessmentTemplateArn": "arn:aws:inspector:ap-northeast-1:************:target/0-QOvPswHA/template/0-uCIUy636", "arn": "arn:aws:inspector:ap-northeast-1:************:target/0-QOvPswHA/template/0-uCIUy636/run/0-n9nnWOem" } ] }
まとめ
いかがだったでしょうか。
Terraformで導入予定のAmazon Inspectorリソースについてご紹介しました。新しいAWSサービスに対応してくれるとうれしいですね。まだアップデート処理が微妙な部分もありますが、今後の改善に期待したいと思います。
本エントリがみなさんの参考になれば幸いに思います。