アカウント
ロールベースアクセス制御
RBAC(ロールベースアクセス制御)ドキュメント
概要
システムは、さまざまなリソースとアクション全体でアクセス制御を管理するための包括的なRBACモデルを実装しています。これは、ロール、ポリシー、およびユーザーロール割り当てで構成されています。
コアコンポーネント
リソース
システムは、次の保護されたリソースを定義します:
- Audit
- DevPod
- Image
- Payment
- Pubkey
- Registry
- Region
- Resource
- Serverless
- Storage
- Team
- Role
- UserRole
アクション
リソースで使用可能なアクション:
- List
- Get
- Create
- Update
- Delete
ロールシステム
ロールは、ユーザーが特定のリソースで実行できるアクションを定義する権限のコレクションです。ロールは、関連する権限をグループ化することで、アクセス権を効率的に整理および管理するのに役立ちます。
事前定義されたロール
-
AccountAdmin
- アカウントレベルのリソースへの完全なアクセス
- チームメンバーを管理可能
- アカウント設定を構成可能
-
Developer
- DevPodsを管理可能
- Serverlessリソースを管理可能
- Imagesを管理可能
- Storageを管理可能(作成/読み取りのみ)
-
Auditor
- Auditログへの読み取り専用アクセス
-
Finance
- Payment機能への完全なアクセス
-
Ops
- DevPodsとServerlessへの読み取りアクセス
- Images、Storage、Pubkey、Resourcesへの完全なアクセス
ポリシー
ポリシーは、特定の権限を定義するアクセス制御の基本的な構成要素です。各ポリシーは、特定のリソースで特定のアクションを実行する権限を付与するルールを表します。
ポリシー構造
- Resource:ターゲットリソース
- Action:許可されたアクション
ポリシーの割り当て
- ポリシーはRolePolicy マッピングを通じてロールに割り当てられます
- 複数のポリシーを単一のロールに割り当てることができます
- ポリシーの割り当ては、ロールごとに一意です
ユーザー権限制御
システムは、ユーザー、ロール、ポリシーの3層モデルを通じて権限制御を実装しています。ロールは、ユーザーとポリシーの間の橋渡しとして機能し、アクセス権を制御するための柔軟で管理しやすい方法を提供します。
制御フロー
-
ユーザー割り当て
- ユーザーには1つ以上のロールが割り当てられます
- ロールの割り当ては、各アカウントに固有です
- ユーザーは、異なるアカウントで異なるロールを持つことができます
-
橋渡しとしてのロール
- ロールは、ポリシーのコレクションのコンテナとして機能します
- 各ロールは、特定の責任のセットを定義します
- ロールにより、権限管理がより保守しやすくなります
-
ポリシーの実施
- ポリシーは実際の権限を定義します
- 各リクエストは、ユーザーのロールのポリシーに対して検証されます
- 一致するポリシーが存在する場合にのみアクセスが許可されます
承認プロセス
-
リクエスト処理
- アカウント情報を抽出
- ターゲットリソースとアクションを識別
- ユーザーのロールとポリシーを確認
-
権限チェック
- アカウント固有のロールがターゲットアカウントに対して検証されます
- ポリシーマッチングは、完全一致とワイルドカードの両方を考慮します
-
アクセス制御
- 割り当てられたロールのいずれかに一致するポリシーがある場合、アクセスが許可されます
- 拒否されたリクエストは、エラーではなく空の結果を返します
- RBAC検証後に監査ログが記録されます
ベストプラクティス
-
ロール管理
- 可能な限り事前定義されたロールを使用
- 最小限の必要な権限でカスタムロールを作成
- ロールの割り当てを定期的に確認
-
セキュリティの考慮事項
- 常にアカウントコンテキストを検証
- ロールベースのUI制限を実装
- ロール変更の監査ログを維持
-
パフォーマンス
- ロールとポリシーの割り当てはキャッシュされます
- 一括割り当て用のバッチ操作が利用可能
- 権限チェック用に最適化されたデータベースクエリ