【解説】AWS IAMを使ったユーザ管理とアクセス管理の仕組み

 

★悩み★
・AWSにおけるユーザーの管理は、どうすればいいのだろうか。
・AWSのサービスに対するアクセス管理には何を使えばいいのだろうか。
・AWSのサービスに対して、一時的にアクセス権限を与えたいな。
・AWS IAMを使うと、何ができるのだろうか。


こういった「悩み」を答えます。
 

★本記事の内容★
① IAM/Organizationsを使ったAWSでのユーザー管理方法をご紹介
② IAMポリシーを使ったAWSでのアクセス管理をご紹介
③ IAMロールを使ったAWSでの一時的に権限を付与する方法をご紹介


これからご紹介する「AWS IAMを使ったユーザ管理とアクセス管理の仕組み」を理解することで、「AWS 認定 ソリューションアーキテクト アソシエイト」資格に合格しやすくなります。

記事の前半では「AWS IAMを使ったユーザー管理とアクセス管理」を解説しつつ、記事の後半では「一時的にあるユーザーに権限を付与する方法」を具体的に解説します。

この記事を読み終えることで、「AWS IAMの使い方」を理解した状態になります。
 

「AWSとは何か?」や「AWSの基礎的なサービスは何か?」を知りたい方は、以下の記事をご覧ください。
 

 

IAM/Organizationsを使ったAWSでのユーザー管理方法


「IAM/Organizationsを使ったAWSでのユーザー管理方法」に関してご紹介します。
 

★IAM/Organizationsを使ったAWSでのユーザー管理方法★
・AWSにおいて管理するべき3種類のユーザー
・IAMを使ってAWSのユーザーをグループ単位で管理
・AWS Organizationsを使って複数のルートユーザーを管理


上記の方法で、「AWSでユーザーを管理」できます。
以降で、上記「IAM/Organizationsを使ったAWSでのユーザー管理方法」に関してご説明します。

AWSにおいて管理するべき3種類のユーザー

「AWSにおいて管理するべき3種類のユーザー」に関してご説明します。

AWSのマネジメントコンソール(AWSの管理画面)を利用できるユーザは、以下の3種類です。
 

★AWSの管理画面にログインできるユーザーの種類★
・ルートユーザー
・IAMユーザー
・フェデレーションユーザー


上記「AWSの管理画面にログインできるユーザーの種類」の各ユーザーがどのようなユーザーかを以降で説明します。
 

ルートユーザー

AWSアカウントの作成に利用したメールアドレスでAWSの管理画面にログインすると、ルートユーザーになります。

ルートユーザーは、以下の特徴を持つユーザーです。
 

★ルートユーザーの特徴★
全てのAWSサービスや配備されたリソースにフルアクセス(作成、削除、参照、編集)できます。


上記の特徴のため、ルートユーザーを乗っ取られると、AWSで構築したシステムを破壊(削除)される可能性があります。

そのため、次に紹介するIAMユーザー作成後、ルートユーザーのログイン情報を金庫などで管理しましょう。
 

IAMユーザー

IAM(AWS Identity&Access Management)を利用することで、IAMユーザーを作成できます。
 

★IAMユーザーとは★
・ルートユーザーで作成された「AWSアカウント内のユーザー」
 → IDとパスワードでログイン
 → アクセスキーIDとシークレットアクセスキーでログイン
・各IAMユーザーにポリシー(制限事項)を設定し、AWSでできることを制限


普段の運用では、上記特徴を有するIAMユーザーで行います。デフォルトでIAMユーザーを作成した場合、何も権限が与えられていない状態になります。
 

フェデレーションユーザー

社内の既存認証基盤を利用し、SAML(セキュリティアサーションマークアップランゲージ)認証でAWSマネジメントコンソールにログインできます。上記でログインしたユーザーを「フェデレーションユーザー」と言います。

★フェデレーショNユーザーとは★
・SAML認証でログインしたユーザー
 → IAMユーザーを作成する手間の削減が可能
・AWSログイン後、IAMロール(後ほど紹介)で定めだれた操作が可能


既存の認証基盤を利用したい」や「一時的にAWSの操作権限を与えたい」場合には、フェデレーションユーザーを活用しましょう。
 

以上が、AWSで利用できる3種類のユーザーで、管理するべきユーザーとなります。

IAMを使ってAWSのユーザーをグループ単位で管理

「IAMを使ってAWSのユーザーをグループ単位で管理」に関してご説明します。
 

IAMユーザーは、基本的にグループ単位で管理しましょう。

 


上図のように、役割ごとにグループ(上図だと開発部隊と保守部隊)を作成します。その後、作成したグループに作成したIAMユーザーを割り当てましょう。

最後に、グループに後ほど紹介するポリシー(例えば、EC2の削除などの操作が可能)を割り当てていきます。

以上のように、AWSではグループ単位でIAMユーザーを管理します。

AWS Organizationsを使って複数のルートユーザーを管理

「AWS Organizationsを使って複数のルートユーザーを管理」に関してご説明します。

大きな組織になると、複数のAWSアカウントを所持している場合があります。例えば、「開発用にはXXXのAWSアカウント」「本番稼働用にはYYYのAWSアカウント」のように使い分けます。

上記運用だと、複数のルートユーザーが存在します。そこで、複数のルートユーザーを管理するサービスとして「AWS Organizations」があります。
 

