Conditionを使って特定のポリシー管理のみをメンバーアカウントに委任する #reInvent

2022.11.30

はじめに

こんにちは。大阪オフィスの林です。

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

Organizationsで管理できるポリシーとして最も有名なのが、サービスコントロールポリシー(以降、SCP)だと思っているのですが、実はそれ以外にもポリシーがあることをご存知でしょうか。

  • SCP
    • 組織のアカウント内で使用できるアクセス許可を一元管理できます。
  • バックアップポリシー
    • バックアップポリシーを使用すると、組織全体のバックアップ計画をデプロイして、組織のアカウント全体でコンプライアンスを確保できます。
  • タグポリシー
    • タグポリシーは組織全体でタグ付けされたすべてのリソースでタグを標準化するのに役立ちます。
  • AI サービスのオプトアウトポリシー
    • 人工知能 (AI) サービスのオプトアウトポリシーにより、AWS AI サービスがお客様のコンテンツを保存および使用できるかどうかを制御できます。

今回のアップデートでは上記4つのポリシー管理をメンバーアカウントに委任できるようになっています。
一方で「SCPの管理は委任したいけどバックアップポリシー/タグポリシーは触らせたくない。」など個別の要件が出てくることも想像できます。

アップデートのブログ内では、Conditionを付けてバックアップポリシーのみに限定する方法が紹介されていましたが、そのほかの条件についても記載方法を本エントリでまとめておきたいと思います。

やってみた

SCPのみを触らせたい

organizations:PolicyTypeSERVICE_CONTROL_POLICYを指定します。

"Condition": {
	"StringLikeIfExists": {
		"organizations:PolicyType": "SERVICE_CONTROL_POLICY"
	}
}

結果

SCPのみ見えるようになっておりその他のポリシー管理は権限エラーになっています。

バックアップポリシーのみを触らせたい

organizations:PolicyTypeBACKUP_POLICYを指定します。

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

結果

バックアップポリシーのみ見えるようになっておりその他のポリシー管理は権限エラーになっています。

タグポリシーのみを触らせたい

organizations:PolicyTypeTAG_POLICYを指定します。

"Condition": {
	"StringLikeIfExists": {
		"organizations:PolicyType": "TAG_POLICY"
	}
}

結果

タグポリシーのみ見えるようになっておりその他のポリシー管理は権限エラーになっています。

AI サービスのオプトアウトポリシーのみを触らせたい

organizations:PolicyTypeAISERVICES_OPT_OUT_POLICYを指定します。

"Condition": {
	"StringLikeIfExists": {
		"organizations:PolicyType": "AISERVICES_OPT_OUT_POLICY"
	}
}

結果

AI サービスのオプトアウトポリシーのみ見えるようになっておりその他のポリシー管理は権限エラーになっています。

SCPとバックアップポリシーのみを触らせたい

organizations:PolicyTypeSERVICE_CONTROL_POLICYBACKUP_POLICYを指定します。

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

結果

SCPとバックアップポリシーのみ見えるようになっておりその他のポリシー管理は権限エラーになっています。

まとめ

最小限の権限でポリシー管理を委任するために、Conditionを併用して管理を委任する方法を紹介させて頂きました。
この記事がどなたかの参考になりましたら幸いです。

以上、大阪オフィスの林がお送りしました!