IAM PolicyのVersion要素ってなんぞ?
IAM PolicyのVersion要素について、ご存知ですか?
AmazonS3FullAccess
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
}
]
}
"Version": "2012-10-17",の部分です。
VersionといえばそりゃJSONのポリシーのバージョン管理をユーザー任意にできるんだろ!!! と思っていましたが、どうやら違うようです。
IAM PolicyのJSON ポリシーエレメント:Version
AWSの公式には以下のように書いてあります。
Version ポリシーエレメントはポリシーバージョンとは異なります。Version ポリシー要素は、ポリシー内で使用され、ポリシー言語のバージョンを定義します。一方で、ポリシーバージョンは、IAM でカスタマー管理ポリシーを変更すると作成されます。変更されたポリシーによって既存のポリシーが上書きされることはありません。代わりに、IAM は管理ポリシーの新しいバージョンを作成します。管理ポリシーに対する複数のバージョンのサポートに関する情報を探している場合は、「IAM ポリシーのバージョニング」を参照してください。 Version エレメントは、このポリシーを処理するために使用される言語構文ルールを指定します。指定したバージョンで使用できない機能を含めると、ポリシーでエラーが生成されるか、ポリシーが意図したとおりに動作しません。一般的なルールとして、使用可能な最新のバージョンを指定してください (以降のバージョンで廃止された機能に依存する場合を除きます)。
ポリシーエレメント:Versionの要点
- Version ポリシーエレメントはポリシー自体のバージョン管理(バージョニング)をする要素ではない。
- ポリシーを処理するために使用するJSONの言語構文(ポリシー言語)のルール指定をするためのバージョンである。
- Version 要素は、Statement 要素の前に表示する必要がある。
- Version 要素は現在のところ2つだけある。(2008-10-17と2012-10-17)
- Version 要素を含めない場合、デフォルトで2008-10-17となる。
- ただし推奨しているのは2012-10-17なので、2012-10-17を記載しましょう!
※ちなみにポリシーのバージョン管理については更新するたびに最大5個までバージョニングをしてくれるようです。 詳しくは以下のIAMポリシーのバージョニングをどうぞ。
お試し
以下の通り、Version要素をいじってみるとキチンとエラーが返ってきました。


The Policy must contain a valid version string が出てますね。
参考文献
権藤洋一郎
よく訓練されたApple信者です。こぢんまりとプロマネをしているので、手を動かしていきたい。最近はコンテナまわりをやっています。