AWS KMSのキーポリシーとアイデンティティベースポリシー
AWS KMSのCMKを作成する際に、管理者とキーユーザーを選択することで、以下のようなキーポリシーが生成されます。
以下は管理者にOrganizationAccountAccessRole、キーユーザーにuser1を指定した例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
{ "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/OrganizationAccountAccessRole" }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion", "kms:ReplicateKey", "kms:UpdatePrimaryRegion" ], "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/user1" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/user1" }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } } ] } |
これでIAMユーザーのuser1は、IAMポリシーで許可をしなくてもこのCMKに対しての基本操作は許可されます。
例えばgenerate-data-keyを実行すると、データキーが生成されます。
|
1 2 3 4 5 6 7 8 9 10 |
$ aws kms generate-data-key \ --key-id mrk-1234567890123abcdefghsd \ --key-spec AES_256 { "CiphertextBlob": "AQIDAHj2R4mtaSrV3i4Yti1b1+CH7K+dDHdozvgyqIGbHQolLAEknPs6sjrMjPaSe0zpTN59AAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMTvnhmj6vG0/UHHY4AgEQgDvG5Yfoyt+NwnEO3BKpGbwModiOugQS10iWr8Vdpa/NM024pRAu8gNwr7MolqfYcYJTUqVnMXLQDEJKkQ==", "Plaintext": "R6HU1W8txBVAfQbi61fbZwcsw2D5EIjgACM8lRJc7kk=", "KeyId": "arn:aws:kms:ap-northeast-1:123456789012:key/mrk-1234567890123abcdefghsd" } |
新規でIAMユーザーuser2を作成して、インラインポリシーで以下を設定したとします。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "arn:aws:kms:ap-northeast-1:123456789012:key/mrk-1234567890123abcdefghsd" } ] } |
user2も同様にkms:GenerateDataKeyなどの操作が許可されます。
これはCMK作成時にキーポリシーに以下のポリシーが含まれているためです。
|
1 2 3 4 5 6 7 8 9 10 |
{ "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": "kms:*", "Resource": "*" } |
キーポリシーからこのステートメントを削除すると、user2の操作は暗黙的に拒否されます。
CMKは同じアカウントだからアイデンティティベースのポリシーだけで使えるというわけではなく、キーポリシーにそのアカウントがデフォルトで許可されているからなのですね。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「AWS認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
関連記事
-
-
CloudWatch LogsをIPv6アドレスを使用して送信する
このブログの構成からパブリックIPv4を減らすように設計変更しています。 もとも …
-
-
AWSクイックスタートのActive Directory Domain Services on AWS
オンプレミスに見立てたActive Directory環境がほしかったので、AW …
-
-
Amazon API Gatewayでモックを作る
超シンプルなAPI Gatewayのサンプルがほしかったので、ユーザーガイドの手 …
-
-
AWS WAFの個別ルールを設定する
Web ACLを選択して、[Add my own rules and rule …
-
-
AD Connectorを作成してシームレスにドメイン参加する
VPN接続先のADで管理されているドメインにEC2 Windowsインスタンスか …
-
-
「JAWS-UG Osaka 第22回勉強会 東西の中の人が語る!!! Microservices × Serverless On AWS」で運営と懇親会LTをしてきました
「JAWS-UG Osaka 第22回勉強会 東西の中の人が語る!!! Micr …
-
-
Extend Switch Roles(Chromeのアドオン)で6つ以上のスイッチロール履歴
最近アカウントIDを忘れたりすることも多くなったので、切り替えに手間取ることがあ …
-
-
Amazon Connect 発信イベントをEventBridgeで確認
Amazon Connectから発信した電話に出たのか、出なかったのかを確認した …
-
-
AWSマネジメントコンソールのマルチセッションサポート
AWSマネジメントコンソールにマルチセッションサポートが追加されましたので使いま …
-
-
AWS Systems Managerパラメータストアで「Parameter name must be a fully qualified name.」
パラメータストアでパラメータ階層を作成しようとして、パラメータ名に例えば「wor …

