使用 ODBC 用戶端為 Microsoft AD FS 使用者設定對 Amazon Athena 的聯合存取權 - Amazon Athena

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

使用 ODBC 用戶端為 Microsoft AD FS 使用者設定對 Amazon Athena 的聯合存取權

若要使用 ODBC 用戶端為 Microsoft Active Directory Federation Services (AD FS) 使用者設定 Amazon Athena 的聯合存取權,您必須先在 AD FS 和您的 AWS 帳戶之間建立信任。有了此信任,您的 AD 使用者就可以使用其 AD 憑證聯合到 AWS,並取得 AWS Identity and Access Management (IAM) 角色存取 Athena API 等 AWS 資源的許可。

若要建立此信任,您可將 AD FS 作為 SAML 提供者新增至您的 AWS 帳戶,並建立聯合身分使用者可以擔任的 IAM 角色。在 AD FS 端,您可以將 AWS 新增為依存方,並撰寫 SAML 宣告規則,以將正確的使用者屬性傳送至 AWS 進行授權 (特別是 Athena 和 Amazon S3)。

設定 AD FS 存取 Athena,主要步驟如下所示:

1. 設定 IAM SAML 提供者和角色

2. 設定 AD FS

3. 建立 Active Directory 使用者和群組

4. 設定 AD FS ODBC 與 Athena 之間的連線

1. 設定 IAM SAML 提供者和角色

在本節中,您可將 AD FS 作為 SAML 提供者新增至您的 AWS 帳戶,並建立聯合身分使用者可以擔任的 IAM 角色。

若要設定 SAML 提供者
  1. 登入 AWS Management Console,並開啟位於 https://console.aws.amazon.com/iam/ 的 IAM 主控台。

  2. 在導覽窗格中,請選擇 Identity providers (身分提供者)。

  3. 選擇 Add provider (新增提供者)。

  4. Provider type (提供者類型) 選擇 SAML

    選擇 SAML。
  5. 對於 Provider name (供應商名稱),輸入 adfs-saml-provider

  6. 在瀏覽器中,輸入下列位址,以下載 AD FS 伺服器的聯合 XML 檔案。若要執行此步驟,您的瀏覽器必須能夠存取 AD FS 伺服器。

    https://adfs-server-name/federationmetadata/2007-06/federationmetadata.xml
  7. 在 IAM 主控台中,對於 Metadata document (中繼資料文件),選擇 Choose file (選擇檔案),然後將聯合中繼資料檔案上傳至 AWS。

  8. 若要完成,請選擇 Add provider (新增提供者)。

接著,建立聯合身分使用者可擔任的 IAM 角色。

若要為聯合身分使用者建立 IAM 角色
  1. 在 IAM 主控台導覽窗格中,選擇 Roles (角色)。

  2. 選擇 建立角色

  3. Trusted entity type (可信實體類型) 中,選擇 SAML 2.0 federation (SAML 2.0 聯合)。

  4. 對於 SAML 2.0-based provider (以 SAML 2.0 為基礎的提供者),請選擇您建立的 adfs-saml-provider 提供者。

  5. 選擇允許程式設計和 AWS 管理主控台存取,然後選擇下一步

    選擇 SAML 作為可信實體類型。
  6. Add permissions (新增許可) 頁面上,篩選此角色所需的 IAM 許可政策,然後選取對應的核取方塊。本教學課程會連接 AmazonAthenaFullAccessAmazonS3FullAccess 政策。

    將 Athena 完整存取政策連接到角色。
    將 Amazon S3 完整存取政策連接到角色。
  7. 選擇 Next (下一步)

  8. Name, review, and create (名稱、檢閱和建立) 頁面的 Role name (角色名稱) 中,輸入角色的名稱。本教學課程使用名稱 adfs-data-access

    Step 1: Select trusted entities (步驟 1:選取可信實體) 中,應使用 "Federated:" "arn:aws:iam::account_id:saml-provider/adfs-saml-provider" 自動填入 Principal (主體) 欄位。Condition 欄位應包含 "SAML:aud""https://signin.aws.amazon.com/saml"

    可信實體 JSON。

    Step 2: Add permissions (步驟 2:新增許可) 會說明您已連接至角色的政策。

    連接至角色的政策清單。
  9. 選擇 建立角色。橫幅訊息會確認角色的建立。

  10. 請在 Roles (角色) 頁面上,選擇您剛剛建立的角色名稱。角色的摘要頁面會說明已連接的政策。

    角色的摘要頁面。

2. 設定 AD FS

現在,您已準備好將 AWS 新增為依存方並撰寫 SAML 宣告規則,因此您可以將正確的使用者屬性傳送至 AWS 進行授權。

