AWS - リードオンリーな IAM ユーザの作り方 (自分のユーザ情報だけは変更可)
読取り専用だけど、自分のパスワードやアクセスキー,
MFA (二段階認証) の設定だけはユーザ自身で出来る。
そんな IAM ユーザの作り方のメモです。
請求情報も参照できるポリシーも書きました。
Management Console や API から自由に参照はしていいけど、
変更は許したくない、というユーザ用に。
IAM グループの作成
この記事では IAM グループを作成し、そのグループにポリシーを与えていきます。
IAM Management Console - グループ からリードオンリー用のグループを作成します。
ここでは “Readonly” という名前でグループを作成しました。
ポリシーは後で追加していくので、まずは空っぽで。
次に IAM Management Console - ユーザー からユーザを作成し、
Readonly グループに加えます。
グループに与える権限 (ポリシー)
以降、次のポリシーに分けてグループに追加していきます。
不要なものは読み飛ばしてください。
- 各サービスの情報の参照
- 請求情報の参照
- 自身のパスワードの変更 (認証情報ページからの変更)
- 自身のパスワードの変更 (ユーザーページからの変更)
- 自身のアクセスキーの変更
- 自身の MFA デバイスの変更
- 自身の SSH キーの変更
各サービスの情報の参照
管理ポリシー “ReadOnlyAccess” が用意されてるので、
それを Readonly グループに追加するだけで OK です。
請求情報の参照
デフォルトでは IAM ユーザは請求情報にアクセスできなくなってるので、
まずはアクセス許可の設定をします。
ルートアカウントで Billing Management Console - アカウント を開き、
[IAM アクセスのアクティブ化] を ON にします。
その後、 Readonly グループに次のインラインポリシーを追加すれば OK です。
僕は “PortalReadonlyAccess” という名前で追加しました。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"aws-portal:View*"
],
"Resource": [
"*"
]
}
]
}
もし参照できる情報を制限したい場合は、試してないけど
"aws-portal:View*"
の部分にワイルドカードを使わなければ良いと思う。
ViewBilling
次の [Billing and Cost Management] コンソールページを表示する権限を
IAM ユーザーに与えるか拒否します。
- 請求ダッシュボード
- 請求書
- コストエクスプローラー
- 予算
- 支払履歴
- 一括請求
- 設定
- Credits
- 前払い(前払いの詳細については、「一括請求について」を参照してください。)
ViewAccount
アカウント設定を表示するアクセス権限を IAM ユーザーに与えるか拒否します。
ViewBudget
予算を表示するアクセス権限を IAM ユーザーに与えるか拒否します。
IAM ユーザーに予算の表示を許可するには、ViewBilling も許可する必要があります。ViewPaymentMethods
支払方法を表示するアクセス権限を IAM ユーザーに与えるか拒否します。
ViewUsage
AWS 使用状況レポートを表示するアクセス権限を IAM ユーザーに与えるか拒否します。
IAM ユーザーが使用状況レポートを表示できるようにするには、
ViewUsage と ViewBilling の両方を許可する必要があります。
自身のパスワードの変更 (認証情報ページからの変更)
Management Console 右上メニュー [認証情報] からの変更を許可します。
デフォルトでは全てのユーザが自身のパスワードは
変更できるようになっているので、特にやることはありません。
もし一部のユーザのみ自身のパスワードを変更可にする場合は、
まずは IAM Management Console - アカウント設定 で
[ユーザーにパスワードの変更を許可] をオフにします。
その後、 Readonly グループに次のインラインポリシーを追加すれば OK です。
僕は “MyPasswordAccess” という名前で追加しました。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:ChangePassword",
"iam:GetAccountPasswordPolicy"
],
"Resource": "*"
}
]
}
自身のパスワードの変更 (ユーザーページからの変更)
ユーザページ からの変更を許可します。
Readonly グループに次のインラインポリシーを追加すれば OK です。
僕は “MyLoginProfileAccess” という名前で追加しました。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:*LoginProfile"
],
"Resource": [
"arn:aws:iam::*:user/${aws:username}"
]
},
{
"Effect": "Allow",
"Action": [
"iam:ListAccount*",
"iam:GetAccountSummary",
"iam:GetAccountPasswordPolicy",
"iam:ListUsers"
],
"Resource": [
"*"
]
}
]
}
自身のアクセスキーの変更
Readonly グループに次のインラインポリシーを追加すれば OK です。
僕は “MyAccessKeyAccess” という名前で追加しました。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:*AccessKey"
],
"Resource": [
"arn:aws:iam::*:user/${aws:username}"
]
},
{
"Effect": "Allow",
"Action": [
"iam:ListAccount*",
"iam:GetAccountSummary",
"iam:ListUsers"
],
"Resource": [
"*"
]
}
]
}
自身の MFA デバイスの変更
Readonly グループに次のインラインポリシーを追加すれば OK です。
僕は “MyMFADeviceAccess” という名前で追加しました。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:*MFADevice"
],
"Resource": [
"arn:aws:iam::*:user/${aws:username}",
"arn:aws:iam::*:mfa/${aws:username}"
]
},
{
"Effect": "Allow",
"Action": [
"iam:ListAccount*",
"iam:GetAccountSummary",
"iam:ListUsers",
"iam:ListMFADevices",
"iam:ListVirtualMFADevices"
],
"Resource": [
"*"
]
}
]
}
自身の SSH キーの変更
Readonly グループに次のインラインポリシーを追加すれば OK です。
僕は “MySSHPublicKeyAccess” という名前で追加しました。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:*SSHPublicKey"
],
"Resource": [
"arn:aws:iam::*:user/${aws:username}"
]
},
{
"Effect": "Allow",
"Action": [
"iam:ListAccount*",
"iam:GetAccountSummary",
"iam:ListUsers",
"iam:ListSSHPublicKeys"
],
"Resource": [
"*"
]
}
]
}
以上!
これで IAM ユーザをグループに加えたり外したりで管理できるようになりました!