

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

# 在 AWS PCS 中使用叢集秘密
<a name="working-with_clusters_secrets"></a>

 在建立叢集時， AWS PCS 會建立叢集秘密，這是連線到叢集上的任務排程器所需的秘密。您也可以建立 AWS PCS 運算節點群組，其會定義要啟動的執行個體集，以回應擴展事件。 AWS PCS 會使用叢集秘密來設定這些運算節點群組啟動的執行個體，讓他們可以連線至任務排程器。在某些情況下，您可能想要手動設定 Slurm 用戶端。範例包括建置持久性登入節點，或設定具有任務管理功能的工作流程管理員。

 AWS PCS 會將叢集秘密儲存為 `pcs!`中字首為 的[受管秘密](https://docs.aws.amazon.com/secretsmanager/latest/userguide/integrating_pcs.html) AWS Secrets Manager。秘密的成本包含在使用 AWS PCS 的費用中。您可以透過 輪換叢集秘密 AWS Secrets Manager ，以維持安全合規並修復潛在的安全危害。

**Topics**
+ [使用 AWS Secrets Manager 尋找叢集秘密](working-with_clusters_secrets_find_secrets-manager.md)
+ [使用 AWS PCS 尋找叢集秘密](working-with_clusters_secrets_find_pcs.md)
+ [取得 Slurm 叢集秘密](working-with_clusters_secrets_get.md)
+ [在 AWS PCS 中輪換叢集秘密](cluster-secret-rotation.md)

# 使用 AWS Secrets Manager 尋找叢集秘密
<a name="working-with_clusters_secrets_find_secrets-manager"></a>

------
#### [ AWS 管理主控台 ]

1. 導覽至 [Secrets Manager 主控台](https://console.aws.amazon.com/secretsmanager)。

1. 選擇**秘密**，然後搜尋`pcs!`字首。

**注意**  
 AWS PCS 叢集秘密的名稱格式為 ，`pcs!slurm-secret-cluster-id`其中 `cluster-id`是 AWS PCS 叢集 ID。

------
#### [ AWS CLI ]

每個 AWS PCS 叢集秘密也會標記 `aws:pcs:cluster-id`。您可以使用以下命令取得叢集的秘密 ID。在執行 命令之前進行這些替換：
+ `region` 將 取代為 AWS 區域 以在 中建立叢集，例如 `us-east-1`。
+ `cluster-id` 將 取代為 AWS PCS 叢集的 ID，以尋找其叢集秘密。

```
aws secretsmanager list-secrets \
    --region region  \
    --filters Key=tag-key,Values=aws:pcs:cluster-id \
            Key=tag-value,Values=cluster-id
```

------

# 使用 AWS PCS 尋找叢集秘密
<a name="working-with_clusters_secrets_find_pcs"></a>

您可以使用 AWS CLI 尋找 AWS PCS 叢集秘密的 ARN。輸入以下命令，進行下列取代：
+ `region` 將 取代為 AWS 區域 以在 中建立叢集，例如 `us-east-1`。
+ `my-cluster` 以叢集的名稱或識別符取代 。

```
aws pcs get-cluster --region region --cluster-identifier my-cluster
```

下列範例輸出來自 `get-cluster`命令。您可以使用 `secretArn`和 `secretVersion`一起取得秘密。

```
{
    "cluster": {
        "name": "get-started",
        "id": "pcs_123456abcd",
        "arn": "arn:aws:pcs:us-east-1:111122223333:cluster/pcs_123456abcd",
        "status": "ACTIVE",
        "createdAt": "2024-12-17T21:03:52+00:00",
        "modifiedAt": "2024-12-17T21:03:52+00:00",
        "scheduler": {
            "type": "SLURM",
            "version": "25.05"
        },
        "size": "SMALL",
        "slurmConfiguration": {
            "authKey": {
                "secretArn": "arn:aws:secretsmanager:us-east-1:111122223333:secret:pcs!slurm-secret-pcs_123456abcd-a12ABC",
                "secretVersion": "ef232370-d3e7-434c-9a87-ec35c1987f75"
            }
        },
        "networking": {
            "subnetIds": [
                "subnet-0123456789abcdef0"
            ],
            "securityGroupIds": [
                "sg-0123456789abcdef0"
            ]
        },
        "endpoints": [
            {
                "type": "SLURMCTLD",
                "privateIpAddress": "10.3.149.220",
                "port": "6817"
            }
        ]
    }
}
```

# 取得 Slurm 叢集秘密
<a name="working-with_clusters_secrets_get"></a>

您可以使用 Secrets Manager 取得 Slurm 叢集秘密的目前 base64 編碼版本。下列範例使用 AWS CLI。在執行 命令之前，請先進行下列取代。
+ `region` 將 取代為 AWS 區域 以在 中建立叢集，例如 `us-east-1`。
+ `secretArn` 從 AWS PCS 叢集`secret-arn`將 取代為 。

```
aws secretsmanager get-secret-value \
    --region region \
    --secret-id 'secret-arn' \
    --version-stage AWSCURRENT \
    --query 'SecretString' \
    --output text
```

如需如何使用 Slurm 叢集秘密的資訊，請參閱 [使用獨立執行個體做為 AWS PCS 登入節點](working-with_login-nodes_standalone.md)。

**許可**  
您可以使用 IAM 主體來取得 Slurm 叢集秘密。IAM 主體必須具有讀取秘密的許可。如需詳細資訊，請參閱*AWS Identity and Access Management 《 使用者指南*》中的[角色術語和概念](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html)。

下列範例 IAM 政策允許存取範例叢集秘密。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowSecretValueRetrievalAndVersionListing",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue",
                "secretsmanager:ListSecretVersionIds"
            ],
            "Resource": "arn:aws:secretsmanager:us-east-1:012345678901:secret:pcs!slurm-secret-s3431v9rx2-FN7tJF"
        }
    ]
}
```

# 在 AWS PCS 中輪換叢集秘密
<a name="cluster-secret-rotation"></a>

使用 AWS Secrets Manager 受管輪換在 AWS PCS 中輪換叢集秘密。定期秘密輪換是維護 HPC 環境中強式安全狀態的安全最佳實務。此功能可讓您符合產業合規標準，包括 HIPAA 和 FedRAMP，這需要定期輪換登入資料。

叢集秘密提供雙重用途：驗證加入叢集的運算節點，以及做為 Slurm REST API 身分驗證的 JWT 金鑰。輪換時，兩個層面都會同時受到影響。

## 叢集秘密輪換的運作方式
<a name="cluster-secret-rotation-overview"></a>

手動準備以在秘密輪換期間維持叢集穩定性：

1. **準備** – 將所有運算節點群組擴展到 0 容量，並確保沒有任務正在執行

1. **輪換** – 透過 Secrets Manager 主控台或 API 啟動輪換

1. **監控** – 透過 CloudTrail 事件追蹤進度

1. **復原** – 將運算節點群組擴展回所需的容量

在輪換期間，您的叢集會保持 `ACTIVE` 狀態，且計費會繼續正常。程序通常需要幾分鐘的時間。

## 要求與限制
<a name="cluster-secret-rotation-requirements"></a>

在輪換叢集秘密之前，請先完成下列要求：
+ 叢集必須處於 `ACTIVE`或 `UPDATE_FAILED` 狀態
+ IAM 角色必須具有 `secretsmanager:RotateSecret` 許可
+ 所有運算節點群組都必須擴展至 0 容量
+ 在輪換之前停止所有任務

限制:
+ 每次輪換所需的手動準備
+ 現有的 JWT 字符無效，需要重新發行
+ BYO 登入節點在輪換後需要手動秘密更新

**Topics**
+ [叢集秘密輪換的運作方式](#cluster-secret-rotation-overview)
+ [要求與限制](#cluster-secret-rotation-requirements)
+ [在 AWS PCS 中輪換叢集秘密](cluster-secret-rotation-procedure.md)
+ [AWS PCS 中叢集秘密輪換的常見問題](cluster-secret-rotation-faq.md)
+ [對 AWS PCS 中的叢集秘密輪換進行故障診斷](cluster-secret-rotation-troubleshooting.md)

# 在 AWS PCS 中輪換叢集秘密
<a name="cluster-secret-rotation-procedure"></a>

輪換您的叢集秘密以符合安全要求，並解決潛在的入侵。此程序需要讓您的叢集進入維護模式。

## 先決條件
<a name="cluster-secret-rotation-procedure-prerequisites"></a>
+ 具有 `secretsmanager:RotateSecret` 許可的 IAM 角色
+ 叢集處於 `ACTIVE`或 `UPDATE_FAILED` 狀態

## 程序
<a name="cluster-secret-rotation-procedure-steps"></a>

1. 通知叢集使用者即將到來的維護時段。

1. 透過將所有運算節點群組擴展到 0 容量，將叢集置於維護模式。

   1. 使用 UpdateComputeNodeGroup API，將所有運算節點群組的 minInstanceCount 和 maxInstanceCount 設定為 0。

   1. 等到所有節點停止。

   1. 選用：在您終止容量以進行正常任務處理之前，使用 Slurm 命令耗盡排程器佇列。

1. 透過 Secrets Manager 啟動輪換。
   + **主控台方法**：

     1. 導覽至 Secrets Manager，選取叢集秘密，然後選擇**輪換秘密**。
   + **API 方法**：

     1. 使用 Secrets Manager `rotate-secret` API。

1. 監控輪換進度。

   1. 透過 CloudTrail 事件追蹤進度。

   1. `lastRotatedDate` 檢查 Secrets Manager 主控台或 `secretsmanager:describeSecret` API。

   1. 等待 `RotationSucceeded`或 `RotationFailed` CloudTrail 事件。

1. 輪換成功後，請還原叢集容量。

   1. 使用 UpdateComputeNodeGroup API 將節點群組重設為所需的最小/最大容量。

   1. 對於 AWS PCS 受管登入節點：不需要其他動作。

   1. 對於 BYO 登入節點：

      1. 連線至登入節點。

      1. `/etc/slurm/slurm.key` 使用 Secrets Manager 的新秘密進行更新。

      1. 重新啟動 Slurm Auth 和 Cred Kiosk 協助程式 （已封裝）。

# AWS PCS 中叢集秘密輪換的常見問題
<a name="cluster-secret-rotation-faq"></a>

尋找 AWS PCS 中叢集秘密輪換的常見問題解答。

**什麼是叢集秘密？**  
叢集秘密是一種安全登入資料，可啟用 Slurm 控制器和 AWS PCS 運算節點之間的安全通訊。它也可以做為 Slurm REST API 身分驗證的 JSON Web Token (JWT) 金鑰。

**叢集秘密和 JWT 金鑰之間的差異是什麼？**  
在 AWS PCS 中，叢集秘密和 JWT 金鑰是提供不同用途的相同資源。叢集秘密會驗證 Slurm 內部通訊，而 JWT 金鑰會簽署字符以進行 REST API 身分驗證。輪換時，兩個層面都會同時受到影響。

**輪換需要多長時間？**  
輪換程序通常需要幾分鐘的時間。您的叢集會保持 ACTIVE 狀態，並在輪換期間繼續正常計費。

**我可以排程自動輪換嗎？**  
您可以在 Secrets Manager 中啟用排程輪換。不過，初始版本需要在每次輪換之前手動準備 （將節點群組擴展至 0)。

**我現有的 JWT 權杖在輪換後仍可運作嗎？**  
否，現有的 JWT 權杖在輪換後會變成無效。為 REST API 用戶端發行新權杖。

**哪裡可以找到我的叢集秘密？**  
您可以在 Secrets Manager 主控台或透過 AWS PCS 主控台找到叢集秘密。如需詳細說明，請參閱 [使用 AWS Secrets Manager 尋找叢集秘密](working-with_clusters_secrets_find_secrets-manager.md)和 [使用 AWS PCS 尋找叢集秘密](working-with_clusters_secrets_find_pcs.md)。

**為什麼輪換需要將節點群組擴展至 0？**  
輪換不需要執行中的執行個體，以確保秘密更新程序期間的叢集穩定性。這可防止舊秘密和新秘密之間的身分驗證衝突。

**此功能支援哪些合規要求？**  
此功能可讓 AWS PCS 符合產業合規標準，包括 HIPAA 和 FedRAMP，其要求定期輪換登入資料，作為其安全控制的一部分。

# 對 AWS PCS 中的叢集秘密輪換進行故障診斷
<a name="cluster-secret-rotation-troubleshooting"></a>

如果環境未正確準備，叢集秘密輪換會失敗。最常見的原因是叢集中的作用中執行個體。若要防止失敗：

1. 將所有節點群組設定為 0 容量。

1. 等待節點停止。

1. 確認您的叢集未處於這些狀態：`CREATE_FAILED`、`DELETE_FAILED`、`SUSPENDING`、 `RESUMING`或 `SUSPENDED`。

如果輪換失敗：
+ 隨即出現 RotationFailed CloudTrail 事件
+ 叢集秘密保持不變
+ 如需詳細資訊，請檢查 CloudTrail 中的 RotationFailed 事件
+ 完成所有準備步驟以成功輪換