

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

# AD FS 宣告規則和 SAML 設定
<a name="adfs-claim-rule-saml"></a>

AWS Managed Services (AMS) 的 ActiveDirectory Federation Services (AD FS) 宣告規則和 SAML 設定 AWS Managed Services 

如需如何安裝和設定 AD FS step-by-step說明，請參閱[使用 Windows Active Directory、ADFS 和 SAML 2.0 啟用與 AWS 的聯合。](https://aws.amazon.com/blogs/security/enabling-federation-to-aws-using-windows-active-directory-adfs-and-saml-2-0/)

## ADFS 宣告規則組態
<a name="cust-have-adfs"></a>

如果您已經有 ADFS 實作，請設定以下內容：
+ 依賴方信任
+ 宣告規則 

依賴方信任和宣告規則步驟是從[使用 Windows Active Directory、AD FS 和 SAML 2.0 部落格啟用聯合到 AWS](https://aws.amazon.com/blogs/security/enabling-federation-to-aws-using-windows-active-directory-adfs-and-saml-2-0/)
+ 宣告規則：
  + **Nameid**：每個部落格文章的組態
  + **RoleSessionName**：如下所示設定
    + **宣告規則名稱**： **RoleSessionName**
    + **屬性存放區**： **Active Directory**
    + **LDAP 屬性**： **SAM-Account-Name**
    + **傳出宣告類型**： **https://aws.amazon.com/SAML/Attributes/RoleSessionName**
    + **取得 AD 群組**：每個[部落格文章](https://aws.amazon.com/blogs/security/enabling-federation-to-aws-using-windows-active-directory-adfs-and-saml-2-0/)的組態
    + **角色宣告**：設定 ，如下所示

      ```
      c:[Type == "http://temp/variable", Value =~ "(?i)^AWS-([^d]{12})-"]
      ```

      ```
      => issue(Type = "https://aws.amazon.com/SAML/Attributes/Role", Value = RegExReplace(c.Value, "AWS-([^d]{12})-", "arn:aws:iam::$1:saml-provider/customer-readonly-saml,arn:aws:iam::$1:role/"));    
      ```

## Web 主控台
<a name="adfs-web-console"></a>

您可以使用以下連結，將 {{【ADFS-FQDN】}} 取代為 ADFS 實作的 FQDN，來存取 AWS Web 主控台。

https：//{{【ADFS-FQDN】}}/adfs/ls/IdpInitiatedSignOn.aspx

您的 IT 部門可以透過群組政策，將上述連結部署至使用者人口。

## 使用 SAML 存取 API 和 CLI
<a name="api-cli-web-access"></a>

如何使用 SAML 設定 API 和 CLI 存取。

python 套件來源於以下部落格文章：
+ NTLM：[如何使用 SAML 2.0 和 AD FS 實作聯合 API 和 CLI 存取](https://aws.amazon.com/blogs/security/how-to-implement-federated-api-and-cli-access-using-saml-2-0-and-ad-fs/)
+ 表單：[如何使用 SAML 2.0 實作聯合 API/CLI 存取的一般解決方案](https://aws.amazon.com/blogs/security/how-to-implement-a-general-solution-for-federated-apicli-access-using-saml-2-0/)
+ PowerShell：[如何使用 Windows PowerShell 設定對 AWS 的聯合 API 存取](https://aws.amazon.com/blogs/security/how-to-set-up-federated-api-access-to-aws-by-using-windows-powershell/)

### 指令碼組態
<a name="script-config"></a>

1. 使用記事本\+\+，將預設區域變更為正確的區域

1. 使用 Notepad\+\+，停用測試和開發環境的 SSL 驗證

1. 使用記事本\+\+，設定 idpentryurl

   `https://[ADFS-FDQN]/adfs/ls/IdpInitiatedSignOn.aspx?loginToRp=urn:amazon:webservices`

### Windows 組態
<a name="win-rule-claim-config"></a>

以下說明適用於 python 套件。產生的登入資料有效期為 1 小時。

1. [下載並安裝 python (2.7.11)](https://www.python.org/downloads/)

1. [下載並安裝 AWS CLI 工具](https://aws.amazon.com/cli/)

1. 安裝 AMS CLI：

   1. 下載雲端服務交付管理員 (CSDM) 提供的 AMS 可分發 zip 檔案並解壓縮。

      有數個目錄和檔案可供使用。

   1. 根據您的作業系統開啟 **Managed Cloud Distributables -> CLI -> Windows** 或 **Managed Cloud Distributables -> CLI -> Linux / MacOS** 目錄，以及：

      對於 **Windows**，請執行適當的安裝程式 （此方法僅適用於 Windows 32 或 64 位元系統）：
      + 32 位元：ManagedCloudAPI\_x86.msi
      + 64 位元：ManagedCloudAPI\_x64.msi

      對於 **Mac/Linux**，執行名為 的檔案：**MC\_CLI.sh**。您可以執行此命令來執行此操作：`sh MC_CLI.sh`。請注意，**amscm** 和 **amsskms** 目錄及其內容必須與 **MC\_CLI.sh** 檔案位於相同的目錄中。

   1. 如果您的公司登入資料是透過 AWS (AMS 預設組態） 聯合使用，您必須安裝登入資料管理工具，以存取您的聯合服務。例如，您可以使用此 AWS 安全部落格 [ 如何使用 SAML 2.0 和 AD FS 實作聯合 API 和 CLI 存取](https://blogs.aws.amazon.com/security/post/Tx1LDN0UBGJJ26Q/How-to-Implement-Federated-API-and-CLI-Access-Using-SAML-2-0-and-AD-FS)，以協助設定憑證管理工具。

   1. 安裝之後，請執行 `aws amscm help`和 `aws amsskms help` 以查看命令和選項。

1. 下載所需的 SAML 指令碼

   下載至 c：\\aws\\scripts

1. [下載 PIP](https://bootstrap.pypa.io/get-pip.py)

   下載至 c：\\aws\\downloads

1. 使用 PowerShell 安裝 PIP

   <pythondir>。\\python.exe c：\\aws\\downloads\\get-pip.py

1. 使用 PowerShell 安裝 boto 模組

   <pythondir\\scripts>pip 安裝 boto

1. 使用 PowerShell 安裝請求模組

   <pythondir\\scripts>pip 安裝請求

1. 使用 PowerShell 安裝請求安全模組

   <pythondir\\scripts>pip 安裝請求【安全性】

1. 使用 PowerShell 安裝 beautifulsoup 模組

   <pythondir\\scripts>pip 安裝 beautifulsoup4

1. 使用 PowerShell，在使用者設定檔中建立名為 .aws 的資料夾 (%userprofile%\\.aws)

   mkdir .aws

1. 使用 PowerShell，在 .aws 資料夾中建立登入資料檔案

   新項目登入資料 - 類型檔案 -force

   登入資料檔案不得有副檔名

   檔案名稱必須全部小寫，且具有名稱登入資料

1. 使用記事本開啟登入資料檔案並貼上下列資料，指定正確的區域

   ```
   [default]
   output = json
   region = us-east-1
   aws_access_key_id = 
   aws_secret_access_key =
   ```

1. 使用 PowerShell、SAML 指令碼和登入

   <pythondir>。\\python.exe c：\\aws\\scripts\\samlapi.py

   使用者名稱：【USERNAME】@upn

   選擇您要擔任的角色

### Linux 組態
<a name="linux-rule-claim-config"></a>

產生的登入資料有效期為 1 小時。

1. 使用 WinSCP 傳輸 SAML 指令碼

1. 使用 WinSCP 傳輸根 CA 憑證 （忽略用於測試和開發）

1. 將 ROOT CA 新增至信任的根憑證 （忽略用於測試和開發）

   $ openssl x509 -inform der -in 【certname】.cer -out certificate.pem （忽略用於測試和開發）

   將 certificate.pem 的內容新增至 /etc/ssl/certs/ca-bundle.crt 檔案結尾 （忽略用於測試開發）

1. 在 home/ec2-user 5 中建立 .aws 資料夾

   ```
   [default]
   output = json
   region = us-east-1
   aws_access_key_id = 
   aws_secret_access_key =
   ```

1. 使用 WinSCP，將登入資料檔案傳輸至 .aws 資料夾

1. 安裝 boto 模組

   $ sudo pip 安裝 boto

1. 安裝請求模組

   $ sudo pip 安裝請求

1. 安裝 beautifulsoup 模組

   $ sudo pip 安裝 beautifulsoup4

1. 將指令碼複製到 home/ec2-user

   設定必要的許可

   執行指令碼：https：//samlapi.py