AWS IAMを使ったアクセスコントロールについて

プログラミング
IAMとはなにか?またIAMを使うことで、AWSにおいてどのようにユーザーIDのコントロールを行うのか紹介します。またシングルサインオンというGoogleやFacebookなどの外部IDを使って、AWSへログインできる仕組みについても解説します。最後にシングルサインオンを支える技術である、SAML(読み方はサムル)とフェデレーションについても紹介します。
AWS IAMを使ったアクセスコントロールについて

システムやサービスを構築するとき、ユーザーIDをどうコントロールするかは大事な議論ポイントになります。AWSではIAMというアクセスコントロールを行うサービスが提供されています。
IAMを使うことでAWSにおいてどのようにIDコントロールを行うかをご紹介します。

またシングルサインオンという仕組みについても解説します。IAMが管理できるのは、あくまでAWS上に作成されたIDのコントロールです。しかしシングルサインオンを使用することで、GoogleやFacebookなどのIDを使ってログインできるようになります。

最後に、シングルサインオンを支える技術であるSAML(読み方はサムル)およびフェデレーションという仕組みについても、かんたんに紹介します。

IAMとは

IAMとはAWS Identity and Access Managementの略で、ユーザーからAWSへアクセスをコントロールするための仕組みです。

IAMがサポートしているアクセスコントロールは以下の通りです。

  • 特定のサービス(リソース)へのアクセス許可
  • 特定の操作を行うための許可
  • ユーザー認証

通常なにかしらのサービスを立ち上げる際は複数のユーザーが使うことがほとんどです。そのため、どのユーザーに対して、どのサービスへアクセスできるか、またどの操作を許可するかといったコントロールをする必要があります。

極端な話をすると、エンドユーザーに管理者権限を与えてしまえば、システムの影響を考慮せずに不要と判断したデータを消してしまうケースが考えられます。こういった不慮の事故を防ぐために、システムへの知見がある人に管理者権限を与え、エンドユーザーにはデータを閲覧する権限のみを付与する、といった対策を行うことはよくある話です。

そのためシステムを安全に使うために、IAMの設定は必ず行う必要があります。
それではIAMの概要に続いて、IAMの使い方を見ていきましょう。

IAMを使ったアクセスコントロール

IAMを使ったアクセスコントロールは、以下の手順で行います。よくあるシステムに対するアクセスコントロールとなんら変わりありません。

アクセスコントロール設定手順

  • ポリシーを設定する
  • 1人に対して1ユーザーを作成する
  • ユーザーグループを作成する
  • ユーザーごとにグループを利用してアクセス権限を付与する

ここまでで使用するサービスはユーザー、グループ、ポリシーです。

その一方で、ロールと呼ばれるAWS独自の仕組みも存在します。
ロールとはあるサービスから別サービスへアクセスする場合に必要な設定です。例えば、EC2から別サービスであるS3やDynamoDBへ接続する場合に利用します。
あるサービスから別のサービスへ安全にアクセスできるように、アクセスキーやトークンを利用して通信を暗号化する仕組みがAWSには用意されています。ロールとはこの仕組みを利用するために必要な設定です。

Googleなどの外部IDでAWSにログインする方法について

ここではGoogleやFacebookのようなAWS以外のIDを利用したログイン方法の概要と仕組みを説明します。

シングルサインオンとは

シングルサインオンとは複数のサービスに一つのID情報でログインできる仕組みです。シングルサインオンを使うことで、認証サーバーに一度ログインしただけで、ほかのサービスのログインが不要になります。

例をあげるなら、Googleが提供している「G Suite」が該当します。G Suiteでは一度Googleにログインすれば、すべてのサービスをログインせずに利用できます。

SAMLとは

SAMLは「サムル」と呼びます。正式名称はSecurity Assertion Markup Languageです。SAMLはシングルサインオンを実現するための仕組みです。またユーザーごとに属性情報を付与することもできるため、ユーザーグループによるアクセスコントロールも可能としています。

SAMLの導入メリットは2つあります。

1つ目は、利便性の向上です。一度ユーザー認証を行うだけで、ほかのサービスを利用するときは認証が一切必要ないというのは、サービス利用者からみればとても楽です。
2つ目は、セキュリティ性の向上です。SAMLを導入することで、認証を管理している仕組みが一か所に集中するため、結果として、セキュリティ性が向上します。

SAMLの読み方と説明に続いて、仕組みにも目を向けていきましょう。

SAMLの仕組み

ここではSAMLの仕組みについて解説します。

認証情報を提供する・利用する仕組みがSAMLにはあります。提供する側をidP(Identity Provider)と呼び、利用する側をSP(Service Provider)と呼びます。SAMLでシングルサインオンを行う仕組みにはユーザー、idP、SP、3つの役割が存在します。この3つを連携して、ユーザー認証を行います。

認証のプロセスは以下の通りです。

ユーザーがクラウドサービスにアクセス(ユーザー)
 ↓
ユーザー確認後、SAML認証要求を生成(SP)
 ↓
SAML認証要求とともにIdPへ接続(SP)
 ↓
SAML認証を解析・認証(idP)
 ↓
ブラウザ上でユーザー認証(ユーザー)
 ↓
SAML認証応答を作成(idP)
 ↓
SAML認証応答を利用して、サービスへアクセス(ユーザー)
 ↓
SAML認証応答の検証とユーザーログイン許可(SP)
 ↓
サービスへログイン(ユーザー)

SAMLによるシングルサインオンの仕組みの図は、以下のスライドが参考になります。

<参考>
シングルサインオンの歴史とSAMLへの道のり

システムやサービスへログインするたびに、IDとパスワードの入力を面倒に感じるユーザーは多いです。また最近のサービスはGoogle、Facebook、Twitterといった外部サービスのアカウントでログインできるようになっており、シングルサインオンが一種のデファクトスタンダードになりつつあります。

そういった仕組みに対応するため、通常はWindowsのActive Directoryなどのディレクトリサービスを利用します。AWSではシングルサインオンを簡単に実装できるよう、SAML2.0フェデレーションという仕組みが存在します。

フェデレーションとはインターネット上におけるユーザー認証連携のことを意味しており、あるサービスにて認証済みのIDを利用して別サービスへログインする仕組みのことを指します。

フェデレーションの仕組みは以下のスライドにある図がわかりやすいです。

<参考>
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014

Google、Facebook、Twitterといったパブリックサービスのアカウントを利用したIDフェデレーションについては、Amazon Cognitoというサービスを使うことで実現できます。

まとめ

少し長くなりましたが、いかがだったでしょうか?
IAMの概要とその使い方からはじまり、シングルサインオンがどういうものなのか、さらにはSAMLやフェデレーションという考え方と仕組みについても解説を行いました。

これらの仕組みはAWSにおける特別なものではなく、通常のシステムでよく使われている仕組みを便利に使えるサービスとして用意されているものです。
AWS自体はあくまでインフラを素早く構築できるものであり、その根幹を支えている技術の概要を抑えることがAWSをより便利に使いこなす上で近道になります。


この記事のキーワードに関する勉強会・イベントを探す

TECH PLAYでは、ITエンジニア向けの勉強会・イベント情報を提供しています。
興味のある方はぜひご参加ください。


おすすめのコラム