今回はAWSを安全に使うための方法についてご説明します。
AWSは簡単に始められるのでセキュリティのことまで気にしていない場合も多い
AWSは簡単に使い始められ、サーバを構築するだけであれば簡単にできてしまうので、セキュリティ面まで気にせずに使ってしまうという場合もあるかと思います。
私がこれまで見てきた環境の中でも下記のようなものがありました。
- AWSコンソールへのログインはrootアカウントを全員で使いまわしている
- EC2インスタンス起動時のデフォルトユーザー(ec2-user, centos, ubuntuなど)を全員で使いまわしており、ssh秘密鍵も共有している
- OSのセキュリティアップデートを起動時から一度も行なったことがない
- IAMロールには全て管理者権限(AdministratorAccess)を与えて何でもできるようにしている
このような状態だと、セキュリティ事故がもし発生した場合でも誰が何をやったかあとで追跡することもできません。
ただ、いきなりセキュリティを高めようと思っても何から手をつけていいかわからないということがあるかと思います。
そういった場合にオススメの文書があります。
CISベンチマーク
CISというのは、米国インターネット・セキュリティー・センター(Center for Internet Security)の略で、米国政府機関と、企業、学術機関などが協力して、インターネット・セキュリティ標準化に取り組む団体です。
この団体が作成しているベンチマークという資料には、AWSだけではなく、Google Cloud, Azureなど多くのクラウドサービスを安全に使うための手順が具体的に記載されています。
また、Apache, Oracle, MySqlなどのミドルウェアについての資料もあります。
クレジットカード業界のセキュリティ基準であるPCI DSS(Payment Card Industry Data Security Standard)では、下記のような要件があります。
要件 2.2 すべてのシステムコンポーネントについて、構成基準を作成する。この基準は、すべての既知のセキュリティ脆弱性をカバーし、また業界で認知されたシステム強化基準と一致している必要がある。
業界で認知されたシステム強化基準のソースには以下が含まれる(これらに限定されない)。
- Center for Internet Security(CIS)
- 国際標準化機構(ISO)
- SysAdmin Audit Network Security(SANS)Institute
- 米国国立標準技術研究所(NIST)
つまり全てのシステムの構成要素についてセキュリティの分野で認知された基準に従って設定する必要があるということで、CISはPCI DSSでも認知された基準の例としてあげられているということです。
ですので、このベンチマークを下記のサイトからダウンロードして、それに従って一つ一つ設定していくことでセキュリティを高めることができるということになります。
AWSのインフラの場合は、CIS_Amazon_Web_Services_Foundations_Benchmark_v1.2.0
Amazon Linuxの場合は、CIS_Amazon_Linux_2_Benchmark
を参照します。
最初に説明したような、
- rootアカウントを共有しない
- デフォルトのユーザーを無効にする
といったこともCISベンチマークの中に入っており、それを確認するためのコマンドも記載されています。
PCI DSSの要件を満たすためにもCISベンチマークを使うことができます。
ただ、注意点として、パスワード要件などPCIの要件と異なる場合がありますが、その場合はPCI DSSの要件を優先して問題ありません。
また、CISベンチマークに記載されている対策でも、その対策を実施するのと同様のリスク軽減が他の方法で実現できていると判断できるのあれば、それを理由にその対策を実施しないという判断をすることもできます。
PCI DSSの用語でいう、代替コントロールという考え方です。
代替コントロールとは、PCI DSSでは「事業体が正当な技術上の制約または文書化されたビジネス上の制約のために記載されているとおりに明示的に要件を満たすことができないが、その他の(つまり代替の)コントロールを通じて要件に関連するリスクを十分に軽減している場合」に、検討できるものとしています。
重要なのは、一つ一つの要件を読み込み、リスクがあるかないか判断していくことです。