こんにちは。在宅カエルです。
AWSのアクセス権限に使われるIAM(Identity and Access Management)
についてAWSの認定試験では頻出の分野なので用語を整理しておこうと思います。
IAM
IAM(Identity and Access Management)は
AWSサービスへの認証・認可を制御するためのサービスです。
認証と認可は
認証:誰がAWSサービスを利用できるか
認可:AWSリソースをどのように利用できるか(APIアクセスの制御)
を指しています。
認証はサービスにログインすることをイメージすると理解しやすいかと思います。
認可についてはもう少し説明しておきます。
マネジメントコンソール、CLI、SDKどのAWSリソースの操作方法でも
実際にはAPIによってリソースへのアクセスが実行されます。
IAMでは認証されたユーザーのAPIアクションを制御して
利用できる機能を管理することができます。
IAMの機能
IAMの機能を具体的に確認してみます。
IAMユーザー
IAMでは認証の機能としてIAMユーザーと呼ばれる
AWSへのアクセスを許可するユーザーを作成することができます。
管理者はIAMユーザーを作成し、利用者に配布することで
ユーザー管理を行うことができます。
ルートユーザーとの違い
AWSアカウント作成時にルートユーザーと呼ばれるユーザーが作成されます。
ルートユーザーは全ての権限を持ち、操作に制限をかけることができないので
セキュリティの観点から普段は利用しないことが推奨されています。
管理者のアカウントもIAMユーザーを作成して、
管理者用の権限を付与して利用します。

IAMユーザーの認証方法
AWSリソースへのアクセス方法は
- マネジメントコンソール
- SDK
- CLI
の3つです。アクセス方法によって認証方法が異なります。
マネジメントコンソールはブラウザ上からAWSリソースへアクセスします。
12桁のアカウントID、ユーザー名、パスワードを入力することで認証されます。
CLIとSDKはアクセスキーを利用してAWSリソースへアクセスします。
CLIはコマンドライン操作から、SDKはプログラムからのアクセスと理解してください。
アクセスキーはアクセスキーIDとシークレットアクセスキーの組み合わせです。
このアクセスキーはIAMユーザー作成時に発行されます。
アクセスキーはCLIからconfigureコマンドを使って設定可能です。
aws configure
設定した情報は端末のホームディレクトリにcredentialsというファイルが
生成され保存されます。
CLIやSDKからAWSへアクセスする時はこのファイルを参照して認証されます。
IAMポリシー
IAMユーザーを作成するとデフォルトではAWS内のどのリソースへも
アクセスすることができません。
IAMポリシーを使って適切にアクセス権限を付与することが必要になります。
IAMポリシーはAWS APIやその他のリソースへの
アクセスを制御するために使われます。
IAMポリシーの種類
IAMのアクセス許可には大きく分けて2種類存在します。
- アイデンティティベースのアクセス許可
- リソースベースのアクセス許可
アイデンティティベースのアクセス許可はIAMユーザーに割り当てられ、
そのユーザーが実行できる操作を設定します。
リソースベースのアクセス許可はリソースに割り当てられ、
そのリソースに対してユーザーが実行できる操作を設定します。
リソースベースのアクセス許可は全てのサービスが
サポートしているわけではないので注意しましょう。
S3などで利用できます。
どちらのポリシーの種類でも明示的に許可、拒否が設定されていない場合
アクセスは拒否されます。
またアイデンティティとリソース両方のポリシーが設定されている場合
拒否 > 許可> (暗黙的な)拒否
の優先度で適用されます。
IAMグループを使ったポリシーの管理
IAMポリシーはIAMユーザーの一つ一つに付与することもできますが、
アカウントの数が増えた場合など管理が煩雑になります。
IAMではIAMグループというユーザーグループを作成して
IAMグループにポリシーを付与することでグループ単位での
ポリシーの管理を可能にしています。
IAMユーザーをポリシーが付与されたグループに所属させることで
ポリシーで許可されたAWSリソースへアクセスすることができます。
IAMロール
IAMの一時認証の機能としてIAMロールがあります。
IAMロールはアクセスキーの設定をせずにAWSサービス間の認証を実現できます。
IAMロールにはIAMユーザーと同じようにポリシーを付与することで
リソースので操作を制御します。
EC2からDynamoDBへアクセスするというアプリケーションを例に考えてみます。
EC2はDynamo DBへアクセスするために認証情報を持つ必要があります。
EC2のcredentialsファイルにアクセスキーを設定することも可能ですが、
EC2が複数台になった場合に毎回設定するのは手間ですし、
台数が増えるたびに漏洩のリスクが高まります。
IAMロールを利用すると起動時にロールを指定するだけで
アクセスキー不要で一時的な認証情報をリソースに付与することができます。
まとめ
AWSを利用する際には必ずIAMを利用することになるので
しっかりとポイントを押さえておきましょう。
今回は以上になります。
最後までお読みいただきありがとうございました。
コメント