自分の AWS アカウントとそのリソースをセキュアにするためのベストプラクティスについて教えてください。
AWS では、アカウントの安全確保に役立つツールを多数ご用意しています。ただし、これらの対策の多くはデフォルトでは有効化されていないため、実際に使用するには、お客様に自ら必要な措置を取っていただく必要があります。以下、アカウントとリソースの安全確保に役立つベストプラクティスの事例をご紹介します。
パスワードとアクセスキーを保護する
パスワードとアクセスキーは、アカウントにアクセスする際に使用される主要な 2 種類の認証情報です。これらの認証情報は、どちらも AWS のルートユーザーアカウント または AWS Identity and Access Management (IAM) の個々のユーザーに適用できます。パスワードとアクセスキーは、他の機密の個人データを保護する場合と同様にできる限り安全に保護することを強く推奨します。一般にアクセス可能なコード (つまり公開の Git リポジトリ) にこれらを埋め込むことは、絶対におやめください。さらなるセキュリティ強化のため、すべてのセキュリティ認証情報は頻繁にローテーションまたは更新してください。
ドキュメントまたはコードのバージョニングおよび共有に GitHub を使用している場合は、git-secrets を使用することをご検討ください。これにより、AWS 認証情報とその他機密情報をスキャンすることができます。git-secrets を使用すれば、機密情報を含むコードまたはドキュメントのコミットの回避に役立ちます。
Multi-Factor Authentication (MFA) デバイスをセットアップして、API アクセス権のみを持つアクセスキーを保護します。MFA を使用すると、どの API コマンドで MFA トークンを実行すべきかを細かく調整できます。
パスワードまたはアクセスキーペアの漏洩が疑われる場合は以下の対策を講じます。
リソースへのルートユーザーアクセスを制限する
ルートユーザーのアカウント認証情報 (ルートパスワードまたはルートアクセスキー) は、アカウントとそのリソースへの無制限のアクセス権を付与します。したがって、アカウントへのルートユーザーアクセスをセキュア化し最小限に抑えることがベストプラクティスとなります。
アカウントへのルートユーザーアクセスを制限するには、以下の戦略を考慮します。
- たとえアクセスする人がユーザー自身だけであっても、アカウントへの日常的なアクセスには IAM ユーザーを使用する。
- ルートアクセスキーの使用を停止し、代わりに、それらを IAM アクセスキーにローテーションする。ルートアクセスキーは削除する。
- アカウントのルートユーザーには MFA デバイスを使用する。
IAM ユーザーとそのポリシーを頻繁に監査する
IAM ユーザーと作業を行うときは、以下のベストプラクティスを考慮します。
- IAM ユーザーには、可能な限り最も厳格なポリシーと、目的のタスクを実行するための必要最低限の許可 (最小限の特権) のみを付与するようにする。
- タスクの各セットに異なる IAM ユーザーを作成する。
- 同じ IAM ユーザーに複数のポリシーを関連付けるときは、厳格度が最も低いポリシーが優先されるように留意する。
- IAM ユーザーとその許可を頻繁に監査し、使用されていない IAM ユーザーまたはキーは削除する。
- IAM ユーザーがコンソールにアクセスする必要があるときは、そのユーザーの許可を制限したまま、コンソールへのアクセスを許可するパスワードをセットアップできる。
- コンソールへのアクセス権を持つ各 IAM ユーザーに MFA デバイスを個別にセットアップする。
セキュアなポリシーを定義するときは、AWS Policy Generator が役に立ちます。これらに対処するために利用可能な一般的なビジネスユースケースやポリシーの例については、ビジネスユースケースを参照してください。
アカウントとそのリソースをモニタリングする
アカウントのアクティビティに関する質問は、AWS サポートでお問い合わせいただけます。ただし、プライバシーおよびセキュリティ上の理由から、AWS は、問題を調査するためにお客様の使用状況を能動的にモニタリングすることはなく、限られたツールのみを使用します。異常なアクティビティやアカウントへのアクセスを検出するには、アカウントとそのリソースを能動的にモニタリングすることがベストプラクティスとなります。以下のソリューションのうち、1 つまたは複数をご検討ください。
- CloudWatch 請求アラートを有効化して、請求額がお客様の定義したしきい値を超えたときに自動通知を受け取る。
- CloudTrail ロギングサービスを有効化して、特定の API コールの開始にどの認証情報がいつ使用されたかを追跡する。誤った使用または不正な使用かどうかを判断するのに役立ちます。また、そういった問題を減らすための適切な措置も講じることができます。
- アクセスキーの使用状況のモニタリングと併せて CloudTrail および CloudWatch を使用し、異常な API コールに関するアラートを受け取る。
- リソースレベルのロギング (インスタンスまたは OS レベル等) を有効化する。
注意: 可能であれば、ベストプラクティスとして、定期的に使用するリージョンだけではなく全リージョンのロギングを有効化します。