

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

# 啟用對 Athena API 的聯合存取
<a name="access-federation-saml"></a>

本節討論的聯合存取，可讓組織中的使用者或用戶端應用程式呼叫 Amazon Athena API 操作。在這種情況下，組織的使用者無法直接存取 Athena。反之，您可以在 Microsoft Active Directory AWS 中管理 外部的使用者登入資料。Active Directory 支援 [SAML 2.0](https://wiki.oasis-open.org/security) (安全聲明標記語言 2.0)。

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

如需 上 SAML 2.0 支援的詳細資訊 AWS，請參閱《*IAM 使用者指南*》中的[關於 SAML 2.0 聯合](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_saml.html)。

**注意**  
特定類型的身分提供者 (IdP)，即 Active Directory Federation Service (ADFS 3.0) (Windows Server 的一部分) 支援對 Athena API 的聯合存取。聯合存取與 IAM Identity Center 信任身分傳播功能不相容。透過支援 SAML 2.0 的 JDBC 或 ODBC 驅動程式版本建立存取權。如需詳細資訊，請參閱 [使用 JDBC 連接到 Amazon Athena](connect-with-jdbc.md) 及 [使用 ODBC 連接到 Amazon Athena](connect-with-odbc.md)。

**Topics**
+ [開始之前](#access-federation-before-you-begin)
+ [了解身分驗證程序](#access-federation-diagram)
+ [程序：啟用對 Athena API 的 SAML 型聯合存取](#access-federation-procedure)

## 開始之前
<a name="access-federation-before-you-begin"></a>

 開始之前，請先完成以下先決條件：
+ 在您的組織內，安裝 ADFS 3.0 並將其設定為您的 IdP。
+ 在用來存取 Athena 的用戶端上，安裝和設定最新可用版本的 JDBC 或 ODBC 驅動程式。此驅動程式必須支援與 SAML 2.0 相容的聯合身分存取。如需詳細資訊，請參閱 [使用 JDBC 連接到 Amazon Athena](connect-with-jdbc.md) 及 [使用 ODBC 連接到 Amazon Athena](connect-with-odbc.md)。

## 了解身分驗證程序
<a name="access-federation-diagram"></a>

下列圖表說明聯合存取 Athena API 的身分驗證程序。

![\[Athena API 的聯合存取圖表。\]](http://docs.aws.amazon.com/zh_tw/athena/latest/ug/images/athena-saml-based-federation.png)


1. 組織中的使用者會使用用戶端應用程式搭配 JDBC 或 ODBC 驅動程式，請求獲得組織 IdP 的身分驗證。IdP 是 ADFS 3.0。

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

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

1. JDBC 或 ODBC 驅動程式會呼叫 AWS Security Token Service [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) API 操作，並傳遞下列參數：
   + SAML 供應商的 ARN
   + 要擔任的角色 ARN
   + 來自 IdP 的 SAML 聲明

   如需詳細資訊，請參閱《AWS Security Token Service API 參考》**中的 [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)。

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

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

## 程序：啟用對 Athena API 的 SAML 型聯合存取
<a name="access-federation-procedure"></a>

此程序會在組織的 IdP 和 AWS 您的帳戶之間建立信任，以啟用對 Amazon Athena API 操作的 SAML 型聯合存取。

**若要啟用對 Athena API 的聯合存取：**

1. 在您的組織中，在您的 IdP 中註冊 AWS 為服務提供者 (SP)。這個程序稱為*依賴方信任*。如需詳細資訊，請參閱《IAM 使用者指南》**中的[使用依賴方信任設定您的 SAML 2.0 IdP](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_relying-party.html)。請執行以下步驟，做為此任務的一部分：

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

   1. 在您組織的 IdP (ADFS) 中， 會產生同等的中繼資料 XML 檔案，將 IdP 描述為身分提供者 AWS。您的中繼資料檔案必須包含發行者名稱、建立日期、過期日期，以及 AWS 用於驗證組織中身分驗證回應 （聲明） 的金鑰。

1. 在 IAM 主控台中，您可以建立一個 SAML 身分提供者實體。如需詳細資訊，請參閱《IAM 使用者指南》**中的[建立 SAML 身分提供者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html)。執行以下操作，做為此步驟的一部分：

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

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

1. 在 IAM 主控台中為您的 IdP 建立一或多個 IAM 角色。如需詳細資訊，請參閱《IAM 使用者指南》**中的[為第三方身分提供者 (聯合) 建立角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html)。執行以下操作，做為此步驟的一部分：
   + 在該角色的許可政策中，列出允許組織的使用者在 AWS中執行的動作。
   + 在角色的信任政策中，將您在此程序步驟 2 中建立的 SAML 提供者實體設定為主體。

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

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

   如需有關在 ADFS 中設定映射的資訊，請參閱部落格文章：[AWS 使用 Windows Active Directory、ADFS 和 SAML 2.0 啟用 的聯合。](https://aws.amazon.com/blogs/security/enabling-federation-to-aws-using-windows-active-directory-adfs-and-saml-2-0/)

1. 安裝並設定具 SAML 2.0 支援的 JDBC 和 ODBC 驅動程式。如需詳細資訊，請參閱 [使用 JDBC 連接到 Amazon Athena](connect-with-jdbc.md) 及 [使用 ODBC 連接到 Amazon Athena](connect-with-odbc.md)。

1. 指定從您的應用程式到 JDBC 和 ODBC 驅動程式的連接字串。如需有關應用程式應使用之連線字串的資訊，請參閱《JDBC 驅動器安裝和設定指南**》中的*「使用 Active Directory Federation Services (ADFS) 憑證提供者」*，或《ODBC 驅動器安裝和設定指南**》中的類似主題，可透過 PDF 形式從 [使用 JDBC 連接到 Amazon Athena](connect-with-jdbc.md) 和 [使用 ODBC 連接到 Amazon Athena](connect-with-odbc.md) 主題中下載。

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

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

   1. 在 `idp_host` 提供 ADFS IdP 伺服器的主機名稱。

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

   1. 在 `UID` 和 `PWD` 提供 AD 網域使用者登入資料。在 Windows 上使用驅動程式時，若未提供 `UID` 和 `PWD`，驅動程式會嘗試取得登入該 Windows 機器之使用者的使用者登入資料。

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

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

   由於此程序，發生下列動作：

   1. JDBC 或 ODBC 驅動程式會呼叫 AWS STS [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) API，並傳遞宣告，如[架構圖](#access-federation-diagram)的步驟 4 所示。

   1. AWS 會確保擔任角色的請求來自 SAML 提供者實體中參考的 IdP。

   1. 如果請求成功， AWS STS [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) API 操作會傳回一組臨時安全登入資料，您的用戶端應用程式會使用此登入資料向 Athena 提出已簽署的請求。

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