以 SAML 為基礎的聯合有兩個參與者:IdP (Active Directory) 和依存方 (AWS),這是使用 IdP 身分驗證的服務或應用程式。

若要設定 AD FS,請先新增依存方信任,然後為依存方設定 SAML 宣告規則。AD FS 使用宣告規則來形成傳送給依存方的 SAML 聲明。SAML 聲明指出 AD 使用者的相關資訊為 true,並且已對使用者進行身分驗證。

新增依存方信任

若要在 AD FS 中新增依存方信任,您可以使用 AD FS 伺服器管理員。

若要在 AD FS 中新增依存方信任
  1. 登入 AD FS 伺服器。

  2. Start (開始) 選單上,開啟 Server Manager (服器管理員)。

  3. 選擇 Tools (工具),然後選擇 AD FS Management (AD FS 管理)。

    選擇 Tools (工具)、AD FS Management (AD FS 管理)。
  4. 在導覽窗格的 Trust Relationships (信任關係) 下,選擇 Relying Party Trusts (依存方信任)。

  5. Actions (動作) 下,選擇 Add Relying Party Trust (新增依存方信任)。

    選擇 Add Relying Party Trust (新增依存方信任)。
  6. Add Relying Party Trust Wizard (新增信賴方信任精靈) 頁面上,選擇 Start (開始)

    選擇 Start (啟動)。
  7. Select Data Source (選取資料來源) 頁面上,選取 Import data about the relying party published online or on a local network (匯入關於在線上或本機網路上發佈依存方的資料) 選項。

  8. 針對 Federation metadata address (host name or URL) (聯合中繼資料地址 (主機名稱或 URL)),輸入 URL https://signin.aws.amazon.com/static/saml-metadata.xml

  9. 選擇 Next (下一步)

    設定資料來源
  10. Specify Display Name (指定顯示名稱) 頁面上,對於 Display name (顯示名稱),輸入您的依存方的顯示名稱,然後選擇 Next (下一步)。

    輸入依存方的顯示名稱。
  11. Configure Multi-factor Authentication Now (現在設定多重要素驗證) 頁面上,此教學課程會選取 I do not want to configure multi-factor authentication for this relying party trust at this time (我不想此時針對該依存方設定多重要素驗證)。

    為了提高安全性,建議您設定多重要素驗證以協助保護您的 AWS 資源。因為使用範例資料集,因此本教學課程不會啟用多重要素驗證。

    設定多重要素驗證。
  12. 選擇 Next (下一步)

  13. Choose Issuance Authorization Rules (選擇發行授權規則) 頁面上,選取 Permit all users to access this relying party (允許所有使用者存取此依存方)。

    此選項允許 Active Directory 中的所有使用者搭配使用 AD FS 和 AWS 作為依存方。您應該考量您的安全要求,並適當地對此組態進行調整。

    設定使用者對依存方的存取權。
  14. 選擇 Next (下一步)

  15. Ready to Add Trust (準備新增信任) 頁面上,選擇 Next (下一步) 以將依存方信任新增至 AD FS 組態資料庫。

    選擇 Next (下一步)。
  16. Finish (完成) 頁面上,選擇 Close (關閉)。

    選擇 Close (關閉)。

設定依存方的 SAML 宣告規則

在此任務中,您會建立兩組宣告規則。

第一組規則 1–4,包含基於 AD 群組成員資格擔任 IAM 角色所需的 AD FS 宣告規則。如果您想要建立 AWS Management Console 的聯合存取權,這些規則與您建立的規則相同。

第二組規則 5–6 是 Athena 存取控制所需的宣告規則。

