啟用對 Athena API 的聯合存取 - Amazon Athena

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

啟用對 Athena API 的聯合存取

本節討論的聯合存取,可讓組織中的使用者或用戶端應用程式呼叫 Amazon Athena API 操作。在這種情況下,組織的使用者無法直接存取 Athena。相反,您可以管理 Microsoft 活動目錄之外 AWS 的使用者認證。Active Directory 支援 SAML 2.0 (安全聲明標記語言 2.0)。

若要在此案例中驗證使用者,請使用支援 SAML.2.0 的 JDBC 或 ODBC 驅動程式,以存取 Active Directory Federation Services (ADFS) 3.0,並讓用戶端應用程式能夠呼叫 Athena API 操作。

如需有關 SAML 2.0 支援的詳細資訊 AWS,請參閱《IAM 使用者指南》中的關於 SAML 2.0 聯合

注意

特定類型的身分提供者 (IdP),即 Active Directory Federation Service (ADFS 3.0) (Windows Server 的一部分) 支援對 Athena API 的聯合存取。聯合存取與 IAM Identity Center 信任身分傳播功能不相容。透過支援 SAML 2.0 的 JDBC 或 ODBC 驅動程式版本建立存取權。如需詳細資訊,請參閱 Connect 到 Amazon Athena JDBCConnect 到 Amazon Athena ODBC

開始之前

開始之前,請先完成以下先決條件:

  • 在您的組織內,安裝 ADFS 3.0 並將其設定為您的 IdP。

  • 在用來存取 Athena 的用戶端上,安裝和設定最新可用版本的 JDBC 或 ODBC 驅動程式。此驅動程式必須支援與 SAML 2.0 相容的聯合身分存取。如需詳細資訊,請參閱 Connect 到 Amazon Athena JDBCConnect 到 Amazon Athena ODBC

架構圖

下圖說明此程序。

Athena API 的聯合存取圖表。
  1. 組織中的使用者會使用用戶端應用程式搭配 JDBC 或 ODBC 驅動程式,請求獲得組織 IdP 的身分驗證。IdP 是 ADFS 3.0。

  2. IdP 根據 Active Directory (組織的身分存放區) 對使用者進行身分驗證。

  3. IdP 會建構一個具有使用者相關資訊的 SAML 聲明,並將此聲明經由 JDBC 或 ODBC 驅動程式發送到用戶端應用程式。

  4. JDBC 或 ODBC 驅動程式會呼叫 AWS Security Token Service AssumeRoleWithSAML API 作業,並將下列參數傳遞給它:

    • SAML 供應商的 ARN

    • 要擔任的角色 ARN

    • 來自 IdP 的 SAML 聲明

    如需詳細資訊,請參閱 AWS Security Token Service API 參考資料中的 AssumeRoleWithSAML

  5. API 透過 JDBC 或 ODBC 驅動程式傳給用戶端應用程式的回應,包含臨時安全登入資料。

  6. 用戶端應用程式使用臨時安全憑證呼叫 Athena API 操作,讓您的使用者可以存取 Athena API 操作。

程序:對 Athena API 的 SAML 型聯合存取

此程序會在組織的 IdP 和您的 AWS 帳戶之間建立信任,以啟用以 SAML 為基礎的聯合身分存取 Amazon Athena API 作業。