★AWS Organizationsとは★
・複数のルートユーザー(AWSアカウント)を管理可能
・グループ単位でアカウントを管理
・グループ単位やルートユーザー単位でポリシーを付与可能


AWS Organizationsを使うと、以下のようにルートユーザー(AWSアカウント)を管理できます。
 

 

上図だと、
 S3ポリシーは、全てのAWSアカウントに付与されます。
 DynamoDBポリシーは、AWSアカウントaに付与されます。
 EC2ポリシーは、AWSアカウントcとAWSアカウントdに付与されます。
と管理できます。


以上が、「AWS Organizationsを使って複数のルートユーザーを管理」となります。
 

IAM/Organizationsを使うと、AWSでのユーザーを細かい単位で管理できます。

 

IAMポリシーを使ったAWSでのアクセス管理


「IAMポリシーを使ったAWSでのアクセス管理」に関してご紹介します。
 

★IAMポリシーを使ったAWSでのアクセス管理★
・IAMポリシーとは
・IAMポリシーの書き方


AWSでのアクセス管理には、IAMポリシーを使います。以降で、上記「IAMポリシーを使ったAWSでのアクセス管理」の各項目に関してご紹介します。

IAMポリシーとは

「IAMポリシーとは」に関してご説明します。
 

AWSサービスへのアクセス制御をするために、IAMポリシーを使います。

 

★IAMポリシーとは★
・AWSサービスへのアクセス(作成、参照、削除など)を制御可能
・OS内のアクセス権は制御不可
・2種類のポリシー
 → アイデンティティベース:IAMユーザー/グループ/ロールに付与
 → リソースベース:Amazon S3のバケットなどのリソースに付与


IAMポリシーが付与されたAWSサービスへのアクセス許可は、以下の流れになります。
 


IAMポリシーを使い適切にAWSサービスへのアクセスを制御しましょう。

以上が、「IAMポリシーとは」となります。

IAMポリシーの書き方

「IAMポリシーの書き方」に関してご説明します。
 

「ビジュアルエディタ」または「JSON」でIAMポリシーを作成できます。


IAMの管理画面にアクセスすることで、IAMポリシーを作成できます。
IAMの管理画面へアクセス

ビジュアルエディタでのIAMポリシーの作成は、下図のような感じです。
 


JSONでのIAMポリシーの作成は、下図のような感じです。
 


以上のように、IAMポリシーを作成し、アクセス管理ができます。
 

AWSサービスへのアクセス管理をするために、IAMポリシーを使いましょう。

 

IAMロールを使ったAWSでの一時的に権限を付与する方法


「IAMロールを使ったAWSでの一時的に権限を付与する方法」に関してご紹介します。

「Aさんにシステムのテストをして欲しいから、一時的に権限付与をしたい」という場面があると思います。Aさんのアカウントを開発部隊のグループからテスト部隊のグループに移動させるのは手間がかかります。

そこで、IAMロールを利用した一時的な権限付与を使いましょう。
 

★IAMロールの使い方★
・IAMロールとは
・IAMロールのユースケース
・IAMロールを使い一時的に権限を付与する方法


以降で、上記「IAMロールの使い方」の各項目に関してご紹介します。

IAMロールとは

「IAMロールとはどのようなものなのか」をご紹介します。
 

★IAMロールとは★
・IAMロールは、複数のポリシーをグループにしたもの
 例)開発ロール:EC2ポリシー、S3ポリシー、DynamoDBポリシー
   保守ロール:EC2ポリシー、S3ポリシー

・AWSリソースにAWSサービスへのアクセス権限の設定が可能
 例)EC2インスタンスからS3に書き込みをしたい場合は、
   「S3に書き込み可能」が含まれたロールを付与すれば良い

・ロールにアタッチされたポリシーをユーザーまたはサービスに継承可能
 例)ユーザーA ← 開発ロール ー ポリシーY
       ↖︎ ポリシーZ
   ポリシーZは無視され、開発ロールのポリシーYが優先


上記がIAMロールとなります。

IAMロールのユースケース

「IAMロールのユースケース」に関してご紹介します。
 

★IAMロールのユースケース★
・AWSリソースにAWSサービスへのアクセス権限を設定したい場合
・フェデレーションユーザーアクセス権限を設定したい場合
・一時的なアクセス権限を付与したい場合


上記を実現したい場合に「IAMロール」を使います。

IAMロールを使い一時的に権限を付与する方法

「IAMロールを使い一時的に権限を付与する方法」に関してご説明します。

AWS Security Token Service (AWS STS)をIAMロールに付与することで、一時的に権限をあるユーザーに付与できます。

また、Amazon CognitoとIAMロールを利用することでTwitterやFacebookのアカウントなどを通して、一時的にAWSのリソースへアクセスできます。
 

IAMロールを使うことで、簡単に一時的に権限を付与できます。

 

【まとめ】AWSのIDとアクセス管理を徹底解説【IAMで管理】

今回の記事を通して、「AWSのIDとアクセス管理をする方法」をご紹介することで、以下の悩みを解消しました。

★悩み★
・AWSでのユーザー管理ってどうするんだろうか。
・AWSでサービスへのアクセス管理ってどうするんだろうか。
・一時的にあるユーザーにアクセス権限を与える方法が分からない。

AWSのIDとアクセスを管理するには?」と悩んでいるあなたにこの記事が少しでも役に立てれば幸いです。

 

 


 

コメント