AWS再入門2018 セキュリティ編

2018.01.31

こんにちは。池田です。最近、休憩時間にオフィスのメンバーとカートレースのテレビゲームをやっているのですが、みんな上手すぎて全然勝てません。

はじめに

AWS再入門2018シリーズ第八弾です。今回はAWS各種サービスの基本にもなるAWS クラウドセキュリティについて基本事項(自分が忘れがちな事など)を振り返りつつ、各種公式ドキュメントより整理していきます。

もくじ

責任共有モデル

  • AWSと利用者が連携してセキュリティの維持向上に取り組む
  • サービスの種類ごとに用意されている
    • インフラストラクチャサービス
    • コンテナサービス
    • 抽象化サービス

インフラストラクチャサービスの責任共有モデル

Amazon EC2、Amazon EBS、Amazon VPCなどのインフラストラクチャサービスに適用されるもの

  • AWSが責任を持って管理するもの
    • 設備
    • ハードウェアの物理セキュリティ
    • ネットワークインフラストラクチャ
    • 仮想化インフラストラクチャ
  • 利用者が責任を持って管理するもの
    • Amazon マシンイメージ(AMI)
    • オペレーティングシステム
    • アプリケーション
    • 送信中のデータ
    • 保管中のデータ
    • データストア
    • 認証情報
    • ポリシーと設定
  • 個々のサービスにおいて両者間の責任について明確に規定されている

コンテナサービスの責任共有モデル

Amazon RDSやAmazon EMRなどのコンテナサービスに適用されるもの

  • AWSが責任を持って管理するもの
    • インフラストラクチャ
    • 基盤サービス
    • オペレーティングシステム
    • アプリケーションプラットフォーム
  • 利用者が責任を持って管理するもの
    • 保存データ
    • コンテナサービスにアクセスするためのファイアウォールルール
    • データの暗号化

抽象化されたサービスの責任共有モデル

Amazon S3やAmazon DynamoDBなどの抽象化されたサービスに適用されるもの

  • AWSが責任を持って管理するもの
    • インフラストラクチャレイヤー
    • オペレーティングシステム
    • プラットフォームの運用
  • 利用者が責任を持って管理するもの
    • データの管理、暗号化
    • ユーザ、グループなどのアクセス権限の管理

Amazon VPC

セキュリティグループ

  • インスタンスの仮想ファイアウォールとして機能
    • インバウンドおよびアウトバウンドのトラフィックを制御
  • VPC内に起動したインスタンスに対し最大5つまで割り当て可能
    • サブネットレベルではなく、インスタンスレベルで動作
    • インスタンスごとに異なるセキュリティグループの割り当てが可能
    • インスタンス起動時に明示しなかった場合、VPCデフォルトのセキュリティグループが自動割り当てされる
  • 許可ルールのみ指定可能
  • ステートフル
  • デフォルトセキュリティグループのルール
インバウンド
送信元 プロトコル ポート範囲 コメント
セキュリティグループ ID (sg-xxxxxxxx) すべて すべて 同じセキュリティグループに割り当てられたインスタンスからのインバウンドトラフィックを許可する.
アウトバウンド
送信先 プロトコル ポート範囲 コメント
0.0.0.0/0 すべて すべて すべての発信 IPv4 トラフィックを許可する
::/0 すべて すべて すべての発信 IPv6 トラフィックを許可するこのルールは、IPv6 CIDR ブロックを持つ VPC を作成するか、既存の VPC と IPv6 CIDR ブロックを関連付けている場合にデフォルトで追加されます。

ネットワーク ACL

  • VPCのファイアウォールとして機能
    • 1つ以上のサブネットにおいてインバウンドおよびアウトバウンドのトラフィックを制御
    • デフォルトは全て許可
  • インバウンドとアウトバウンドそれぞれにルールが必要
  • ステートレス
  • ルール番号の小さいものから順に評価

データの保護

データの保管時および転送時の保護について利用者側で行う

  • リソースに対するアクセスの承認
    • リソースポリシー
    • 機能ポリシー
    • IAMポリシー
  • 暗号化キーの保管と管理
  • Amazon S3での保管時のデータの保護
    • アクセス権限
    • バージョニング
    • レプリケーション
    • バックアップ
    • サーバ側の暗号化
    • クライアント側の暗号化
  • Amazon EBSでの保管時のデータの保護
    • レプリケーション
    • バックアップ
    • 暗号化

侵入テスト

利用しているリソースに脆弱性がないか、侵入可能な設定漏れなどがないかを確認する目的でテストを行う場合の注意点など

  • すべての侵入テストに許可が必要
  • テスト対象とすることが認められているリソース
    • EC2
    • RDS
    • Aurora
    • CloudFront
    • API Gateway
    • Lambda
    • Lightsail
    • DNS Zone Walking
  • テスト対象とすることが認められていないもの(他の利用者との共有リソースに影響が及ぶ可能性があるため)
    • RDSのsmallインスタンスおよびmicroインスタンス
    • EC2のm1.small、t1.microおよびt2.nanoインスタンス

ルートユーザとIAMユーザ

ルートユーザ

  • 当該AWSアカウント内の全てのリソースに対しフルアクセスが許可されている
  • ルートユーザでなければ行えないこと
    • ルートユーザ情報の変更
    • AWSサポートプランの変更
    • 支払いオプションの変更と削除
    • アカウントに対する請求情報の参照
    • AWSアカウントの解約
    • GovCloudへのサインアップ
    • DNS逆引き設定の申請
    • CloudFrontのキーペア作成
    • AWSによるX.509署名証明書の作成
    • 他のAWSアカウントへRoute53で管理しているドメインを移管
    • リソースIDの長いAmazon EC2設定の変更
    • 侵入テストの申請
    • Amazon EC2メール送信制限の緩和申請
    • AWSアカウントの正規ユーザID検索
    • S3バケットポリシーなどでIAMユーザからのアクセスを明示的に拒否した場合のアクセス権変更

IAMユーザ

まとめ

AWSリソースに限らず、あらゆる場面で対策が必要となるセキュリティですが、AWS利用シーンでもここで扱えていないものがたくさんあります。可能なら全てを覚えてしまいたいところですが、なかなかそうもいきません。今回扱わなかった項目やサービスについてはまた改めて整理していきたいと思います。 新しいインスタンスを起動する際や、初めてサービスを利用する場面で設定漏れや設定ミスを起こさないために、定期的に基本を振り返り、作業手順の再確認などをしていこうと心に誓いました。