GitLab Duoの認証と認可
GitLab Duo with Amazon Qは、複合IDを使用して認証リクエストを認証します。
プロダクトの他の領域における複合IDのサポートは、issue 511373で提案されています。
認証リクエストを行うトークンは、2つのIDの複合です:
- プライマリ作成者は、Amazon Qのサービスアカウントです。このサービスアカウントはインスタンス全体に適用され、Amazon Qクイックアクションが使用されたプロジェクトのデベロッパーロールを持っています。このサービスアカウントは、トークンのオーナーです。
- セカンダリ作成者は、クイックアクションを送信したヒューマンユーザーです。このユーザーの
idは、トークンのスコープに含まれています。
この複合IDにより、Amazon Qによって作成されたアクティビティーは、Amazon Qサービスアカウントに正しく帰属することが保証されます。同時に、この複合IDは、ヒューマンユーザーに対する特権エスカレーションがないことを保証します。
この動的スコープは、APIリクエストの認可中に検証されます。認可がリクエストされると、GitLabは、サービスアカウントとクイックアクションを開始したユーザーの両方が十分な権限を持っていることを検証します。
%%{init: { "fontFamily": "GitLab Sans" }}%%
flowchart TD
accTitle: Authentication flow for GitLab Duo
accDescr: API requests are checked against user permissions first, then service account permissions, with access denied if either check fails.
A[API Request] --> B{Human user has access?}
B -->|No| D[Access denied]
B -->|Yes| C{Service account has access?}
C -->|No| D
C -->|Yes| E[API request succeeds]
style D fill:#ffcccc
style E fill:#ccffcc