在 Amazon Redshift Serverless 中定義要向聯合身分使用者授予的資料庫角色 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 Amazon Redshift Serverless 中定義要向聯合身分使用者授予的資料庫角色

當您是組織的一分子時,您會有一組相關聯的角色。例如,你有你工作職能的角色,如程式設計人員管理員。您的角色決定了您可以存取哪些應用程式和資料。大多數組織會使用身分提供者 (例如 Microsoft Active Directory) 將角色指派給使用者和群組。使用角色來控制資源存取的情況變多了,因為組織不必花太多時間管理個別使用者。

Amazon Redshift Serverless 最近引進了角色型存取控制功能。您可以使用資料庫角色來保護對於資料和物件 (例如結構描述或資料表) 的存取。或者,您也可以使用角色來定義一組提升的許可,例如針對系統監控或資料庫管理員來定義。但在向資料庫角色授予資源許可後,還要再進行一個步驟,那就是將使用者的角色從組織連線到資料庫角色。您可以執行SQL陳述式,在初次登入時將每個使用者指派給其資料庫角色,但這非常費力。比較簡單的方法是定義要向其授予的資料庫角色,並將其傳遞至 Amazon Redshift Serverless。這麼做的好處是可以簡化初始登入程序。

您可以使用 GetCredentials 將角色傳遞至 Amazon Redshift Serverless。當使用者第一次登入 Amazon Redshift Serverless 資料庫時,系統會建立相關聯的資料庫使用者,並將其對應至相符的資料庫角色。本主題會詳細說明將角色傳遞至 Amazon Redshift Serverless 的機制。

傳遞資料庫角色有幾個主要的使用案例:

  • 當使用者透過第三方身分提供者 (一般皆已設定聯合功能) 來登入,並透過工作階段標籤傳遞角色時。

  • 當使用者透過IAM登入憑證登入時,其角色會透過標籤索引鍵和值傳遞。

如需角色型存取控制的詳細資訊,請參閱角色型存取控制 (RBAC)

定義資料庫角色

您必須先在資料庫中設定資料庫角色,並向其授予適當的資料庫資源許可,然後才能將角色傳遞至 Amazon Redshift Serverless。例如,在簡單的案例中,您可以建立名為 sales 的資料庫角色,並向其授予有銷售資料之資料表的查詢存取權。如需如何建立資料庫角色和授予許可的詳細資訊,請參閱 CREATEROLEGRANT

定義要向聯合身分使用者授予之資料庫角色的使用案例

以下各節概述了將資料庫角色傳遞至 Amazon Redshift Serverless 可以簡化資料庫資源存取方式的幾個使用案例。

使用身分提供者來登入

第一個使用案例假設您的組織在身分與存取管理服務中具有使用者身分。此服務可以是雲端型,例如 JumpCloud Okta 或內部部署,例如 Microsoft Active Directory。目標是在使用者登入查詢編輯器 V2 等用戶端時,例如使用JDBC用戶端時,自動將使用者的角色從身分提供者映射到資料庫角色。若要進行這方面的設定,您必須先完成幾個組態任務。這些索引標籤包括以下項目:

  1. 使用信任關係設定與身分提供者 (IdP) 的聯合整合。這是先決條件。當您設定此項目時,身分提供者會負責透過SAML聲明驗證使用者,並提供登入憑證。如需詳細資訊,請參閱將第三方SAML解決方案供應商與 整合 AWS。您也可以在將 Amazon Redshift 查詢編輯器 V2 的存取與 Active Directory Federation Services (AD FS) 聯合將 Amazon Redshift 查詢編輯器 v2 的單一登入存取與 Okta 聯合 中找到更多資訊。

  2. 使用者必須具有下列政策許可:

    • GetCredentials — 提供憑證以供臨時授權登入 Amazon Redshift Serverless。

    • sts:AssumeRoleWithSAML – 提供將企業身分存放區或目錄繫結到角色型 AWS 存取的機制。

    • sts:TagSession — 身分提供者主體上的標籤工作階段動作許可。

    在此情況下, 會AssumeRoleWithSAML傳回一組安全登入資料,以供已透過驗證回應SAML進行身分驗證的使用者使用。此操作提供一種機制,可將身分存放區或目錄繫結到角色型 AWS 存取,而不需要使用者特定的憑證。對於具有 許可的使用者AssumeRoleWithSAML,身分提供者負責管理用於傳遞角色資訊的SAML聲明。

    最佳實務是,我們建議將許可政策連接至IAM角色,然後視需要指派給使用者和群組。如需詳細資訊,請參閱 Amazon Redshift 中的身分和存取管理

  3. 您可以 role1:role2 格式的冒號分隔角色值來設定 RedshiftDbRoles 標籤。例如:manager:engineer。這些項目可以從身分提供者中所設定的 session-tag 實作來擷取。SAML 身分驗證請求會以程式設計方式傳遞角色。如需傳遞工作階段標籤的相關資訊,請參閱在 AWS STS中傳遞工作階段標籤

    如果您傳遞的角色名稱不存在於資料庫中,系統會將其忽略。

在這個使用案例中,當使用者使用聯合身分登入時,系統會透過工作階段標籤的索引鍵和值在授權請求中傳遞其角色。緊接在授權之後,GetCredentials 便會將角色傳遞至資料庫。連線成功後,資料庫角色便會對應,而且使用者可以執行與其角色對應的資料庫任務。操作的基本部分是系統會在初始授權請求中向 RedshiftDbRoles 工作階段標籤指派角色。如需傳遞工作階段標籤的詳細資訊,請參閱使用 傳遞工作階段標籤 AssumeRoleWithSAML

使用 IAM憑證登入

在第二個使用案例中,角色可以為使用者傳遞,而且他們可以透過IAM憑證存取資料庫用戶端應用程式。

  1. 在此情況下登入的使用者必須獲派下列動作的政策許可:

    • tag:GetResources — 傳回與指定標籤相關聯的已標記資源。

    • tag:GetTagKeys — 傳回目前使用中的標籤索引鍵。

      最佳實務是,我們建議將許可政策連接至IAM角色,然後視需要指派給使用者和群組。如需詳細資訊,請參閱 Amazon Redshift 中的身分和存取管理

  2. 我們也需要用來存取資料庫服務 (例如 Amazon Redshift Serverless) 的允許許可。

  3. 在這個使用案例中,請在 AWS Identity and Access Management中設定角色的標籤值。您可以選擇編輯標籤,並建立名為 的標籤索引鍵,RedshiftDbRoles其中包含 角色的隨附標籤值字串。例如,manager:engineer

當使用者登入時,系統會將其角色新增至授權請求並傳遞給資料庫。其會對應至現有的資料庫角色。

其他資源

如使用案例所述,您可以設定 IdP 和 AWS之間的信任關係。如需詳細資訊,請參閱使用依賴方信任設定 SAML 2.0 IdP 並新增宣告。