若要建立 AD FS 宣告規則
  1. 在 AD FS 管理主控台導覽窗格中,選擇 Trust Relationships (信任關係)、Relying Party Trusts (依存方信任)。

  2. 尋找您在上一節建立的依存方。

  3. 在依存方上按一下滑鼠右鍵,選擇 Edit Claim Rules (編輯宣告規則),或從 Actions (動作) 選單中選擇 Edit Claim Rules (編輯宣告規則)。

    選擇 Edit Claim Rules (編輯宣告規則)。
  4. 選擇 Add Rule (新增規則)。

  5. 在 Add Transform Claim Rule Wizard (新增轉換宣告規則精靈) 的 Configure Rule (設定規則) 頁面上,輸入下列資訊以建立宣告規則 1,然後選擇 Finish (完成)。

    • 針對 Claim Rule name (宣告規則名稱),輸入 NameID

    • 針對 Rule template (規則範本),使用 Transform an Incoming Claim (轉換傳入宣告)。

    • 針對 Incoming claim type (傳入宣告類型),選擇 Windows account name (Windows 帳戶名稱)。

    • 針對 Outgoing claim type (傳出宣告類型),選擇 Name ID (名稱 ID)。

    • 針對 Outgoing name ID format (傳出名稱 ID 格式),選擇 Persistent Identifier (持久性標識符)

    • 選取 Pass through all claim values (傳遞所有宣告值)。

    建立第一個宣告規則。
  6. 選擇 Add Rule (新增規則),然後輸入下列資訊以建立宣告規則 2,然後選擇 Finish (完成)。

    • 針對 Claim rule name (宣告規則名稱),輸入 RoleSessionName

    • 針對 Rule template (規則範本),使用 Send LDAP Attribute as Claims (將 LDAP 屬性傳送為宣告)。

    • 針對 Attribute store (屬性存放區),選擇 Active Directory

    • 針對 Mapping of LDAP attributes to outgoing claim types (將 LDAP 屬性映射至傳出宣告類型),新增屬性 E-Mail-Addresses。針對 Outgoing Claim Type (傳出宣告類型),輸入 https://aws.amazon.com/SAML/Attributes/RoleSessionName

    建立第二個宣告規則。
  7. 選擇 Add Rule (新增規則),然後輸入下列資訊以建立宣告規則 3,然後選擇 Finish (完成)。

    • 針對 Claim rule name (宣告規則名稱),輸入 Get AD Groups

    • 針對 Rule template (規則範本),使用 Send Claims Using a Custom Rule (使用自訂規則傳送宣告)。

    • 針對 Custom rule (自訂規則),輸入下列程式碼。

      c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]=> add(store = "Active Directory", types = ("http://temp/variable"), query = ";tokenGroups;{0}", param = c.Value);
      建立第三個宣告規則。
  8. 選擇 Add Rule (新增規則)。輸入下列資訊以建立宣告規則 4,然後選擇 Finish (完成)。

    • 針對 Claim rule name (宣告規則名稱),輸入 Role

    • 針對 Rule template (規則範本),使用 Send Claims Using a Custom Rule (使用自訂規則傳送宣告)。

    • 針對 Custom rule (自訂規則),輸入下列含有您先前建立的帳戶號碼和 SAML 提供者的名稱的程式碼:

      c:[Type == "http://temp/variable", Value =~ "(?i)^aws-"]=> issue(Type = "https://aws.amazon.com/SAML/Attributes/Role", Value = RegExReplace(c.Value, "aws-", "arn:aws:iam::AWS_ACCOUNT_NUMBER:saml-provider/adfs-saml-provider,arn:aws:iam:: AWS_ACCOUNT_NUMBER:role/"));
    建立第四個宣告規則。

3. 建立 Active Directory 使用者和群組

現在,您已準備好建立可存取 Athena 的 AD 使用者,以及可將其放入的 AD 群組,以便您可以依群組控制存取層級。建立可分類資料存取模式的 AD 群組之後,您可以將使用者新增至這些群組。

若要建立 AD 使用者以存取 Athena
  1. 在 Server Manager Dashboard (伺服器管理員儀表板) 上,選擇 Tools (工具),然後選擇 Active Directory Users and Computers (Active Directory 使用者和電腦)。

    選擇 Tools (工具)、Active Directory Users and Computers (Active Directory 使用者和電腦)。
  2. 在導覽窗格中,選擇 使用者

  3. Active Directory Users and Computers (Active Directory 使用者和電腦) 工具列上,選擇 Create user (建立使用者) 選項。

    選擇 Create user (建立使用者)。
  4. New Object – User (新建 – 使用者) 對話方塊中,對於 First name (名字)、Last name (姓氏) 和 Full name (全名),輸入名稱。本教學課程使用的是 Jane Doe

    輸入使用者名稱。
  5. 選擇 Next (下一步)

  6. 對於 Password (密碼),輸入密碼,然後再次輸入以確認。

    為了簡單起見,本教學課程取消選取 User must change password at next sign on (使用者必須在下次登入時變更密碼)。在真實世界的案例中,您應該要求新建立的使用者變更其密碼。

    輸入密碼。
  7. 選擇 Next (下一步)

  8. 選擇 Finish (完成)。

    選擇 Finish (完成)。
  9. Active Directory Users and Computers (Active Directory 使用者和電腦) 上,選擇使用者名稱。

  10. 在使用者的 Properties (屬性) 對話方塊中,對於 E-mail (電子郵件),輸入電子郵件地址。本教學課程使用的是 jane@example.com

    輸入電子郵件地址。
  11. 選擇 OK (確定)。

建立 AD 群組,以代表資料存取模式

您可以建立 AD 群組,其成員在登入 AWS 時可擔任 adfs-data-access IAM 角色。下列範例會建立一個名為 aws-adfs-data-access 的 AD 群組。

