この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
こんにちは、中山です。
次期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サービスに対応してくれるとうれしいですね。まだアップデート処理が微妙な部分もありますが、今後の改善に期待したいと思います。
本エントリがみなさんの参考になれば幸いに思います。