若要啟用對 Athena API 的聯合存取:
  1. 在您的組織中,在您的 IdP 中註冊 AWS 為服務提供者 (SP)。這個程序稱為依賴方信任。如需詳細資訊,請參閱《IAM 使用者指南》中的使用依賴方信任設定您的 SAML 2.0 IdP。請執行以下步驟,做為此任務的一部分:

    1. 從這個 URL 取得範例 SAML 中繼資料文件:https://signin.aws.amazon.com/static/saml-metadata.xml

    2. 在組織的 IdP (ADFS) 中,產生一個對等的中繼資料 XML 檔案,將您的 IdP 描述為的身分識別提供者。 AWS您的中繼資料檔案必須包含發行者名稱、建立日期、到期日,以及 AWS 用來驗證組織的驗證回應 (宣告) 的金鑰。

  2. 在 IAM 主控台中,您可以建立一個 SAML 身分提供者實體。如需詳細資訊,請參閱《IAM 使用者指南》中的建立 SAML 身分提供者。執行以下操作,做為此步驟的一部分:

    1. 前往 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

    2. 上傳在本程序步驟 1 中 IdP (ADFS) 產生的 SAML 中繼資料文件。

  3. 在 IAM 主控台中為您的 IdP 建立一或多個 IAM 角色。如需詳細資訊,請參閱《IAM 使用者指南》中的為第三方身分提供者 (聯合) 建立角色。執行以下操作,做為此步驟的一部分:

    • 在該角色的許可政策中,列出允許組織的使用者在 AWS中執行的動作。

    • 在角色的信任政策中,將您在此程序步驟 2 中建立的 SAML 提供者實體設定為主體。

    這會建立組織與之間的信任關係 AWS。

  4. 在組織的 IdP (ADFS) 中,定義可將組織中的使用者或群組映射到 IAM 角色的聲明。使用者和群組對 IAM 角色的映射也稱為宣告規則。請注意,組織中不同的使用者和群組可能映射到不同的 IAM 角色。

    如需有關在 ADFS 中設定對應的資訊,請參閱部落格文章:啟用聯合以 AWS 使用 Windows 作用中目錄、ADFS 和 SAML 2.0。

  5. 安裝並設定具 SAML 2.0 支援的 JDBC 和 ODBC 驅動程式。如需詳細資訊,請參閱 Connect 到 Amazon Athena JDBCConnect 到 Amazon Athena ODBC

  6. 指定從您的應用程式到 JDBC 和 ODBC 驅動程式的連接字串。如需有關應用程式應使用之連接字串的資訊,請參閱《JDBC 驅動程式安裝和設定指南》中的「使用 Active Directory 聯合服務 (ADFS) 憑證提供者」,或《ODBC 驅動程式安裝和設定指南》中的類似主題,可透過 PDF 形式從 Connect 到 Amazon Athena JDBCConnect 到 Amazon Athena ODBC 主題中下載。

    以下是設定驅動程式連接字串的高階彙總:

    1. AwsCredentialsProviderClass configuration 中,設定 com.simba.athena.iamsupport.plugin.AdfsCredentialsProvider 以表示您想要透過 ADFS IdP 使用的 SAML 2.0 身分驗證。

    2. idp_host 提供 ADFS IdP 伺服器的主機名稱。

    3. idp_port 提供 ADFS IdP 監聽 SAML 聲明請求的連接埠號碼。

    4. UIDPWD 提供 AD 網域使用者登入資料。在 Windows 上使用驅動程式時,若未提供 UIDPWD,驅動程式會嘗試取得登入該 Windows 機器之使用者的使用者登入資料。

    5. 您可以選擇將 ssl_insecure 設定為 true。在這種情況下,驅動程式不會檢查 ADFS IdP 伺服器的 SSL 憑證真偽。如果未將 ADFS IdP 的 SSL 憑證設定為受驅動程式信任,則必須設定為 true

    6. 若要啟用 Active Directory 網域使用者或群組到一個或多個 IAM 角色的映射 (如本程式庫步驟 4 中所述),在 JDBC 或 ODBC 連接的 preferred_role 中,指定驅動程式連接中要擔任的 IAM 角色 (ARN)。指定 preferred_role 為選擇性,但如果角色不是宣告規則中列出的第一個角色,則非常有用。

    由於此程序,發生下列動作:

    1. JDBC 或 ODBC 驅動程式會呼叫 S AWS STSAssumeRoleWithAML API,並將宣告傳遞給它,如架構圖的步驟 4 所示。

    2. AWS 確保假定角色的請求來自 SAML 提供者實體中參照的 IdP。

    3. 如果要求成功, AWS STS AssumeRoleWithSAML API 作業會傳回一組臨時安全登入資料,您的用戶端應用程式會使用這些登入資料向 Athena 發出已簽署的要求。

      您的應用程式現在已具有目前使用者相關資訊,且能以程式設計的方式存取 Athena。