BLOG

2020/01/17

AWS セキュリティのベストプラクティス

【目次】

1. はじめに
2. アカウント開設のベストプラクティス
  a) アカウント開設前に理解しておくべきこと
  b) アカウントの設計
  c) ルートアカウント、CloudTrailの設定
3. サービス設計・構築中のベストプラクティス
  a) ネットワークの設計
  b) IAM
  c) データの暗号化
  d) サービスの保護
  e) SystemsManagerの利用
  f) TrustedAdvisorの利用
4. サービス公開後のベストプラクティス
  a) レポーティング
5. まとめ

 

  1. 1. はじめに
    AWSのセキュリティベストプラクティスについて記載していきます。AWSのセキュリティベストプラクティスは、以下のホワイトペーパーに書いてあります。

    AWSのセキュリティベストプラクティス
    https://d1.awsstatic.com/whitepapers/ja_JP/Security/AWS_Security_Best_Practices.pdf

    ただ、このPDFは100ページと長いため、本記事で、セキュリティについて気を付けるべきことを、以下の3フェーズに分けて記載していきます。
    ・アカウント開設
    ・サービス設計~構築
    ・サービス公開後
    それではAWSセキュリティのベストプラクティスについて見ていきましょう。

     

  2. 2. アカウント開設のベストプラクティス
    アカウント開設に関するベストプラクティスについて記載します。

    1. a) アカウント開設前に理解しておくべきこと
      アカウント開設前に、AWSの責任共有モデルについて理解しましょう。責任共有モデルとは、AWSと利用者側で負う責任の範囲を定めています。例えば、データセンターなどの施設はAWSが管理しているため、利用者側で責任を負う必要がありません。逆に、EC2などのIaaSについてはOSより上のレイヤは利用者の責任となり、定期的なパッチ当て等のセキュリティ対策をする必要があります。

       ※責任共有モデルは以下に詳細が記載されています。
       https://aws.amazon.com/jp/compliance/shared-responsibility-model/
       

    2. b) アカウントの設計
      アカウント開設にむけて、アカウントの設計を行いましょう。アカウント設計はサービス公開後は変更がしにくいので、最初に設計を行っておく必要があります。アカウントは、ログを集める監査用アカウント、料金をまとめる支払い用アカウントといったように、アカウントを分割し、権限を分散させることが推奨されます。Organizationsというサービスを利用し、アカウント設計を実装していってください。
       
    3. c) ルートアカウント、CloudTrailの設定
      アカウント開設後はルートアカウントが払いだされます。払いだされたあとは以下の4つを実施しましょう。

      1. ・MFA(多要素認証)を設定する
        外部からの辞書攻撃はこれを設定することでほとんど防ぐことができます。

      2. ・アクセスキー、シークレットキーを削除・無効化する
        コマンドでAWSを操作するために、アクセスキー、シークレットキーが必要ですが、このキーは漏洩した場合の被害が甚大です。AWSとしても削除・無効化を推奨しているため、アカウント作成後は迅速に削除してください。

      3. ・管理者用IAMユーザの作成
        ルートユーザを使用してアカウントを操作することは推奨されていません。MFAの設定やアクセスキーの削除が完了したら、操作用のIAMユーザを作成し、IAMユーザにてログインしなおします。

      4. ・CloudTrailの設定
        管理者用IAMユーザにてログインをしなおした後は、CloudTrailを有効化して下さい。CloudTrailはAWSで行われた操作をロギングする機能を持っています。例えば、外部からの不正アクセスによりアカウントが乗っ取られ、何らかの操作が行われてしまっても、CloudTrailにすべて記載されます。

     

  3. 3. サービス設計・構築中のベストプラクティス
    サービス設計、構築中のベストプラクティスについて記載していきます。基本は以下の2点を気を付けてください
    ・『許可』は最小限にする
    ・データは暗号化する

    1. a) ネットワークの設計
      ネットワーク設計について記載します。以下3点を考慮してください。

      1. ・基本的に1サービス1VPCで利用していきましょう。
      2. ・セキュリティグループで許可する通信は最小限にしてください。
      3. ・パブリックサブネットとプライベートサブネットに配置するサーバは精査しましょう。例えば重要なアプリケーションが稼働するサーバはプライベートサブネットに配置しましょう。
         
    2. b) IAM
      IAMについて記載します。以下4点を考慮してください。

      1. ・IAMユーザのアクセスキー、シークレットキーは作成後に無効化しましょう。
      2. ・IAMロール、IAMユーザに与える権限は最小限にしましょう。
      3. ・EC2などのサービスに権限を与えたいときは、IAMロールをアタッチしましょう。
      4. ・外部アカウントと連携をする場合も、IAMロールのAssumeRoleで権限を渡し、IAMユーザやアクセスキーでのアカウント連携はよほどのことがない限り行わないようにして下さい。
         
    3. c) データの暗号化
      配置されるデータは暗号化しましょう。たとえば、EBSやRDS、S3で、重要なデータを格納する場合は暗号化を有効にしておいてください。AWSが暗号化のキーを自動でローテーションするので、セキュアに暗号化の実装が行えます。また、KMSの利用も検討しましょう。
       
    4. d) サービスの保護
      AWS WAFやAWS Shieldでアプリケーションへの攻撃や、DDosに備えましょう。安価で導入が可能です。また、AWSではマルウェア対策のサービスは現在していません。必要に応じてマルウェアをスキャン等ができるサードパーティの製品を利用することをお勧めします。
       
    5. e) SystemsManagerの利用
      SystemsManagerを利用することで、以下のセキュリティ施策が実現できます。構築中から利用を検討するといいでしょう。
       ・SSHを利用しないアクセスを行える。セキュリティグループでインターネットからのSSHを許可しないように設定が可能。
       ・自動でサーバにパッチをあてる機能を利用できる。
       ・RDSなどにアクセスするためのユーザID・パスワードを秘匿できるため、アプリケーションに平文で書かなくて済む。
       
    6. f) TrustedAdvisorの利用
      Trusted Advisorを利用すると、セキュリティグループにて不要なポートが開いていないか、といったチェックを行えます。サービス公開前の最終確認として利用するといいでしょう。

     

  4. 4. サービス公開後のベストプラクティス
    サービス公開後のセキュリティベストプラクティスについて説明します。セキュリティ対策は継続的に改善を行っていくことが重要です。

    1. a) レポーティング
      IAMユーザのアカウント使用履歴をレポーティングし、使用していないユーザについては削除を行うなど、不要な権限は削除していきましょう。また、VPCフローログなどを定期的に分析し、不審なIPアドレスなどがあればネットワークACLでブロックしてしまうことも考慮してください。

  5.  

  6. 5. まとめ
    AWSセキュリティのベストプラクティスについて、アカウント設計からサービスリリース後まで、各フェーズで必要なことを行い、AWSを安全に利用しましょう。また、要件によってはサードパーティの製品も積極的に利用し、より強固なセキュリティ施策を実施してください。

 

※下記のブログもご覧ください。
AWS セキュリティの利点

S3 のセキュリティの落とし穴