Amazon InspectorをAWS CLIで設定し脆弱性検査を実行する

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

佐々木です。先ほどの記事の通り、現在インドネシアに向かって移動中です。

今回はAmazon InspectorをAWS CLIで設定し、脆弱性検査の実行までやってみました。

やってみた

事前準備としてAWS CLIを最新にしておくのを忘れないでおきましょう(ちょっとハマりました)

IAM Roleの作成と設定

まずはAmazon Inspectorに設定するIAM Roleを作成します。Assume Role Policyとして設定するJSONファイルを作成しておきます。

$ vi inspectorTrustRelationship.json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "inspector.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "123456789012"
        }
      }
    }
  ]
}

作成したAssume Role Policyファイルを使ってAWS Roleを作ります。

$ aws iam create-role --role-name inspector --assume-role-policy-document file:///Users/smokeymonkey/inspectorTrustRelationship.json

次にAWS Roleに設定するIAM Policyを記載したJSONファイルを作成します。

$ vi Inspector_Role_Policy.json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeInstances"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

IAM PolicyをIAM Roleに関連付けます。

$ aws iam  put-role-policy --role-name inspector --policy-name oneClick_inspector --policy-document file:///Users/smokeymonkey/Inspector_Role_Policy.json

これでIAMの設定は終わりです。

InspectorへのIAM Roleの設定

作成したIAM RoleをInspectorに設定します。

$ aws inspector register-cross-account-access-role --role-arn 'arn:aws:iam::123456789012:role/inspector'

Resource Groupの作成

Amazon InspectorをGUIから設定する場合には、Assessment Targetの設定の中で、脆弱性検査対象とするタグを設定するのですが、AWS CLIでやる場合には事前にResource Groupとして脆弱性検査対象のタグを設定する必要があります。

$ aws inspector create-resource-group --resource-group-tags key=Inspector,value=True
{
    "resourceGroupArn": "arn:aws:inspector:ap-northeast-1:123456789012:resourcegroup/0-0Al7TdFS"
}

Assessment Targetの作成

作成したResource Groupを関連付けして、Assessment Targetを作成します。

$ aws inspector create-assessment-target --assessment-target-name inspectorTarget --resource-group-arn "arn:aws:inspector:ap-northeast-1:123456789012:resourcegroup/0-0Al7TdFS"

アウトプットとして、作成したAssessment TargetのARNが出力されます。

{
    "assessmentTargetArn": "arn:aws:inspector:ap-northeast-1:123456789012:target/0-qJcjKzyq"
}

GUIで確認。ちゃんとAssessment Targetが作成されています。

Amazon_Inspector

Rule Packagesの確認

GUIでは、次にAssessment Templateの作成に移るのですが、その際に脆弱性検査をするルールを設定する必要があります。が、ルールの指定はARNで行う必要があるため、最初にルールのARNを確認しておきます。

$ aws inspector list-rules-packages

アウトプットとしてルールの一覧が表示されます。が、ARNしか表示されないので、それぞれのルールがどんな内容なのかはさっぱりわかりません。

{
    "rulesPackageArns": [
        "arn:aws:inspector:ap-northeast-1:123456789012:rulespackage/0-7WNjqgGu",
        "arn:aws:inspector:ap-northeast-1:123456789012:rulespackage/0-bBUQnxMq",
        "arn:aws:inspector:ap-northeast-1:123456789012:rulespackage/0-gHP9oWNT",
        "arn:aws:inspector:ap-northeast-1:123456789012:rulespackage/0-knGBhqEu"
    ]
}

各ルールの詳細はdescribe-rules-packagesで確認できます。

$ aws inspector describe-rules-packages --rules-package-arn "arn:aws:inspector:ap-northeast-1:123456789012:rulespackage/0-gHP9oWNT"

アウトプットはこんな感じで表示されます。これはCVEのルールですね。

{
    "rulesPackages": [
        {
            "description": "The rules in this package help verify whether the EC2 instances in your application are exposed to Common Vulnerabilities and Exposures (CVEs). Attacks can exploit unpatched vulnerabilities to compromise the confidentiality, integrity, or availability of your service or data. The CVE system provides a reference for publicly known information security vulnerabilities and exposures. For more information, see [https://cve.mitre.org/](https://cve.mitre.org/). If a particular CVE appears in one of the produced Findings at the end of a completed Inspector assessment, you can search [https://cve.mitre.org/](https://cve.mitre.org/) using the CVE's ID (for example, \"CVE-2009-0021\") to find detailed information about this CVE, its severity, and how to mitigate it. ",
            "version": "1.1",
            "name": "Common Vulnerabilities and Exposures",
            "arn": "arn:aws:inspector:ap-northeast-1:123456789012:rulespackage/0-gHP9oWNT",
            "provider": "Amazon Web Services, Inc."
        }
    ],
    "failedItems": {}
}

Assessment Templateの作成

Assessment Targetを作って、適用したいルールが判明したので、Assessment Templateを作成します。

$ aws inspector create-assessment-template --assessment-target-arn "arn:aws:inspector:ap-northeast-1:123456789012:target/0-qJcjKzyq" --assessment-template-name inspectorTemplate --duration-in-seconds 3600 --rules-package-arns "arn:aws:inspector:ap-northeast-1:123456789012:rulespackage/0-gHP9oWNT"

アウトプットとしてAssessment TemplateのARNが出力されます。

{
    "assessmentTemplateArn": "arn:aws:inspector:ap-northeast-1:123456789012:target/0-qJcjKzyq/template/0-H2cpb7Js"
}

GUIで確認。Assessment Templateが作成されています。

Amazon_Inspector 2

Assessment Templateの実行(Run)

では作成さいたAssessment Templateを実行してみましょう!実行はstart-assessment-runで行います。

$ aws inspector start-assessment-run --assessment-template-arn "arn:aws:inspector:ap-northeast-1:123456789012:target/0-qJcjKzyq/template/0-H2cpb7Js" --assessment-run-name MyRun

アウトプットとしてAssessment RunのARNが表示されます。

{
    "assessmentRunArn": "arn:aws:inspector:ap-northeast-1:123456789012:target/0-qJcjKzyq/template/0-H2cpb7Js/run/0-httQ7Keo"
}

GUIで確認。実行されていることがわかります。

Amazon_Inspector 3

さいごに

start-assessment-runを使えば、事前に用意したTemplateを周期的に実行することが出来ます。情報システムは常に危険に晒されているため、脆弱性検査は一回で終わるものではありません。周期的に実行することでセキュリティレベルを担保し続けましょう!