Ongoing service disruptions
For the most recent update on ongoing service disruptions affecting the AWS Middle East (UAE) Region (ME-CENTRAL-1), refer to the AWS Health Dashboard. For information on AWS Service migration, see How do I migrate my services to another region?
如何從多個 AWS 帳戶為 Session Manager 記錄設定集中 Amazon S3 儲存貯體?
我想為 AWS 帳戶設定 Session Manager 集中 Amazon Simple Storage Service (Amazon S3) 記錄 (AWS Systems Manager 的一項功能)。
解決方法
設定權限
Systems Manager Agent (SSM Agent) 使用相同的 AWS Identity and Access Management (IAM) 角色來啟用,並將日誌上傳到 Amazon S3。
您可以使用以下其中一個 IAM 角色:
若要授予權限,請使用下列政策:
- 擁有 IAM 主體的 AWS 帳戶必須使用 IAM 政策授予 Amazon S3 權限。
- S3 儲存貯體的擁有者必須使用 AWS Key Management Service (KMS) 金鑰政策或存取控制清單 (ACL) 來允許所有帳戶存取。
- 如果儲存貯體使用 AWS KMS key 加密,則必須使用 IAM 政策。
- 您必須將 IAM 政策附加到授予 SSM 代理程式權限的角色。
- 您必須使用 KMS key 政策來授予對用於加密儲存貯體之 AWS KMS key 的存取權。
- 您必須使用 AmazonSSMManagedInstanceCore AWS 受管政策來存取 Systems Manager 核心功能。
Session Manager 需要以下權限才能將日誌上傳到 S3 儲存貯體:
- s3:PutObject 和 s3:PutObjectAcl 權限用於將加密物件上傳到 S3 儲存貯體。
- 用於存取 AWS KMS key 的 kms:Decrypt 和 kms:GenerateDataKey 權限。
- aws:PrincipalOrgID: o-xxxxxxx 權限用於限制與 AWS Organizations 中,組織 ID 不相符主體的存取權。
確認與下列端點的連線:
- Amazon S3 端點:com.amazonaws.region.s3
- AWS KMS 服務端點:com.amazonaws.region.kms
- Systems Manager 端點:com.amazonaws.region.ssm
- Systems Manager Session Manager 端點:com.amazonaws.region.ssmmessages
- Amazon EC2 端點:com.amazonaws.region.ec2
建立 AWS KMS key 和金鑰政策
建立 AWS KMS key 來加密 S3 儲存貯體和 Session Manager 日誌。
您可以建立一個金鑰來同時加密 Session Manager 日誌和 AWS KMS 加密內容,或為每項功能建立不同的金鑰。
對於各個金鑰,請將下列金鑰陳述式新增至 AWS KMS 政策,以允許 Session Manager 加密日誌:
{ "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-xxxxxxx" } } }
**注意:**將 aws:PrincipalOrgID 替換為您組織的 ID,並將 Principal 替換為您 IAM 角色的 ARN。
建立 S3 儲存貯體和儲存貯體政策
建立一個 S3 儲存貯體來儲存 Session Manager 日誌。如需詳細資訊,請參閱建立一般用途儲存貯體和使用 Amazon S3 (主控台) 記錄工作階段資料。
若要允許存取日誌,請將下列資源政策新增至 S3 儲存貯體:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "s3:GetEncryptionConfiguration", "Resource": "arn:aws:s3:::customer_session_manager_logging_bucket", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-xxxxxxxxxxxxxx" } } }, { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::customer_session_manager_logging_bucket/*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-xxxxxxxxxxxxx" } } } ] }
如需日誌存取權限的詳細資訊,請參閱日誌傳遞權限。
建立 IAM 政策以存取 S3 儲存貯體和 AWS KMS key
建立 IAM 政策以授予存取 S3 儲存貯體和 AWS KMS key 的權限。
將下列範例政策附加到帳戶用於連線 S3 儲存貯體的執行個體設定檔:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PutObjectsBucket", "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Effect": "Allow", "Resource": "arn:aws:s3:::customer_session_manager_logging_bucket/*" }, { "Sid": "ListBucketAndEncryptionConfig", "Action": [ "s3:GetEncryptionConfiguration" ], "Effect": "Allow", "Resource": "arn:aws:s3:::customer_session_manager_logging_bucket" }, { "Sid": "S3KMSSessionManagerKMS", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": [ "arn:aws:kms:us-east-1:ACCOUNTId:key/YOUR-KMS-FOR-SessionManagerEncryption", "arn:aws:kms:us-east-1:ACCOUNTID:key/YOUR-KMS-FOR-S3BucketEncryption" ] } ] }
**注意:**您可以使用內嵌政策或客戶管理政策。如需詳細資訊,請參閱將 IAM 政策與 AWS KMS 結合使用。
(選用) 為日誌設定 Session Manager shell 設定檔
若要建立自訂 shell 設定檔,請先建立一個 JSON 檔案,移除其內容,並將其替換為以下值:
{ "schemaVersion": "1.0", "description": "Document to hold regional settings for Session Manager", "sessionType": "Standard_Stream", "inputs": { "s3BucketName": "customer_session_manager_logging_bucket", "s3KeyPrefix": "", "s3EncryptionEnabled": true, "cloudWatchLogGroupName": "", "cloudWatchEncryptionEnabled": false, "cloudWatchStreamingEnabled": false, "kmsKeyId": "arn:aws:kms:REGION:ACCOUNTID:key/YOUR-KMS-FOR-SessionManagerEncryption", "runAsDefaultUser": "", "idleSessionTimeout": "20", "maxSessionDuration": "", "shellProfile": {"windows": "", "linux": ""} } }
**注意:**將 customer\session\manager\logging_bucket 替換為您的儲存貯體名稱,並將 YOUR-KMS-FOR-SessionManager Encryption 替換為您為 Session Manager 指定的金鑰。
執行下列命令將檔案儲存為預設 Session Manager 文件,其名稱如 SessionManagerRunShell.json:
aws ssm update-document --name "SSM-SessionManagerRunShell" \ --content "file://SessionManagerRunShell.json" \ --document-version "\$LATEST"
確認 Session Manager 記錄組態
開啟 Amazon S3 console (Amazon S3 主控台),然後瀏覽至記錄儲存貯體。在儲存貯體設定中,確認儲存貯體加密處於作用中狀態。另外,確認 AWS KMS key ARN 與金鑰 1 相符,以確保 Session Manager 使用正確的加密金鑰。
若要確認 Session Manager 偏好設定,請完成下列步驟:
- 開啟 Session Manager console (Session Manager 主控台)。
- 選取您的 AWS 區域。
- 確認您已開啟加密。
- 輸入金鑰 1 的 ARN。
- 確認您是否設定了正確的 S3 儲存貯體。
確認儲存貯體中是否正在產生日誌
若要產生日誌,請使用另一個帳戶中的 Session Manager。
請完成下列步驟:
- 使用 Session Manager 連線到執行個體。
- 選取您的區域。
- 確認工作階段是否連線並顯示「此工作階段使用 AWS KMS 加密。」
- 輸入測試項目以產生日誌,然後結束工作階段。
**注意:**工作階段結束後,日誌至少需要 30 秒才會顯示。如需詳細資訊,請參閱使用伺服器存取記錄的記錄請求。
相關資訊
- 語言
- 中文 (繁體)

相關內容
- 已提問 2 年前