IAMってなーに?
目次
はじめに
現在、AWS Certified Solutions Architect - Associate の勉強をしているのですが、IAMロールとかIAMユーザーとかIAM何とかとか沢山あってよくわからなかったので、IAMで使われる用語についてまとめてみました。
自分のためにまとめてるので雑でわかりずらいかもしれませんが、お役に立てれば幸いです。
IAMとは
IAM(AWS Identity and Access Management) とは安全にAWS操作を実施するための認証・認可の仕組みです。
AWS のサービスやリソースにアクセスできるユーザーやグループを指定し、きめ細かいアクセス許可を一元管理し、アクセスを分析して AWS 全体でアクセス許可を改善することができます。
用語解説
以下のトピックとそれに関連する用語をまとめます。
- IAMポリシー
- IAMユーザー
- IAMユーザーグループ
- IAMロール
IAMポリシー
ユーザーなどへのアクセス権限を付与するための設定ドキュメントのことです。
Action(どのサービスの)、 Resource(どういう機能や範囲を)、Effect(許可/拒否) という大きな3つのルールに基づいて、権限を記載します。
IAMユーザー、IAMユーザーグループ、IAMロールに付与することによって、権限を付与することができます。
JSON形式でこんな感じ↓で記載します。
難しそうですが、GUIでポチポチするだけで勝手にJSONが生成されます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::123456789012:root" },
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::bucket1",
"arn:aws:s3:::bucket2"
],
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"192.0.2.0/24",
"203.0.113.0/24"
]
}
}
}
]
}
IAMポリシーには3つのタイプがあります。
管理ポリシー
複数のIAMユーザやロールに対して権限を付与することができるポリシーです。
管理ポリシーには次の機能があります。
- 再利用可能性
- 一元化された変更管理
- バージョニングとロールバック
- アクセス許可管理の委任
- より大きいポリシー文字制限
- AWS 管理ポリシーの自動更新
よくわからないと思うのでこちら見てください。
管理ポリシーでも、AWSが作成・管理しているAWS管理ポリシーと、AWSアカウントで作成・管理するカスタマー管理ポリシーの2種類あります。
インラインポリシー
IAMユーザ、IAMグループ、IAMロールに埋め込まれたポリシーです。
複数のプリンシパルで使いまわすことができません。
IAMユーザー
AWSアカウント内に追加されるユーザのことです。
ユーザは人だけではなく、APIを呼び出したり、CLIを実行したりする主体も含まれます。
IAMユーザの認証方法は2種類で、
-
ユーザIDとパスワード
- コンソールにログインするときに利用する
- MFAを組み合わせることが推奨される
-
アクセスキーとシークレットアクセスキー
- CLIやAPIからリソースにアクセスるるときに使用する
があります。
以下はIAMで使われるユーザの基本的な種類です。
ルートユーザ(IAMではない)
AWSアカウント作成時に作られるアカウントです。
すべてのAWSサービスとリソースに対してアクセス可能な権限を持っています。
権限が強すぎるため、日常的なタスクには、ルートユーザを使用しないことが強く推奨されています。
AWSアカウント作成時に使用したメールアドレスとパスワードでサインインが可能です。
管理者権限
管理者権限の許可が付与されたIAMユーザです。
IAMの操作など、ほとんどのAWSサービス、リソースへのアクセスが可能です。
アカウントの削除などのルートユーザのみ許可されている操作はできません。
パワーユーザー
IAM以外のすべてのAWSサービスにアクセスできるIAMユーザです。
ほとんどのAWSサービスを使用する開発者などに付与する権限。
IAMユーザーグループ
IAMユーザ個人ではなく、グループ単位で権限を設定するものです。
IAMユーザグループにはIAMユーザを複数設定することができ、そのIAMユーザに対してまとめて権限を付与することができます。
複数のユーザに同一の権限を個別で与えると、権限の付与漏れや過剰付与などのミスが発生する確率が高くなるため、IAMユーザグループを使用することで、権限を容易かつ正確に管理することが可能になります。
IAMロール
一時的にAWSリソースへのアクセス権限を付与する際に、アクセス権限をロールとして付与することができます。
例えば、EC2からS3にアクセスしてファイルを取得するサーバの処理を作りたい場合、EC2からS3へのアクセスを許可するIAMポリシーをIAMロールに付与して、そのロールをEC2に対して付与する必要があります。
おわりに
AWSって難しい。