SecurityHubの「AWS 基礎セキュリティのベストプラクティス」の【EC2.7】がFailedのままになっている理由を教えてください

2021.09.21

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

困っていた内容

SecurityHubの「AWS 基礎セキュリティのベストプラクティス」における、【EC2.7】 EBSのデフォルト暗号化を有効にする必要があります について教えてください。

こちらに対応するため、複数のAWSアカウントで、 EC2コンソールを使用して、EBS ボリュームのデフォルトの暗号化を有効にしました。 ところが、1つだけFailed(失敗)のままになっているアカウントがあります。

このアカウントでも、他のアカウントと同様の対応を行ったように記憶しているのですが、 【EC2.7】 がFailedになっている理由と対処方法について教えてください。

どう対応すればいいの?

考えられる要因としては、AWS Config がサービスにリンクされたロールを使用できないことにより Config ルールを実行できていない、という可能性があります。

EC2.7 コントロールはそのチェックのために Config ルール ec2-ebs-encryption-by-default [1] を使用します。 調べてみたところ、Security Hub が EC2.7 用に使用する Config ルールの実行時に、エラーが発生していました。具体的には、Config がサービスにリンクされたロール AWSServiceRoleForConfig を引き受けられないことでエラーが発生しています。

Config ルールの実行に失敗している場合、新しい評価結果が生成されません。 このため、評価結果が更新されずに Failed が継続している状況ではないかと考えられます。

対処方法としては、 AWS CLI の list-roles コマンド [2] をご利用の上、Config が使用するサービスにリンクされたロール AWSServiceRoleForConfig が存在しているか、ご確認ください。

aws iam list-roles --path-prefix "/aws-service-role/config.amazonaws.com/"

ロールが存在していない場合には、ドキュメント [3] の手順によりロールを作成して、事象が改善するか、確認してください。

参考資料

[1] ec2-ebs-encryption-by-default

[2] list-roles

[3] Using Service-Linked Roles for AWS Config