多くの組織ではパブリッククラウドサービスをビジネスで利用して、クラウドセキュリティ対策について検討しているかと思います。
データセンターやサーバルームでシステムを構築する場合、ネットワークやサーバだけでなく、物理的なアクセスセキュリティも検討しなくてはなりませんでした。パブリッククラウドの環境では物理環境のコントロールはプロバイダー側の責任範囲になりますが、クラウドに論理的な領域(アカウントやテナントと呼ばれるもの)が割り当てられ、ユーザーはその領域にクラウドサービスが提供するリソースを作成できます。
データセンターにサーバが配置できたり、ラックを開けてサーバを操作するようなことが、クラウドの論理的な領域で行われるのです。
パブリッククラウドユーザーはこの操作についてしっかり管理しないと、システムが勝手に作られ、しかも稼働していることも忘れ、放置されることがあります。
そのためサーバやアプリケーションに加えてテナントをコントロールすることは重要です。
そこで今回ご紹介したいのが、CIS AWS Foundations Benchmarks v1.2というものです。これは、AWS上でセキュリティを強化するために、推奨されるセキュリティコントロールの有効性を確認するチェックリスクです。
チェックリストは以下4つのカテゴリに分類されており、各カテゴリに複数あるセキュリティコントロール(項目)が有効になっているか確認することができます。
1. Identity and Access Management(22項目) 2. Logging(9項目) 3. Monitoring(14項目) 4. Networking(4項目)
今回、Identity and Access Management(22項目)のコントロールの内容をご紹介します。
このコントロールは、rootユーザーに対するセキュリティとIAMユーザーのパスワードポリシーやアクセスキーに関連するセキュリティ、IAMロールやポリシーの管理に関する内容です。
1.1 Avoid the use of the “root” account (Scored)
まず、rootアカウントについて理解する必要がありますが、rootアカウントはAWSのアカウント作成時に登録したアカウントになり、rootは強力なアカウントのため、通常の運用では使用を避けることが推奨されます。
1.2 Ensure multi-factor authentication (MFA) is enabled for all IAM users that have a password (Scored)
IAMユーザーはAWSアカウント内で管理するユーザーで、必要な権限を割り当て、管理することができます。異なるアカウント間でも信頼関係を結んで別のアカウントにアクセスする権限を付与することができます。このIAMユーザーにはパスワードだけの認証ではなく二要素認証を有効にして、認証を強化することを推奨してます。
1.3 Ensure credentials unused for 90 days or greater are disabled (Scored)
90日以上利用していないユーザーがいましたらIDを無効することを推奨してます。
1.4 Ensure access keys are rotated every 90 days or less (Scored)
アクセスキーが発行して90日経つ前に再発行して新しいアクセスキーを利用することを推奨してます。
1.5 Ensure IAM password policy requires at least one uppercase letter (Scored) 1.6 Ensure IAM password policy require at least one lowercase letter (Scored) 1.7 Ensure IAM password policy require at least one symbol (Scored) 1.8 Ensure IAM password policy require at least one number (Scored) 1.9 Ensure IAM password policy requires minimum length of 14 or greater (Scored) 1.10 Ensure IAM password policy prevents password reuse (Scored) 1.11 Ensure IAM password policy expires passwords within 90 days or less (Scored)
こちらはIAMのパスワードポリシーについての項目です。少なくとそれぞれ1文字以上の大文字、小文字、記号、番号を含め、長さが14文字以上、同じパスワードが利用できなく、90日間の有効期限のパスワードが設定できるポリシーを組むことを推奨してます。
1.12 Ensure no root account access key exists (Scored)
rootアカウントではアクセスキーを発行しないことを推奨してます。
1.13 Ensure MFA is enabled for the “root” account (Scored) 1.14 Ensure hardware MFA is enabled for the “root” account (Scored)
rootアカウントを二要素認証にし、ハードウェアトークンを利用することを推奨してます。
1.15 Ensure security questions are registered in the AWS account (Not Scored)
AWSのアカウントにセキュリティの質問を登録する。
1.16 Ensure IAM policies are attached only to groups or roles (Scored)
IAMポリシーがグループやロールに割り当てられている。つまりユーザーに直接割り当てるのではなく、グループやロールに割り当て、そこにユーザーを割り当てることを推奨してます。
1.17 Maintain Current contact details (Not Scored) 1.18 Ensure Security contact information is registered (Not Scored)
アカウントの連絡先が登録され、最新の状態になっているか?
1.19 Ensure IAM instance roles are used for AWS resource access from instances (Not Scored)
インスタンス内のアプリケーションがAWSリソースにアクセスする場合、サーバ内で保持したクレデンシャル情報でアクセスするのではなくインスタンスに割り当てたロール権限でAWSリソースにアクセスできるようになるため、AWSリソースにアクセスする必要がある場合は、インスタンスに適切な権限を付与したロールを割り当てることを推奨してます。
1.20 Ensure a support role has been created to manage incidents with AWS Support (Scored)
AWS Supportがインシデントを管理するためにサポートロールが作成されているか?
1.21 Do not setup access keys during initial user setup for all IAM users that have a console password (Not Scored)
コンソールパスワードを持つIAMユーザー作成の段階でのアクセスキーが発行しないようにすることを推奨してます。
1.22 Ensure IAM policies that allow full “*:*” administrative privileges are not created (Scored)
ポリシーに管理者権限を与えないで最小限の権限を設定することを推奨してます。
今回、コントロールの内容から、1度設定すれば良い項目や、90日以上、利用されていないIAMユーザーがあるか、アクセスキーが更新されていないかなど定期的に確認すべき項目もあります。
定期的にレビューする仕組みが必要であることもご理解いただければと思います。