AWSome Day モジュール3:ネットワークとセキュリティ

AWSome Day Online Conferenceのモジュール毎に記事をまとめていきます。
AWSome Day Online Conferenceの全体の概要をまとめた記事はこちらです。

関連記事

AWSome Day Online Conferenceに参加したので、せっかくなのでその内容についてまとめていきたいと思います。 AWSome Day Online Conferenceとは AWSome Day Onlin[…]

AWS logo

今回はモジュール3についてまとめていきます。

モジュール3の概要

モジュール3のテーマはネットワークとセキュリティです。
クラウドサービスはウェブ上からクラウドのリソースにアクセスするため、セキュリティを保つために適切なアクセス権限の付与やクラウド内のネットワークの構築などが必要です。
最初にAWS上のネットワーク構築の方法についてデモを交えて説明があります。
その後AWS上でのセキュリティについての重要な考え方である責任共有モデルを学び、セキュリティを保つためのアクセス制御について説明があります。

内容の詳細

AWS上のネットワーク

AWSはクラウドサービスなのでリソースはネットからアクセスします。
そのため、アクセスを制御するためにクラウド上でネットワークを構築する必要があります。
AWSにはネットワークを構築するためのサービスが用意されており、それを駆使してシステムを構築していきます。

Amazon Virtual Private Cloud(Amazon VPC)

AWS上でネットワークを構築するサービスの代表的なものとしてAmazon Virtual Private Cloud(Amazon VPC)があります。
Amazon VPCはAZに跨って、仮想サーバーやデータベースなどのサービスを一つのネットワークとしてまとめることができるサービスです。
Amazon VPCで構築されたネットワークは内部へのアクセスの制御や監視、内部のサービスをサービス毎にインターネットと繋げるかの設定などが行えます。
オンプレミスでもどのサーバーをネットに繋ぐかなどをシステム構築にて考えると思いますが、Amazon VPCはAWS上でそれらの設定を行うためのサービスとなります。

サブネット

Amazon VPCで構築したネットワーク内で、さらに各サービスを分けたネットワークのグループをサブネットと言います。
サブネットはプライベートサブネットとパブリックサブネットに分かれており、プライベートはAmazon VPC内からしかアクセスできないネットワークで、パプリックサブネットはAmazon VPCの外からもアクセスできるネットワークとなります。
サブネットを設定することでシステムの中で公開するものを公開しないものを設定することができます。

Internet Gateway

Internet GatewayはAmazon VPCのネットワークアクセスを監視するためのサービスです。
パブリックサブネットとして設定したサービスへのアクセスはInternet Gatewayを通じてアクセスすることになり、不正なアクセスなどがないかなどをInternet Gatewayを利用して監視することができます。

AWSのセキュリティ

クラウドサービスはネットワークを通じてクラウドリソースにアクセスを行うので、当然そこにセキュリティ上の問題が発生します。
セキュリティに必要なことは無数にありますが、今回は責任共有モデルとAWS Identity and Access Management(AWS IAM)によるアクセス制御について簡単にまとめていきます。

責任共有モデル

責任共有モデルとは簡単にいうと、システムにおけるセキュリティ・コンプライアンスの責任はAWSが全て負うのではなく、AWSが負う部分と利用者が負う部分があり双方で責任領域を分割・共有しているという考え方です。
データセンターの物理的な堅牢性やOS、サービスなどの脆弱性の解消などセキュリティ上の様々な必要なことをやってくれるのはクラウドサービスの利点ですが、クラウド上に構築するシステムの中身はクラウドの利用者が用意するものであり、そこにもセキュリティ上考える必要があることはたくさんあります。
そこで、AWSはセキュリティに関しての考え方として責任共有モデルというものを我々利用者に対して提示し遵守するように求めています。
インフラストラクチャーなどのセキュリティはAWSが行ってくれますが、とはいえAWSが利用者が構築したシステムのセキュリティ・コンプライアンスについて全ての責任を負えるわけではありません。
確かに、利用者が勝手にローンチしたシステムで脆弱性が見つかったとして、その責任をAWSが負うのはおかしいですよね。
AWSでシステム構築する際、当然ですがセキュリティ・コンプライアンスは丸投げせずにしっかりと考えてね、ということをAWS側が求めているのが責任共有モデルというわけです。

