在 Amazon 中使用 Secrets Manager 秘密指定敏感資料 ECS - Amazon Elastic Container Service

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

在 Amazon 中使用 Secrets Manager 秘密指定敏感資料 ECS

Amazon ECS可讓您將敏感資料存放在 AWS Secrets Manager 秘密中,然後在容器定義中參考,以將敏感資料注入容器。如需詳細資訊,請參閱將敏感資料傳遞至 Amazon ECS容器

了解如何建立 Secrets Manager 秘密、在 Amazon ECS任務定義中參考秘密,然後在顯示秘密內容的容器內查詢環境變數,以確認它是否有效。

必要條件

本教學課程假設已完成下列先決條件:

  • 已完成「設定 以使用 Amazon ECS」中的步驟。

  • 您的使用者具有建立 Secrets Manager 和 Amazon ECS 資源所需的IAM許可。

步驟 1:建立 Secrets Manager 機密

您可以使用 Secrets Manager 主控台為您的敏感資料建立秘密。在本教學課程中,我們將建立基本秘密,以供存放容器中稍後參考的使用者名稱和密碼。如需詳細資訊,請參閱AWS Secrets Manager 《 使用者指南》中的建立 AWS Secrets Manager 秘密

要儲存在此秘密中的鍵/值對是教學課程結尾處容器中的環境變量值。

儲存秘密ARN以在任務執行IAM政策和後續步驟的任務定義中參考。

步驟 2:將秘密許可新增至任務執行角色

若要ECS讓 Amazon 從 Secrets Manager 秘密中擷取敏感資料,您必須擁有任務執行角色的秘密許可。如需詳細資訊,請參閱Secrets Manager 或 Systems Manager 許可

步驟 3:建立任務定義

您可以使用 Amazon ECS主控台來建立參考 Secrets Manager 秘密的任務定義。

建立一個指定秘密的任務定義

使用 IAM 主控台,以所需的許可更新您的任務執行角色。

  1. https://console.aws.amazon.com/ecs/v2 開啟主控台。

  2. 在導覽窗格中,選擇 Task Definitions (任務定義)。

  3. 選擇建立新的任務定義使用 建立新的任務定義JSON

  4. 在JSON編輯器方塊中,輸入下列任務定義JSON文字,確保您指定您在步驟 1 中建立ARN的 Secrets Manager 秘密,以及您在步驟 2 中更新的任務執行角色。選擇 Save (儲存)。

  5. { "executionRoleArn": "arn:aws:iam::aws_account_id:role/ecsTaskExecutionRole", "containerDefinitions": [ { "entryPoint": [ "sh", "-c" ], "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ], "command": [ "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' > /usr/local/apache2/htdocs/index.html && httpd-foreground\"" ], "cpu": 10, "secrets": [ { "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:username_value", "name": "username_value" } ], "memory": 300, "image": "httpd:2.4", "essential": true, "name": "ecs-secrets-container" } ], "family": "ecs-secrets-tutorial" }
  6. 選擇 Create (建立)。

步驟 4:建立叢集

您可以使用 Amazon ECS主控台建立包含容器執行個體的叢集,以執行任務。如果您的現有叢集有至少一個向其註冊的容器執行個體,並有可用資源可執行為此教學課程建立的一個任務定義執行個體,您可以跳到下一個步驟。

在本教學課程中,我們將使用 Amazon ECS最佳化的 Amazon Linux 2 建立具有一個t2.micro容器執行個體的叢集AMI。

如需如何為EC2啟動類型建立叢集的詳細資訊,請參閱 為 Amazon EC2啟動類型建立 Amazon ECS叢集

步驟 5:執行任務

您可以使用 Amazon ECS主控台,使用您建立的任務定義來執行任務。在本教學課程中,我們將會執行使用 EC2 啟動類型的任務,並使用我們在前一個步驟中建立的叢集。

如需有關如何執行任務的資訊,請參閱 將應用程式作為 Amazon ECS任務執行

步驟 6:驗證

您可以使用下列步驟,驗證是否已成功完成所有步驟,以及是否已在您的容器中正確建立環境變數。

驗證是否已建立環境變數
  1. 尋找容器執行個體的公有 IP 或DNS地址。

    1. https://console.aws.amazon.com/ecs/v2 開啟主控台。

    2. 在導覽窗格中,選擇叢集,然後選擇您建立的叢集。

    3. 選擇基礎設施,然後選擇容器執行個體。

    4. 記錄執行個體的公有 IP公DNS有 IP。

  2. 如果您使用的是 macOS 或 Linux 電腦,請使用下列命令連線到您的執行個體,並替換為您私有金鑰的路徑及執行個體的公有地址:

    $ ssh -i /path/to/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com

    如需使用 Windows 電腦的詳細資訊,請參閱《Amazon EC2使用者指南》中的使用 Pu 連線至 Linux 執行個體TTY

    重要

    如需連線到執行個體時的任何問題詳細資訊,請參閱《Amazon EC2使用者指南》中的連線至執行個體的故障診斷

  3. 列出在執行個體上執行的容器。請記下 ecs-secrets-tutorial 容器的容器 ID。

    docker ps
  4. 使用上一個步驟輸出中的容器 ID,連接到 ecs-secrets-tutorial 容器。

    docker exec -it container_ID /bin/bash
  5. 使用 echo 命令來列印環境變數的值。

    echo $username_value

    如果教學課程成功,您應該會看到以下輸出:

    password_value
    注意

    或者,您可以使用 env (或 printenv) 命令列出您容器中的所有環境變數。

步驟 7:清除

完成此教學課程時,建議您清除相關聯的資源,以免未使用的資源產生費用。

清除資源
  1. https://console.aws.amazon.com/ecs/v2 開啟主控台。

  2. 在導覽窗格中,選擇叢集

  3. 叢集頁面上,選擇叢集。

  4. 選擇 Delete Cluster (刪除叢集)

  5. 在確認方塊中,輸入 Delete cluster name,然後選擇 Delete

  6. 開啟位於 IAM 的 https://console.aws.amazon.com/iam/ 主控台。

  7. 在導覽窗格中,選擇角色

  8. 搜尋 ecsTaskExecutionRole 的角色清單並加以選取。

  9. 選擇 Permissions (許可),然後選擇 ECSSecretsTutorial 旁邊的 X。選擇移除

  10. 在 開啟 Secrets Manager 主控台https://console.aws.amazon.com/secretsmanager/

  11. 選取您所建立的 username_value 秘密,然後選擇 Actions (動作)Delete secret (刪除秘密)