[アップデート] AWS Organizationsのポリシー管理をメンバーアカウントに委任できるようになりました

こんにちは。サービス部の武田です。AWS Organizationsのアップデートで、これまで管理アカウントでしかできなかったポリシーの管理を、メンバーアカウントに委任できる新機能をお届けします。
2022.11.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。サービス部の武田です。

今年も来ましたね、re:Inventの季節が。現地参加組も到着したようで、社内のSlackも盛り上がってきています。

さて、すでにいくつかのサービスでアップデートが発表されているようです。今回はAWS Organizationsのアップデートで、これまで管理アカウントでしかできなかったポリシーの管理を、メンバーアカウントに委任できる新機能をお届けします。

委任ポリシー

今回のアップデートで、メンバーアカウントに対して組織管理の一部を委任できるようになりました。委任するからには、「誰に」「何の操作を」許可するのかを定義しなければいけません。それを定義するのが 委任ポリシー です。マネジメントコンソールにアクセスすると設定できる画面が追加されていました。

この「委任」ボタンをクリックすると、ポリシーを定義できる画面になります。

なお、この「委任ポリシー」は1アカウントにつき1個しか定義できません。そのため異なる権限で複数のアカウントに対して委任したい場合、1つのポリシーにステートメントを複数追加して定義します(S3のバケットポリシーと似てますね)。

委任できる権限

執筆時点で設定できた権限を列挙します。これ以外の権限を追加しようとしてもエラーで設定できませんでした。

読み取り関係(Describe*およびList*)の権限。

  • organizations:DescribeAccount
  • organizations:DescribeCreateAccountStatus
  • organizations:DescribeEffectivePolicy
  • organizations:DescribeHandshake
  • organizations:DescribeOrganization
  • organizations:DescribeOrganizationalUnit
  • organizations:DescribePolicy
  • organizations:DetachPolicy
  • organizations:ListAccounts
  • organizations:ListAccountsForParent
  • organizations:ListAWSServiceAccessForOrganization
  • organizations:ListChildren
  • organizations:ListCreateAccountStatus
  • organizations:ListDelegatedAdministrators
  • organizations:ListDelegatedServicesForAccount
  • organizations:ListHandshakesForAccount
  • organizations:ListHandshakesForOrganization
  • organizations:ListOrganizationalUnitsForParent
  • organizations:ListParents
  • organizations:ListPolicies
  • organizations:ListPoliciesForTarget
  • organizations:ListRoots
  • organizations:ListTagsForResource
  • organizations:ListTargetsForPolicy

ポリシー書き込み関係の権限。

  • organizations:AttachPolicy
  • organizations:CreatePolicy
  • organizations:DeletePolicy
  • organizations:DisablePolicyType
  • organizations:EnablePolicyType
  • organizations:UpdatePolicy

タグの権限。

  • organizations:TagResource
  • organizations:UntagResource

やってみた

まず委任ポリシーを設定する前に、メンバーアカウントでOrganizationsの画面にアクセスしてみたのがこちら。

今回、次の委任ポリシーを定義しました。

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Sid": "Statement",
			"Effect": "Allow",
			"Principal": {
				"AWS": "arn:aws:iam::123456789012:root"
			},
			"Action": [
				"organizations:Describe*",
				"organizations:List*"
			],
			"Resource": "*"
		}
	]
}

意味としては、「アカウント123456789012に」「organizations:Describe*organizations:List*の操作を」許可しています。今回は定義していませんが、Resourceで特定のOUやポリシーのみに限定できます。またConditionで条件も追加できます。

例として、次のようなConditionを追加すると、バックアップポリシーのみに限定できます。

"Condition": {
    "StringLikeIfExists": {
        "organizations:PolicyType": [
            "BACKUP_POLICY"
        ]
    }
}

先ほどの委任ポリシーを定義したあと、再度メンバーアカウントでアクセスしてみました。

先ほどは権限がなくエラーになっていたOU一覧などが表示されました!

注意点

委任できる権限一覧を見てもらうとわかりますが、執筆時点ではOUの管理などは委任できません。あくまでポリシー管理のみに限定されているため、OU管理などを任せたい場合は、従来どおりIAMロールなどを作成して渡してください。

PrincipalにAWSアカウントIDを指定していましたが、メンバーアカウントに存在しないアカウントIDも指定できます(123456789012はエラーになりました)。指定するアカウントIDを間違えないようにしましょう。

まとめ

AWS Organizationsのポリシー管理を委任できるようになりました。今後のアップデートで、OU管理なども委任できるようになるのでしょうか。期待して待ってます!