AWS Configを用いた発見的統制における大阪リージョン利用時の注意点
投稿日: 2023/3/15
はじめに
AWS Configの利用は、セキュリティおけるデファクトスタンダードで有効化し、日本国内でAWSを利用している皆さんは、東京リージョンを軸に活用されていると思います。
そして、発見的統制で、AWS ConfigのAWSマネージドルールを活用するケースが多いと思います。
本題の注意点で大阪リージョンを挙げた理由は、国内のDRで大阪リージョンを採用するケースが多く、東京リージョンと同じ認識で取り組むと失敗します。
AWSサービスの利用検討時、利用予定のリージョンで対応可否を確認する作業はデファクトスタンダードになっています。
今回のAWS Configを例に挙げると、大阪リージョンは対応しています。しかし、そこからもう一歩踏み込んで、AWS Configのマネージドルールまで確認を行っていますでしょうか?
調査を忘れている方が多いのではないでしょうか?
詳細設計で、思わぬ落とし穴に陥らない為に本記事を記載しました。
なお、本情報ですが、2023年1月13日時点の情報を元に掲載しています。
AWS Configルールの適合パック「AWS-Control-Tower-Detective-Guardrails」における大阪リージョン対応状況
マルチアカウント環境でよく活用する適合パックを例に、大阪リージョンの適合状況を確認します。
この作業は地道にAWS ドキュメントとの突合になりますがとても重要な作業です。
以下の表を見ることで、大阪リージョンでは多くのマネージドルールがサポートしていない事が分かると思います
AWS Configルールの 適合パック「AWS-Control-Tower-Detective-Guardrails」に 含まれるマネージドルール |
大阪リージョンに 未対応のマネージドルール |
---|---|
autoscaling-launch-config-public-ip-disabled | 〇 |
cloudtrail-enabled | |
dms-replication-not-public | 〇 |
ebs-optimized-instance | |
ebs-snapshot-public-restorable-check | 〇 |
ec2-instance-no-public-ip | 〇 |
ec2-volume-inuse-check | |
eks-endpoint-no-public-access | 〇 |
elasticsearch-in-vpc-only | 〇 |
emr-master-no-public-ip | 〇 |
encrypted-volumes | 〇 |
iam-user-mfa-enabled | |
restricted-ssh | 〇 |
lambda-function-public-access-prohibited | 〇 |
mfa-enabled-for-iam-console-access | |
no-unrestricted-route-to-igw | 〇 |
rds-instance-public-access-check | |
rds-snapshots-public-prohibited | 〇 |
rds-storage-encrypted | |
redshift-cluster-public-access-check | 〇 |
restricted-common-ports | 〇 |
root-account-hardware-mfa-enabled | |
root-account-mfa-enabled | |
s3-account-level-public-access-blocks-periodic | |
s3-bucket-public-read-prohibited | |
s3-bucket-public-write-prohibited | |
s3-bucket-versioning-enabled | |
sagemaker-notebook-no-direct-internet-access | 〇 |
ssm-document-not-public | |
subnet-auto-assign-public-ip-disabled | 〇 |
AWS Security Hubでは?
大阪リージョンでAWS Configの未サポートのマネージドルール「encrypted-volumes」はどうでしょうか?
AWS ドキュメントを見ると、サポートしていないリージョンに「大阪リージョン」の記載はありません。

安心するのはまだ早いです。
AWS Security Hubを大阪リージョンで有効化して確認しました。
以下のとおり、「[EC2.3] 添付済みの EBS ボリュームは、保管中に暗号化する必要があります」(encrypted-volumes)は、サポートしていません。
ドキュメントの不備と思います。

念のため、英語サイトも確認しました。
日本語サイトと同じですね。ドキュメントの不備と思います。
このように、ドキュメントの確認だけでは危ない面があります。

回避策
AWS Configのマネージドルールがない発見的統制は、AWS Configのカスタムルールで作成するしかありません。
慌てないください。AWSのGithubに流用できるカスタムルールのコードが存在している事があります。
無い場合は、新たにLambdaで作成するか、別のマネージドルールで包括可否を判断して回避する必要があります。
※AWS ConfigルールのGithub
https://github.com/awslabs/aws-config-rules
encrypted-volumesは、あります。
https://github.com/awslabs/aws-config-rules/tree/master/python/EBS_ENCRYPTED_VOLUMES_V2
「EBS_ENCRYPTED_VOLUMES_V2.py」をそのままPython 3.9で動作しました。

まとめ
- AWS 初めて利用するリージョンは、サービス対応有無の確認で終わらせずに、AWS Configのマネージドルールまで掘り下げて、リージョン単位で対応有無を確認しましょう
- ドキュメントの確認だけでは危ない面があります。実際に利用するリージョンで有効化して確認しましょう
- 対応していないマネージドルールは、一度、AWSのGithubで流用できるコードが無いか確認しましょう
おまけ
encrypted-volumesのルールですが、AWSマネージドルールとGithubのEBS_ENCRYPTED_VOLUMES_V2コードでは挙動が異なります。
<挙動の差異>
-
encrypted-volumes
EBSがEC2にアタッチされていないEBSボリュームは、チェック対象外 -
EBS_ENCRYPTED_VOLUMES_V2
EBSがEC2にアタッチされていないEBSボリュームも、チェック対象
Appendix
-
AWS Configルールの適合パック「AWS-Control-Tower-Detective-Guardrails」
https://github.com/awslabs/aws-config-rules/blob/master/aws-config-conformance-packs/AWS-Control-Tower-Detective-Guardrails.yaml -
AWS Config マネージドルールのリスト
サポートしているリージョンの確認
https://docs.aws.amazon.com/ja_jp/config/latest/developerguide/managed-rules-by-aws-config.html -
AWS Security Hub 「[EC2.3] 添付済みの EBS ボリュームは、保管中に暗号化する必要があります」
https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/securityhub-standards-fsbp-controls.html#fsbp-ec2-3
おわりに
CTCは、AWSのビジネス利活用に向けて、お客様のステージに合わせた幅広い構築・運用支援サービスを提供しています。
経験豊富なエンジニアが、ワンストップかつ柔軟にご支援します。
ぜひ、お気軽にお問い合わせください。