KMS のカスタマーマネージドキーで暗号化している AWS IAM Identity Center に対する読み取り権限を付与してみた
AWS IAM Identity Center を KMS のカスタマーマネージドキーで暗号化している場合では、AWS 管理ポリシーの「ReadOnlyAccess」だけでは、AWS IAM Identity Center のユーザー情報などを閲覧できません。閲覧するためには KMS キーの復号権限も必要です。
ReadOnlyAccess の割り当てに加えて、インラインポリシーなどで下記ポリシー例を割り当てることで閲覧可能です。AWS IAM Identity Center の委任先アカウントにおいても、管理アカウントに存在する KMS キーを指定する必要があります。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "kms:Decrypt",
"Resource": "arn:aws:kms:*:<Account_ID>:key/<key_ID>",
"Condition": {
"StringLike": {
"kms:ViaService": [
"sso.*.amazonaws.com",
"identitystore.*.amazonaws.com"
]
}
}
}
]
}
上記のポリシー例は AWS ブログで紹介されていた内容にもなります。
試してみた
AWS IAM Identity Center が KMS キーで暗号化されている前提で、ReadOnlyAccess に KMS キーの復号権限を追加で割り当ててみます。
まず、単純に ReadOnlyAccess の割り当てだけでは、次の画面のようにユーザーやグループといった情報が閲覧できません。

インラインポリシーに次のポリシーを追加してみます。KMS キーは管理アカウントの東京リージョンに作成しています。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "kms:Decrypt",
"Resource": "arn:aws:kms:ap-northeast-1:<Account_ID>:key/<key_ID>",
"Condition": {
"StringLike": {
"kms:ViaService": [
"sso.*.amazonaws.com",
"identitystore.*.amazonaws.com"
]
}
}
}
]
}
上記のポリシー追加により、閲覧できるようになりました。

次に、AWS IAM Identity Center を委任し、マルチリージョン化している環境でも試してみます。
まず、委任先アカウント向けの権限設定においても、ポリシーに追加する KMS キーは管理アカウントに存在するものを指定します。KMS キーのキーポリシーでは委任先アカウントからのアクセスを許可しておく必要もあります。

また、レプリケーションされたリージョンの KMS キーに対する権限も必要なことから、ポリシーにおける KMS キーの指定においては、各リージョンのキーをそれぞれ指定するか、下記ポリシーのようにリージョン部分をワイルドカードにする必要がありました。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "kms:Decrypt",
"Resource": "arn:aws:kms:*:<Account_ID>:key/<key_ID>",
"Condition": {
"StringLike": {
"kms:ViaService": [
"sso.*.amazonaws.com",
"identitystore.*.amazonaws.com"
]
}
}
}
]
}
上記ポリシーにより、委任先アカウントにおいても複数リージョンの AWS IAM Identity Center 設定を閲覧できました。今回のブログの検証環境において、AWS IAM Identity Center のプライマリリージョンとなっている東京リージョンの画面です。

AWS IAM Identity Center をレプリケーションしている大阪リージョンの画面です。

なお、試しに東京リージョンの KMS キーだけを指定した場合において、大阪リージョンの AWS IAM Identity Center 設定を見ようとしたところ、下記画像のように閲覧できませんでした。

さいごに
カスタマーマネージドの KMS キーで暗号化している AWS IAM Identity Center に対して、設定の閲覧だけしたい場合のポリシー例を試してみました。AWS Organizations 管理アカウントと委任先アカウント以外では KMS キーの復号権限は不要なため、管理アカウント用の読み取り権限、AWS IAM Identity Center アカウント用の読み取り権限、その他のアカウントの読み取り権限のアクセス許可セットを分けて運用するのがよさそうです。
以上。このブログがどなたかのご参考になれば幸いです。






