You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: revise ADR-004 with accurate GRANT semantics and security analysis
The initial ADR-004 incorrectly stated that per-table GRANT statements
were needed for custom roles. DSQL supports GRANT ... ON ALL TABLES IN
SCHEMA for bulk grants, though ALTER DEFAULT PRIVILEGES is not
supported (requiring re-grant after migrations that add tables).
Revise the ADR to:
- Fix GRANT management description (ON ALL TABLES, not per-table)
- Add v2 comparison (also used master user, but with long-lived
passwords vs v3 IAM temp tokens)
- Add explicit security risk analysis for admin role (DDL + role
management exposure via SQL injection, mitigated by Drizzle ORM
parameterization)
- Add concrete migration steps for future custom role adoption
- Refocus decision rationale on CDK-to-migration bootstrap dependency
as the primary reason, removing the inaccurate GRANT complexity claim
Simplify the design.ja.md summary to match.
Copy file name to clipboardExpand all lines: .serverless-full-stack-webapp-starter-kit/docs/v3.0.0/adr-004-dsql-admin-role.ja.md
+30-10Lines changed: 30 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,8 +8,8 @@
8
8
9
9
Aurora DSQL は2種類のデータベースロールを提供する:
10
10
11
-
-**admin ロール**: IAM アクション `dsql:DbConnectAdmin` で接続。DDL + DML の全権限を持つ。クラスタ作成時に自動生成される唯一の組み込みロール
12
-
-**カスタムロール**: IAM アクション `dsql:DbConnect` で接続。DML のみ。`admin` で `CREATE ROLE ... WITH LOGIN` → `AWS IAM GRANT <role> TO '<IAM ARN>'` → テーブルごとの `GRANT` で作成する
11
+
-**admin ロール**: IAM アクション `dsql:DbConnectAdmin` で接続。DDL + DML + ロール管理の全権限を持つ。クラスタ作成時に自動生成される唯一の組み込みロール
12
+
-**カスタムロール**: IAM アクション `dsql:DbConnect` で接続。`admin` で `CREATE ROLE ... WITH LOGIN` → `AWS IAM GRANT <role> TO '<IAM ARN>'` → `GRANT ... ON ALL TABLES IN SCHEMA` で作成する。付与された DML 権限のみ実行可能
4. CDK の IAM ポリシーを `dsql:DbConnectAdmin` → `dsql:DbConnect` に変更
41
+
42
+
GRANT 管理は `ON ALL TABLES IN SCHEMA` で一括付与できるため、テーブルごとの個別 GRANT は不要。ただし DSQL は `ALTER DEFAULT PRIVILEGES` を[サポートしていない](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/working-with-postgresql-compatibility-supported-sql-features.html)ため、テーブル追加を含むマイグレーションのたびに GRANT の再実行が必要(マイグレーションランナー末尾に1行追加で自動化可能)。
43
+
23
44
## 決定
24
45
25
46
v3.0.0 では全 Lambda で `admin` ロールを維持する。
26
47
27
-
カスタムロールへの分離は以下の理由で見送る:
48
+
カスタムロールへの分離を見送る主な理由:
28
49
29
-
1.**GRANT 管理の複雑さ**: テーブル追加のたびにマイグレーションで `GRANT SELECT, INSERT, UPDATE, DELETE ON <table> TO <role>` が必要。`ALTER DEFAULT PRIVILEGES` の DSQL 対応状況が未確認で、対応していない場合は全マイグレーションに手動で GRANT 文を追加する運用になる
30
-
2.**CDK → マイグレーション間の循環的依存**: カスタムロールの `AWS IAM GRANT` には Lambda 実行ロールの ARN が必要。CDK でロールを作成 → マイグレーションで IAM マッピング → という順序依存が生じ、初回デプロイのブートストラップが複雑になる
31
-
3.**リスクの限定性**: 認証は IAM 一時トークン(15分有効期限、自動リフレッシュ)で保護されている。Lambda 実行ロールの IAM ポリシーは対象クラスタの ARN にスコープされており、他のクラスタへのアクセスは不可。admin ロールによる追加リスクは「Lambda 内のコードが意図しない DDL を実行する可能性」に限定される
50
+
1.**CDK → マイグレーション間の順序依存**: カスタムロールの `AWS IAM GRANT` には Lambda 実行ロールの ARN が必要。CDK でロールを作成 → マイグレーションで IAM マッピング → という順序依存が生じ、初回デプロイのブートストラップが複雑になる
51
+
2.**v2 からの継続**: v2 でもマスターユーザーで全接続しており、v3 で IAM 一時トークンに移行したことで認証レイヤーは改善済み。ロール分離は追加の改善であり、v3 のスコープとしては優先度が低い
0 commit comments