コンテンツにスキップ

AWS連携認証設定#

AWS 連携を利用することで、FutureVuls に以下の機能を追加できます。 これらの機能を利用するための AWS 認証設定を実施します。

AWS 認証情報の設定

FutureVuls の1つのグループに対して、AWS 認証情報は 1つのみ 登録可能です。 AWS 環境が複数ある場合は、別グループに分けて登録してください。 なお、1つの AWS アカウントを複数のグループに対して登録可能です。

連携手順#

AWS の認証設定には、「IAM ロールを使った認証方法」と「API キーを使った認証方法」の2種類があります。 基本的にはよりセキュアで設定が簡単な IAM ロールを使う方法を推奨します。

AWS CloudFormation のスタック作成時には、スタック作成の実行ユーザ(または、CloudFormation を実行するサービスロール)に以下の実行権限を付与してください。

また、スタックを削除する場合には、以下の実行権限を付与してください。

  • iam:DeleteRole
  • iam:DeleteRolePolicy

IAMロールを使った認証方法#

FutureVuls の グループ設定 > 外部連携 を選択し、AWS の中にある「追加」ボタンを押します。

image

「IAM ロールでの認証(推奨)」を選択し、連携したい AWS アカウントの AWSアカウントIDリージョン を入力し、「次へ」ボタンを押します。

image

「AWS CloudFormation の設定画面へ」のボタンを押して、CloudFormation により FutureVuls のテンプレートからスタックを作成します。 作成後、パラメータのタブから FutureVulsExternalID の値を取得してください。 既に他のグループで連携済みの場合は、AWS 上で CloudFormation > スタック から FutureVulsAssumeRole を選択し、FutureVulsExternalID の値を取得してください。

image

スタックの作成後、再度 FutureVuls の設定画面に戻り、取得した FutureVulsExternalID を入力して「次へ」ボタンを押します。 この時に AWS 認証が有効かどうかが判定され、有効な場合は「AWS アカウント ID が登録されました」と表示されます。

image

以下のように認証情報が表示されるようになれば、AWS 認証設定は完了です。

image

APIキーを使った認証方法#

API キーによる認証方法は、セキュリティの観点から AWS では非推奨とされています。 この方法よりも上記の IAM ロールを使った認証方法を推奨しています。 本設定方法は IAM ロールの認証方法が利用できない環境でのみ選択してください。

以下に AccessKey, SecretKey で連携する方法を説明します。

IAMロールを使った認証方法」と同様に AWS 認証情報の追加の画面に移動します。 API キーでの認証を選択し、「AWS CloudFormation の設定画面へ」のボタンを押します。

image

作成された IAM で API キーを発行し、 アクセスキー・シークレットキー・リージョン を入力して「次へ」ボタンを押します。 この時に AWS 認証が有効かどうかが判定され、有効な場合は「AWS アカウント ID が登録されました」と表示されます。

image

以下のように認証情報が表示されれば完了です。

image

設定削除#

AWS 認証情報のところにあるゴミ箱ボタンをクリックしてください。 AWS 環境から FutureVuls AWS 連携に関連する認証情報を削除したい場合は、CloudFormation スタックの FutureVulsAssumeRole を削除してください。

image

FutureVulsで利用するポリシー#

FutureVuls AWS 連携で利用する AWS ポリシーは以下の通りです。 今後、連携強化のために変更する可能性があります。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeTags",
                "ssm:DescribeInstanceInformation",
                "ssm:ListDocuments",
                "ssm:ListCommandInvocations",
                "ecr:GetAuthorizationToken",
                "ecr:DescribeImages",
                "ecr:BatchGetImage",
                "ecr:DescribeImageScanFindings",
                "ecr:GetRepositoryPolicy",
                "ecr:DescribeRepositories",
                "inspector2:ListFindings",
                "inspector2:ListCoverage",
                "lambda:GetFunction",
                "lambda:ListFunctions"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "ssm:DescribeDocument",
                "ssm:SendCommand"
            ],
            "Resource": "arn:aws:ssm:*:*:document/FutureVuls*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "ssm:SendCommand"
            ],
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Effect": "Allow"
        }
    ]
}