セキュリティ
責任共有モデル、クラウドのセキュリティはAWS、アプリケーションやデータの暗号化はクライアントが守る。
責任共有モデル
誰がセキュリティに対して責任を持つのか?AWSもクライアントも責任がある。AWSはシステムを構築するオブジェクトの一部に対して責任を持つ。クラウドのセキュリティをAWSが守り、クラウド内のセキュリティをクライアントが守る。
例えばEC2はデータセンターにあるが、そこのセキュリティはAWS。物理的、ネットワーク、ハイパーバイザーなど。その上で走るOSやアプリケーションやデータはクライアントが守る。なぜならどのOSを選ぶかはクライアントの自由で、AWSはそこまで責任を負うことができない。セキュリティパッチも自分たちでメンテナンスする必要がある。データは常にクライアントのセキュリティ責任になる。なぜならクライアントdはデータの公開の有無を自分で選べる。
AWS Identity and Access Management (IAM)
AWSのユーザーと認可の設定。
AWSを作る時AWSアカウントrootユーザーが作られる。すべての権限がある。rootだから。なので、危険なので多要素認証を推奨。ただ、rootですべての処理をやるのはあまりよくないので、AWS Identity and Access Management (IAM)を使うことが当たり前。
IAMユーザー
IAMで作ったユーザーアカウントはデフォルトで何も許可がない。これは安全側に倒している、Principle of least privilege(最小限の権限の原則)。なので使うサービス単位で認可を設定する。
AWSを使う人単位でIAMユーザーを作ることを推奨。
IAMポリシー
IAMポリシーは、ユーザーやグループにまとめて権限を設定できる。たとえば、S3のすべてのバケットにたいしてアクセス可能にするか、一部のバケットのみにするか、など。サービス単位でのアクセスももちろん設定可能。JSONで認可ステートメントを記述することが出来る。EffectはAllow
かDeny
かの二択。
IAMグループ
IAMグループを作ることで同様の権限を持つユーザーをまとめて管理できる。たとえば、「ブログ運営」みたいなグループを作ってブログ運営に必要な権限を認可する。
IAMロール
IAMロールは、例えば異なる役割を日々によって付け替えたい場合、役割を決めて特定の役割を果たせるように出来る。
ロールは一時的な認可として使われる。長期的なアクセスの場合はグループでの管理を推奨する感じ。ロールの変更もオーナーにより権限が与えられる必要がある。
AWS Organizations
組織が巨大な場合、グループやロールの付け替えだと大変になっちゃう。そういうときはAWS Organizationsで複数のアカウントの管理をする。Centralized Managementを提供し、すべての管理がここでできる。また、支払いの統合もここでできる。階層的なアカウントのグループも、組織図にあわせて作ることが可能。全体的なアクセスコントロールをかけることができる。
コンプライアンス
監査がある。税周りの話とか、データの管理とか。AWSでどのサービスを使っているかに寄って、必要なコンプライアンス対応が変わる。GDPRとかもあるし。健康系のデータを持っていたらHIPPAとかもある。まず、セキュリティはAWSのアーキテクチャーである程度対応している。
AWSは様々なリージョンで展開しているので、データの保存場所に関するコンプライアンスに対応することが可能。
AWS Artifactにアクセスし、コンプライアンスの遵守に関するドキュメントなどをダウンロードして、提出することも出来る。
どこまでいっても責任共有モデルは存在しているので、そこは常にクライアント側が守るようにしなくてはいけない。
Distributed Denial-of-service attacks (DDoS)
リクエストを大量に送ることでサービスのダウンを狙うBoTなどを使った分散型攻撃。UDPフラッド、HTTPレベル攻撃、スローロリス攻撃(あえて遅いNWで同時にアクセスしサービスをブロックする)。これらはすでに説明してきたサービスで対応できたりする。
- UDPフラッドはセキュリティグループで対応できる
- スローロリスはElastic Load Balancerで対応できる
これらを超える攻撃もできるが、コスト的に攻撃者に見合わない。そのぐらいAWSのインフラが強い。
AWS Shield
DDoS攻撃からアプリケーションを保護するサービス。AWS Shieldは、スタンダードとアドバンスの2つの保護レベルを提供する。
その他セキュリティサービス
暗号化&複合。保存されてるデータの暗号化(DynamoDBなどのデータの暗号化)とデータの送付時の暗号化(SSLなど)の2種類がある。
Amazon Inspector
自動化されたセキュリティアセスメントのサービス。ベストプラクティスを教えてくれる。
- ネットワーク設定
- Amazonエージェント
- セキュリティアセスメント
問題がアレばコンソールで表示してくれる。
Amazon GuardDuty
ネットワークアクティビティなどをログから見ながら危険をアラートしてくれる。他のAWSサービスと独立して動くので、影響を受けない。