CloudFormationで作成したIAMポリシーのステートメント内のプロパティはいつも同じ順番になる/コンソールで作ったものとも順番が異なる
はじめに
IAMポリシーのステートメント内のプロパティの順番について、IAMポリシーを作成する方法が異なるとその順番も異なるということに気が付きました。
前提
CloudFormationのテンプレートでステートメント内のプロパティを以下のようにしたとします。
- myPolicy1: Sid, Action, Effect, Resource の順に記述
- myPolicy2: Sid, Effect, Action, Resource の順に記述
テンプレート
ActionやResourceは適当な内容にしています。
AWSTemplateFormatVersion: "2010-09-09"
Resources:
Policy1:
Type: AWS::IAM::ManagedPolicy
Properties:
ManagedPolicyName: myPolicy1
PolicyDocument:
Version: "2012-10-17"
Statement:
# Sid, Action, Effect, Resource の順に記載
- Sid: myPolicy1
Action:
- ec2:*
- s3:*
Effect: Allow
Resource: "*"
Policy2:
Type: AWS::IAM::ManagedPolicy
Properties:
ManagedPolicyName: myPolicy2
PolicyDocument:
Version: "2012-10-17"
Statement:
# Sid, Effect, Action, Resourceの順に記載
- Sid: myPolicy2
- Effect: Allow
Action:
- ec2:*
- s3:*
Resource: "*"
スタックを作成して、実際に出来上がったIAMポリシーを見ると、ステートメント内のプロパティの順番はテンプレートに書いた通りの順番とはならず、上記のテンプレートで記載した4つのプロパティの場合はAction, Resource, Effect, Sidの順になります。
myPolicy1
{
"Version": "2012-10-17"
"Statement": [
{
"Action:" [
"ec2:*",
"S3:*"
],
"Resource": "*",
"Effect": "Allow",
"Sid": "myPolicy1"
}
]
}
myPolicy2
{
"Version": "2012-10-17"
"Statement": [
{
"Action:" [
"ec2:*",
"S3:*"
],
"Resource": "*",
"Effect": "Allow",
"Sid": "myPolicy2"
}
]
}
AWS管理コンソールで作成した場合
なお、AWS管理コンソールでIAMポリシーを作成すると、以下のようになります。
{
"Version": "2012-10-17"
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action:" [
"S3:*",
"ec2:*"
],
"Resource": "*",
}
]
}
何故このようなことを確認しようと思ったか?
テンプレートでIAMポリシーを作成する前に、AWS管理コンソールを操作して作成してあったIAMポリシーがありました。そのIAMポリシーをテンプレートに記載して、スタックに含めておいてほしいという要望があり、対応をしました。両者は同じAWSアカウント上に作っています。
AWS管理コンソールで作成したIAMポリシーは試作で、試作した結果を受けてスタックに取り込んでほしいという要望でした。
それでスタックは無事に作成でき、テンプレートからIAMポリシーを作成できたのですが、その後で「スタックで作ったIAMポリシーの内容が違う」と言われました。
そう言われて内容を確認したところ、ポリシーとしては何も違うところはなかったのですが、ステートメント内のプロパティの順番が両者で異なっていたのです。「スタックで作ったIAMポリシーの内容が違う」と述べた人は、プロパティそのものの内容までは見ておらず、プロパティの順番・見た目が違うだけで両者の内容が違うと言っていたことがわかりました。
その人はAWSに触れて日が浅かったために、単に見た目が違うというだけでそれぞれのポリシーは別物だと判断されてしまったのですが、見た目が違っていたのは確かだったので、それで調べてみたということでした。
Author And Source
この問題について(CloudFormationで作成したIAMポリシーのステートメント内のプロパティはいつも同じ順番になる/コンソールで作ったものとも順番が異なる), 我々は、より多くの情報をここで見つけました https://qiita.com/st10/items/0987ee1dbaf8a708e1f8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .