はじめに
自身の知識の整理も兼ねて、IAMの要点を記事にまとめてみました。概要の解説に留め、詳しい解説はしていません。初学者向けにざっくりとした説明をする際に利用するイメージで執筆してます。
想定している読者
- AWS(IAM)初学者
- IAMを利用するにあたり重要なポイントをざっくり理解したい方
IAMとは
AWS Identity And Access Management(IAM)はAWSを安全に操作するためのアクセス制御の仕組みです。
主要なトピック
IAMポリシー
どのリソースに対してアクセスを許可/拒否するかを定義することができるもの。
設定項目
- Effect:許可するのか拒否するのか ex.) Allow/Deny
- Action:対象のAWSサービス ex.) s3:Listbucket
- Resource:対象のAWSリソース ARNの形式で記述
- Condition:制御を有効とする条件 MFA設定有無、送信元IPの範囲など
以下のように、JSON形式で設定される。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::test-bucket",
"Condition": {
"IpAddress": {
"aws:SourceIp": "xxx.xxx.xxx.xxx/16"
}
}
}
]
}
ポリシー3種類
AWS管理ポリシー
AWS 管理ポリシーでは、ポリシーを自身で記述する場合よりも簡単に、適切なアクセス許可がユーザー、グループ、ロールに割り当てることが可能。カスタマー管理ポリシー
利用者自身でアクセス許可を定義することができます。こちらも、ユーザー、グループ、ロールに割り当てることが可能。通常、インラインポリシーではなく、管理ポリシーを使用することが推奨されている。インラインポリシー
インラインポリシーは、IAM アイデンティティ (ユーザー、グループ、またはロール) に埋め込まれたポリシー。インラインポリシーと、そのポリシーが適用されるアイデンティティが一対一となるため、他のアイデンティティに割り当てることはできない。逆に、ポリシー内のアクセス権限が意図したアイデンティティ以外のアイデンティティに間違って割り当てられないようにする必要がある場合などにはインラインポリシーが有効。
IAMユーザー
- 個人に対するアクセス権限を定義するためのもの。
- 通常、IAMユーザーを利用して、AWSマネジメントコンソール画面にログインする。
- IAMポリシーを付与した範囲でAWSサービスを利用できる。
IAMグループ
- 権限をまとめて設定された単位のこと。
- IAMグループにIAMユーザーを追加して、複数ユーザーの権限をまとめて管理する。
- 管理者、開発者など、それぞれの利用者グループ毎に必要な権限を付与することで、効率的に権限管理が行える。
IAMロール
- AWSリソースに対するアクセス権限
- EC2インスタンスに付与したり、LambdaやCloudFormationを実行する際の権限を付与したりする。
ルートユーザー
- AWSアカウント作成時に作られる。
- 全てのAWSサービスとリソースを操作できる
- 日常的にはルートユーザーは利用せず、IAMユーザーを利用する
- IAMユーザーの課金情報に対するアクセス許可/拒否など、ルートユーザーのみにしか実施できない操作もある。
IAMを通じたAWSサービスの操作方法について
AWSマネジメントコンソールを利用する
IAMユーザーを利用して、WEBブラウザにログインした上でAWSサービスを操作する方法。
AWS CLIを利用する
AWS CLI(Command Line Interface)は、AWSサービスを管理するためのコマンド群を利用する方法。WindowsやLinuxから各種コマンドを利用できる。
サービス操作のための権限を得る方法は以下2種類。
- IAMユーザーごとに作成できるアクセスキーとシークレットアクセスキーをLinuxやWindowsの環境変数として設定する
- IAMロールによる認証を利用する
前者のようなアクセスキーとシークレットアクセスキーを利用した認証を利用する場合、キー流出のリスクが懸念されるため、現在ではIAMロールによる認証が推奨されている。
AWS SDKでAPIを利用する
AWS SDKは、Javaなどの主要なプログラミング言語向けにAWSから提供されているAPI群を利用する方法。AWS CLIと同様、アクセスキー、シークレットアクセスキーによる認証、もしくは、IAMロールによる認証が必要。
ベストプラクティスについて
AWS リソースのセキュリティを確保するために、ベストプラクティスに準じた設計を行うことが推奨されている。