[アップデート] RCP が DynamoDB をサポートするようになりました

[アップデート] RCP が DynamoDB をサポートするようになりました

2026.02.15

いわさです。

AWS Organizations の RCP(リソースコントロールポリシー)を使うと、リソースベースポリシーなどを使った組織外へのアクセス許可の境界を Organizations で管理することができます。
この RCP 非常に便利ですがサポートされているサービスがまだ限定的です。
先月のアップデート Cognito と CloudWatch Logs がサポートされましたが[1]、先日のアップデートで DynamoDB もサポートされるようになりました。

https://aws.amazon.com/about-aws/whats-new/2026/02/aws-expands-resource-control-policies-amazon/

DynamoDB はリソースベースポリシーをサポートしており組織外からのクロスアカウントアクセスをメンバーアカウントの裁量で許可させることができます。
このあたりを組織管理者がコントロールできるようになります。

リソースベースポリシーでクロスアカウントさせてみる

まずは検証環境を用意します。
次のようにある Organizations 内の AWS アカウントに対して次のようなリソースベースポリシーを設定します。
テーブルを所有するアカウント外からのアクセスも許可しています。許可している AWS アカウントは組織内の他のメンバーアカウントと、組織外の AWS アカウントをどちらも指定しています。

image.png

まず、RCP がまだアタッチされていない状態で確認してみましょう。
組織外の AWS アカウントから上記テーブルにアイテムを追加してみます。

% aws dynamodb put-item --table-name arn:aws:dynamodb:ap-northeast-1:123456789012:table/hoge0215dynamodb --item '{"hoge": {"S": "hoge1"}, "name": {"S": "test-name"}}' --profile hoge

コマンドは成功し、次のようにアイテムが作成できましたね。

image.png

リソースコントロールポリシーで組織外からのアクセスを制御してみる

続いて、RCP を使って組織外からのクロスアカウントアクセスを制限してみましょう。
組織内は許可します。

RCP を作成しようとすると、次のように DynamoDB が選択できることが確認できますね。

98D0C04F-B333-438F-A38F-A6189A5BB18B.png

次のようなポリシーを作ってみました。対象 Organizations 以外からのクロスアカウントアクセスを拒否します。

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Sid": "Statement1",
			"Effect": "Deny",
			"Principal": "*",
			"Action": "dynamodb:*",
			"Resource": "*",
			"Condition": {
				"StringNotEquals": {
					"aws:PrincipalOrgID": "o-8j81brsjuj"
				}
			}
		}
	]
}

上記ポリシーを、DynamoDB リソースを持っている AWS アカウントが所属する OU にアタッチしました。

image.png

先程と同じように組織外のアカウントからアクセスしてみましょう。

% aws dynamodb put-item --table-name arn:aws:dynamodb:ap-northeast-1:123456789012:table/hoge0215dynamodb --item '{"hoge": {"S": "hoge1"}, "name": {"S": "test-name"}}' --profile hoge

An error occurred (AccessDeniedException) when calling the PutItem operation: User: arn:aws:iam::1111222233334444:user/hoge is not authorized to perform: dynamodb:PutItem on resource: arn:aws:dynamodb:ap-northeast-1:123456789012:table/hoge0215dynamodb with an explicit deny in a resource control policy

リソースベースポリシーにて組織外からのクロスアカウントアクセスを許可しているのも関わらず、期待どおりリソースコントロールポリシーで制限されていることが確認出来ました。良いですね。

続いて組織内のアカウントからクロスアカウントアクセスしてみましょう。

% aws dynamodb put-item --table-name arn:aws:dynamodb:ap-northeast-1:123456789012:table/hoge0215dynamodb --item '{"hoge": {"S": "hoge2"}, "name": {"S": "test-name"}}' --profile hogeadmin

こちらは問題なくクロスアカウントアクセスに成功しました。次のように新しいアイテムが作成できています。

image.png

さいごに

本日は RCP が DynamoDB をサポートするようになったので使ってみました。

Cognito がサポートされて DynamoDB がサポートされていなかったのが意外ですね。
DynamoDB のリソースベースポリシー周りを RCP でアクセス許可境界を設定したい時などは需要ありそうです。

脚注
  1. [アップデート] RCP が Cognito と CloudWatch Logs もサポートするようになりました | DevelopersIO ↩︎

この記事をシェアする

FacebookHatena blogX

関連記事