[アップデート] Amazon Aurora DSQL でリソースベースポリシーがサポートされました
いわさです。
Amazon Aurora DSQL はパブリックエンドポイントあるいは Private Link での接続経路がサポートされています。
一方でクラスターの操作や接続のためのトークン取得など AWS API レベルでの操作はどこからでも行うことが出来ました。
先日のアップデートで、Amazon Aurora DSQL クラスターにリソースベースポリシーを構成することが出来るようになりました。
以下のように Aurora DSQL クラスターの詳細画面に「アクセス許可」のタブが追加されており、ここから設定が可能になっています。
これによって、例えばトークン取得と再接続を特定の実行ロールをもつ Lambda 関数のみに制限するとか、IAM ベースで制限を行うことが出来るようになります。

aws:SourceVpcなどの条件キーも使えるので VPC あるいは IP アドレスに基づいてアクセスを制限したりすることが出来ます。
拒否ポリシーを設定してみる
リソースベースポリシーの挙動については他のリソースベースポリシーをサポートしている AWS サービスと同様ではあるのですが、一応試してみましょう。
なお、IAM ユーザー/ロールに Aurora DSQL へのアクセスポリシーがそもそも設定されている場合はリソースベースポリシーがアタッチされていないクラスターへもアクセスが可能です。
次のように特定 IAM ロール以外からのアクセスを拒否するポリシーを作成しました。
拒否ポリシーを設定する際には条件を満たせずに誰からもアクセスできないクラスターになってしまわないように注意しましょう。

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": "dsql:*",
"Resource": "arn:aws:dsql:ap-northeast-1:123456789012:cluster/2fs4kgkzq2rf3vmokhhpbqhruy",
"Condition": {
"StringNotEquals": {
"aws:PrincipalArn": "arn:aws:iam::123456789012:role/hoge-user-role"
}
}
}
]
}
上記拒否ポリシー設定後に、許可されていない IAM ユーザーでマネジメントコンソール上から Aurora DSQL クラスターを確認してみました。
すると、次のようにリソースベースアクセスポリシーで拒否されている DSQL クラスターの各種情報は取得ができなくなりました。

クラスター ID から詳細画面を開いても同じように拒否されますね。

CloudShell からdsql-connectコマンドで接続してみようとしましたが、こちらも拒否されました。
期待どおりdsql:DbConnectAdminアクションが拒否されています。

ブロックパブリックアクセス
また、リソースベースポリシーの機能にはブロックパブリックアクセス機能も実装されています。
具体的にはリソースベースポリシーの作成/変更時に自動でチェックが実行され、プリンシパルの指定がない場合や条件が設定されていない場合、パブリックとみなされて設定が出来ません。

ブロックパブリックアクセスの仕様については以下の公式ドキュメントもご確認ください。
さいごに
本日は Amazon Aurora DSQL でリソースベースポリシーがサポートされたので使ってみました。
これまでアイデンティティベースのポリシーに頼る必要がありましたが、リソースベースポリシーも併用してより細かい制御ができるようになりましたね。
リソースベースポリシーが利用できるようになるということはクロスアカウントアクセスも期待したいところなのですが、本日時点ではまだサポートされていないようです。が、将来的のリリースで利用できるようになるとのことでした。こちらも楽しみですね。

Resource-based policies for Aurora DSQL - Amazon Aurora DSQL より