若要建立 AD 群組
  1. 在 Server Manager Dashboard (伺服器管理員儀表板) 上,從 Tools (工具) 選單上,選擇 Active Directory Users and Computers (Active Directory 使用者和電腦)。

  2. 在工具列上,選擇 Create new group (建立新的群組) 選項。

    選擇 Create new group (建立新群組)。
  3. New Object - Group (新增物件 - 群組) 對話方塊中,輸入下列資訊:

    • 針對 Group name (群組名稱),輸入 aws-adfs-data-access

    • 針對 Group scope (群組範圍),選取 Global (全域)。

    • 針對 Group type (群組類型),選取 Security (安全)。

    在 AD 中建立全域安全群組。
  4. 選擇 OK (確定)。

將 AD 使用者新增至相應群組

既然您已建立 AD 使用者和 AD 群組,您可以將使用者新增至群組。

若要將 AD 使用者新增至 AD 群組
  1. 在 Server Manager Dashboard (伺服器管理員儀表板) 上的 Tools (工具) 選單上,選擇 Active Directory Users and Computers (Active Directory 使用者和電腦)。

  2. 針對 First name (名字) 和 Last name (姓氏),選擇使用者 (例如,Jane Doe)。

  3. 在使用者的 Properties (屬性) 對話框中的 Member Of (成員群組) 標籤上,選擇 Add (新增)。

    選擇 Add (新增)。
  4. 根據您的需求新增一或多個 AD FS 群組。本教學課程新增了 aws-adfs-data-access 群組。

  5. Select Groups (選取群組) 對話方塊中,針對 Enter the object names to select (輸入要選取的物件名稱),輸入您建立的 AD FS 群組的名稱 (例如,aws-adfs-data-access),然後選擇 Check Names (檢查名稱)。

    選擇 Check Names (檢查名稱)。
  6. 選擇 OK (確定)。

    在使用者的 Properties (屬性) 對話方塊中,AD 群組的名稱會顯示在 Member of (成員群組) 清單中。

    AD 群組已新增至使用者屬性。
  7. 選擇 Apply (套用),然後選擇 OK (確定)。

4. 設定 AD FS ODBC 與 Athena 之間的連線

建立 AD 使用者和群組之後,您便準備好使用 Windows 中的 ODBC 資料來源程式來設定 Athena ODBC 與 AD FS 的連線。

若要設定 AD FS ODBC 與 Athena 之間的連線
  1. 安裝適用於 Athena 的 ODBC 驅動程式。如需下載連結,請參閱使用 ODBC 連接到 Amazon Athena

  2. 在 Windows 中,選擇 Start (開始),ODBC Data Sources (ODBC 資料來源)。

  3. ODBC Data Source Administrator (ODBC 資料來源管理員) 程式中,選擇 Add (新增)。

    選擇 Add (新增) 以新增 ODBC 資料來源。
  4. Create New Data Source (建立新的資料來源) 對話方塊中,選擇 Simba Athena ODBC Driver (Simba Athena ODBC 驅動程式),然後選擇 Finish (完成)。

    選擇 Simba Athena ODBC Driver (Simba Athena ODBC 驅動程式)。
  5. Simba Athena ODBC Driver DSN Setup (Simba Athena ODBC 驅動程式 DSN 設定) 對話方塊中,輸入以下值:

    • Data Source Name (資料來源名稱),為您的資料來源輸入名稱,例如 Athena-odbc-test

    • Description (描述) 輸入對資料來源的描述。

    • AWS 區域:輸入您正在使用的 AWS 區域 (例如 us-west-1)。

    • S3 Output Location (S3 輸出位置):輸入您要存放輸出的 Simple Storage Service (Amazon S3) 路徑。

    輸入 Simba Athena ODBC Driver DSN Setup (Simba Athena ODBC 驅動程式 DSN 設定) 的值。
  6. 選擇 Authentication Options (身分驗證選項)。

  7. Authentication Options (身分驗證選項) 對話方塊中,指定以下值:

    • Authentication Type (身分驗證類型) 中,選擇 ADFS

    • User (使用者) 中,輸入使用者的電子郵件地址 (例如,jane@example.com)。

    • Password (密碼) 中,輸入使用者的 ADFS 密碼。

    • IdP Host (IdP 主機) 中,輸入 AD FS 伺服器名稱 (例如,adfs.example.com)。

    • IdP Port (IdP 主機) 中,使用預設值 443

    • 選取 SSL Insecure (SSL 不安全) 選項。

    設定身分驗證選項。
  8. 選擇 OK (確定),以關閉 Authentication Options (身分驗證選項)。

  9. 選擇 Test (測試) 以測試連接,或 OK (確定) 以完成操作。