

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

# 任務的私有登錄檔身分驗證
<a name="private-registry"></a>

使用 之任務的私有登錄檔身分驗證 AWS Secrets Manager 可讓您安全地存放登入資料，然後在任務定義中參考登入資料。這可讓您參考存在於 外部私有登錄檔中的容器映像 AWS ，這些登錄檔需要在您的任務定義中進行身分驗證。Amazon EC2 執行個體和 Fargate 上託管的任務支援此功能。

**重要**  
如果您的任務定義參考存放在 Amazon ECR 中的映像，則此主題不適用。如需詳細資訊，請參閱 *Amazon Elastic Container Registry User Guide* 中的 [Using Amazon ECR Images with Amazon ECS](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_on_ECS.html)。

對於在 Amazon EC2 執行個體上託管的任務，此功能需要版本 `1.19.0`或更新版本的容器代理程式。不過，我們建議您使用最新版的容器代理。如需有關如何檢查代理程式版本和更新至最新版本的資訊，請參閱[《Amazon Elastic Container Service 開發人員指南》中的更新 Amazon ECS 容器代理](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html)程式。 **

對於在 Fargate 上託管的任務，此功能需要平台版本 `1.2.0` 或更新版本。如需詳細資訊，請參閱《*Amazon Elastic Container Service 開發人員指南*》中的 [AWS Fargate Linux 平台版本](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform-linux-fargate.html)。

在您的容器定義內，使用您所建立的秘密的詳細資訊來指定 `repositoryCredentials` 物件。您參考的秘密可以來自與使用它的任務不同的 AWS 區域 或不同的 帳戶。

**注意**  
使用 AWS Batch API AWS CLI或 AWS SDK 時，如果秘密與您啟動 AWS 區域 的任務位於相同的 中，您可以使用秘密的完整 ARN 或名稱。如果此秘密已存在於不同帳戶中，則必須指定秘密的完整 ARN。使用 時 AWS 管理主控台，一律必須指定秘密的完整 ARN。

以下是任務定義的程式碼片段，顯示所需的參數：

```
"containerProperties": [
  {
    "image": "private-repo/private-image",
    "repositoryCredentials": {
      "credentialsParameter": "arn:aws:secretsmanager:region:123456789012:secret:secret_name"
    }
  }
]
```

# 私有登錄檔身分驗證所需的 IAM 許可
<a name="private-auth-iam"></a>

需要執行角色才能使用此功能。這可讓容器代理程式提取容器映像。如需詳細資訊，請參閱[AWS Batch IAM 執行角色](execution-IAM-role.md)。

若要提供對您建立之秘密的存取權，請將下列許可新增為執行角色的內嵌政策。如需詳細資訊，請參閱[新增和移除 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。
+ `secretsmanager:GetSecretValue`
+ `kms:Decrypt` - 只有在您的金鑰使用自訂 KMS 金鑰而非預設金鑰時，才需要此項目。您的自訂金鑰的 Amazon Resource Name (ARN) 必須新增為資源。

下列為新增許可的內嵌政策範例。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "secretsmanager:GetSecretValue"
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-1:123456789012:secret:secret_name",
                "arn:aws:kms:us-east-1:123456789012:key/key_id"
            ]
        }
    ]
}
```

------

# 教學課程：建立私有登錄檔身分驗證的秘密
<a name="private-auth-enable"></a>

完成下列步驟，以使用 為您的私有登錄檔登入資料建立秘密 AWS Secrets Manager。

**建立基本秘密**

1. 在 https：//[https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) 開啟 AWS Secrets Manager 主控台。

1. 選擇**儲存新機密**。

1. 針對 **Select secret type (選取秘密類型)**，選擇 **Other type of secrets (其他秘密類型)**。

1. 選取 **Plaintext (純文字)**，然後使用下列格式輸入您的私有登錄登入資料：

   ```
   {
     "username" : "privateRegistryUsername",
     "password" : "privateRegistryPassword"
   }
   ```

1. 選擇**下一步**。

1. 針對 **Secret name** (秘密名稱)，請輸入選用的路徑與名稱，例如 **production/MyAwesomeAppSecret** 或 **development/TestSecret**，然後選擇 **Next** (下一步)。您也可以選擇性新增描述，協助您日後回憶起此秘密的用途。

   秘密名稱必須是 ASCII 字母、數字或下列任一字元：`/_+=.@-`。

1. (選用) 在此階段，您可以為秘密設定輪換。針對此程序，維持 **Disable automatic rotation (停用自動輪換)**，然後選擇 **Next (下一步)**。

   如需如何在新的或現有的秘密上設定輪換的指示，請參閱[輪換您的 AWS Secrets Manager 秘密](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html)。

1. 檢閱您的設定，然後選擇 **Store secret** (存放秘密) 以儲存您在 Secrets Manager 中輸入作為新秘密的所有內容。

註冊任務定義並在**私有登錄**檔下，開啟**私有登錄檔身分驗證**。然後，在 **Secrets Manager ARN 或名稱**中，輸入密碼的 Amazon Resource Name (ARN)。如需詳細資訊，請參閱[私有登錄檔身分驗證所需的 IAM 許可](private-auth-iam.md)。