AWS Identity and Access Management(AWS IAM)によるアクセス制御

AWSでは利用者が適切なセキュリティを構築するために各サービスへのアクセス制御を細かく行うことができます。
それらのアクセス制御を行うためのサービスがAWS Identity and Access Management(AWS IAM)です。
Amazon IAM を利用するとサービスのアクセスを一括で管理ができ、多要素認証(MFA)の設定なども行うことができます。
アクセスを管理する方法として、ユーザーに対して行うIAMユーザー・IAMユーザーグループを設定する方法と権限のないユーザーやサービスに対してアクセス権を委任できるIAMロールがあります。

IAMユーザー

IAMユーザーとは、AWSアカウント内に任意の数だけ作ることのできるユーザーアカウントで、それぞれ作成したIAMユーザーアカウントに対してアクセス制御の設定を行うことができます。
IAMユーザーはユーザー毎に設定するので、一つのアカウントで一人の人間を扱います。
そのため、IAMユーザーの認証にはMFA認証などを用います。

IAMユーザーグループ

IAMユーザーグループとは、同じ権限をもつIAMユーザーのグループを作成できる機能です。
一人一アカウントのIAMユーザーに対して、いちいちそれぞれのアカウントでアクセス権限を付与するのはとても手間がかかります。
IAMユーザーグループを用いることで、新たにIAMユーザーを追加した際などにそのIAMユーザーをIAMユーザーグループに加えることで同じ権限を付与することができます。
使い方としては、全てのリソースにアクセス可能な管理者権限を持ったグループと開発に必要なリソースだけにアクセス可能な開発者グループを作成し、プロジェクトのチームメンバーそれぞれを振り分けるといった具合になるかと思います。

IAMロール

IAMロールもIAMユーザーなどと同様にアクセス許可を設定するものですが、そのアクセス権の設定はユーザーに紐づけるのではなく普段はアクセス権を持っていないユーザーなどに委任するために利用します。
このような用途の違いから、IAMロールにはIDやパスワードなどの長期認証情報はなく、代わりにアクセス権を委任した際にロールセッションの一時的な認証情報が付与されます。
アプリ内でIAMユーザーの認証情報を保持することなくリソースへのアクセスを行う場合や、あるユーザーが通常はないアクセスをする必要がある場合などの場面でIAMロールを利用することで安全性を保ちながらアクセス制御を行うことができます。

まとめ

  1. Amazon VPCを利用すればAWS上に独立したネットワークを構築できる
  2. Amazon VPC内ではプライベートとパブリックの2種類のサブネットを構築し、各リソースのネットワークアクセスを設定できる
  3. Internet Gatewayを利用してAmazon VPCへの出入りを監視できる
  4. AWSのセキュリティはベンダーとユーザーが双方に責任を負う責任共有モデルに則って設計されている
  5. AWS IAMはIAMユーザー・IAMユーザーグループ・IAMロールの3種類のアクセス制御の設定方法がある

現代のシステムにおいてインターネットへの接続がほぼ必須となっています。
AWSでは直感的にネットワークの設定・構築が行えるようになっているので、自分のシステムを把握した上で正しく構築できるようにAWSでの設定方法などをしっかりと押さえることが大切です。
セキュリティに関しても、AWS IAMを利用することで一元管理できるようになっているので、扱い方を覚えた上で適切にアクセス制御をすることが重要となります。
特に、責任共有モデルという考えを知っているかどうかはAWS上のリソースのセキュリティを高める上で重要な要素となると思います。
しっかりと学び安全なシステムを作れるようにしていきましょう。
ここまで読んでいただきありがとうございました。
それでは、また。