適用於 Session Manager 的範例 IAM 政策
使用本節中的範例可協助您建立 AWS Identity and Access Management (IAM) 政策,此政策可提供最常需要的 Session Manager 存取許可。
Session Manager的最終使用者政策快速入門
使用以下範例來替 Session Manager 建立 IAM 最終使用者政策。
您可以建立政策,來讓使用者只能從 Session Manager 主控台與 AWS Command Line Interface (AWS CLI)、從 Amazon Elastic Compute Cloud (Amazon EC2) 主控台,或是從以上三者啟動工作階段。
這些政策提供最終使用者對特定受管節點啟動工作階段的能力,也能夠結束自己的工作階段。請參閱Session Manager 的其他 IAM 政策範例取得有關您想在政策進行自訂的範例
在以下範例政策中,將每個範例資源預留位置
取代為您自己的資訊。
從以下標籤進行選擇,來針對您要提供的工作階段存取範圍檢視範例政策。
- 工作階段管理員 and Fleet Manager
-
使用此範例政策,讓使用者只能從 Session Manager 與 Fleet Manager 主控台啟動和繼續工作階段。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:StartSession"
],
"Resource": [
"arn:aws:ec2:region
:account-id
:instance/instance-id
",
"arn:aws:ssm:region
:account-id
:document/SSM-SessionManagerRunShell"
]
},
{
"Effect": "Allow",
"Action": [
"ssm:DescribeSessions",
"ssm:GetConnectionStatus",
"ssm:DescribeInstanceProperties",
"ec2:DescribeInstances"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ssm:TerminateSession",
"ssm:ResumeSession"
],
"Resource": [
"arn:aws:ssm:*:*:session/${aws:userid}-*"
]
},
{
"Effect": "Allow",
"Action": [
"kms:GenerateDataKey"
],
"Resource": "key-name
"
}
]
}
- Amazon EC2
-
使用此範例政策,來讓使用者只能從 Amazon EC2 主控台啟動和繼續工作階段。這個政策不提供從 Session Manager 主控台和 AWS CLI 啟動工作階段所需要的所有許可。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:StartSession",
"ssm:SendCommand"
],
"Resource": [
"arn:aws:ec2:region
:account-id
:instance/instance-id
",
"arn:aws:ssm:region
:account-id
:document/SSM-SessionManagerRunShell"
]
},
{
"Effect": "Allow",
"Action": [
"ssm:GetConnectionStatus",
"ssm:DescribeInstanceInformation"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ssm:TerminateSession",
"ssm:ResumeSession"
],
"Resource": [
"arn:aws:ssm:*:*:session/${aws:userid}-*"
]
}
]
}
- AWS CLI
-
使用此範例政策,讓使用者可以從 AWS CLI 啟動和繼續工作階段。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:StartSession",
"ssm:SendCommand"
],
"Resource": [
"arn:aws:ec2:region
:account-id
:instance/instance-id
",
"arn:aws:ssm:region
:account-id
:document/SSM-SessionManagerRunShell"
]
},
{
"Effect": "Allow",
"Action": [
"ssm:TerminateSession",
"ssm:ResumeSession"
],
"Resource": [
"arn:aws:ssm:*:*:session/${aws:userid}-*"
]
},
{
"Effect": "Allow",
"Action": [
"kms:GenerateDataKey"
],
"Resource": "key-name
"
}
]
}
1 SSM-SessionManagerRunShell
是 SSM 文件的預設名稱,Session Manager 會建立該 SSM 文件來存放您的工作階段組態偏好設定。您可以建立自訂工作階段文件,並改在這個政策中進行指定。您也可以為使用 SSH 開始工作階段的使用者指定 AWS 提供的文件 AWS-StartSSHSession
。如需有關使用 SSH 支援工作階段所需的設定步驟的資訊,請參閱 (選用) 透過 Session Manager 允許和控制 SSH 連線的許可。
2 kms:GenerateDataKey
許可讓您能夠建立加密工作階段資料所用的資料加密金鑰。如果您將使用 AWS Key Management Service (AWS KMS) 來加密工作階段資料,將 key-name
取代為您希望使用的 KMS 金鑰 的 Amazon Resource Name (ARN),格式為 arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-12345EXAMPLE
。如果您不使用 KMS 金鑰來加密工作階段資料,請將以下內容從政策中移除:
{
"Effect": "Allow",
"Action": [
"kms:GenerateDataKey"
],
"Resource": "key-name
"
}
如需加密工作階段資料適用的 AWS KMS 的資訊,請參閱 開啟工作階段資料的 KMS 金鑰加密 (主控台)。
3 當使用者嘗試從 Amazon EC2 主控台啟動工作階段時,需要 SendCommand 許可,但必須先將 SSM Agent 更新至 Session Manager 所需的最低版本。Run Command 用於將命令傳送至執行個體以更新代理程式。
Session Manager的管理者政策快速入門
使用以下範例來替 Session Manager 建立 IAM 管理員政策。
這些政策提供管理員能夠啟動工作階段到被 Key=Finance,Value=WebServers
所標記的受管節點的能力,建立、更新和刪除偏好設定的許可,以及僅結束自己工作階段的許可。請參閱Session Manager 的其他 IAM 政策範例取得有關您想在政策進行自訂的範例
您可以建立政策,來讓管理員只能從 Session Manager 主控台與 AWS CLI、從 Amazon EC2 主控台,或是從以上三者執行這些任務。
在以下範例政策中,將每個範例資源預留位置
取代為您自己的資訊。
從以下標籤進行選擇,來針對您要支援的存取案例檢視範例政策。
- 工作階段管理員 and CLI
-
使用此範例政策,來讓管理員只能從 Session Manager 主控台與 AWS CLI 執行與工作階段相關的任務。這個政策不提供從 Amazon EC2 主控台執行與工作階段相關的任務所需要的所有許可。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:StartSession"
],
"Resource": [
"arn:aws:ec2:region
:account-id
:instance/*"
],
"Condition": {
"StringLike": {
"ssm:resourceTag/Finance": [
"WebServers"
]
}
}
},
{
"Effect": "Allow",
"Action": [
"ssm:DescribeSessions",
"ssm:GetConnectionStatus",
"ssm:DescribeInstanceProperties",
"ec2:DescribeInstances"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ssm:CreateDocument",
"ssm:UpdateDocument",
"ssm:GetDocument",
"ssm:StartSession"
],
"Resource": "arn:aws:ssm:region
:account-id
:document/SSM-SessionManagerRunShell"
},
{
"Effect": "Allow",
"Action": [
"ssm:TerminateSession",
"ssm:ResumeSession"
],
"Resource": [
"arn:aws:ssm:*:*:session/${aws:userid}-*"
]
}
]
}
- Amazon EC2
-
使用此範例政策,來讓管理員只能從 Amazon EC2 主控台執行與工作階段相關的任務。這個政策不提供從 Session Manager 主控台與 AWS CLI 執行與工作階段相關的任務所需要的所有許可。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:StartSession",
"ssm:SendCommand"
],
"Resource": [
"arn:aws:ec2:region
:account-id
:instance/*"
],
"Condition": {
"StringLike": {
"ssm:resourceTag/tag-key
": [
"tag-value
"
]
}
}
},
{
"Effect": "Allow",
"Action": [
"ssm:StartSession"
],
"Resource": [
"arn:aws:ssm:region
:account-id
:document/SSM-SessionManagerRunShell"
]
},
{
"Effect": "Allow",
"Action": [
"ssm:GetConnectionStatus",
"ssm:DescribeInstanceInformation"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ssm:TerminateSession",
"ssm:ResumeSession"
],
"Resource": [
"arn:aws:ssm:*:*:session/${aws:userid}-*"
]
}
]
}
- 工作階段管理員, CLI, and Amazon EC2
-
使用此範例政策,來讓管理員能從 Session Manager 主控台、AWS CLI 與 Amazon EC2 主控台執行與工作階段相關的任務。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:StartSession",
"ssm:SendCommand"
],
"Resource": [
"arn:aws:ec2:region
:account-id
:instance/*"
],
"Condition": {
"StringLike": {
"ssm:resourceTag/tag-key
": [
"tag-value
"
]
}
}
},
{
"Effect": "Allow",
"Action": [
"ssm:DescribeSessions",
"ssm:GetConnectionStatus",
"ssm:DescribeInstanceInformation",
"ssm:DescribeInstanceProperties",
"ec2:DescribeInstances"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ssm:CreateDocument",
"ssm:UpdateDocument",
"ssm:GetDocument",
"ssm:StartSession"
],
"Resource": "arn:aws:ssm:region
:account-id
:document/SSM-SessionManagerRunShell"
},
{
"Effect": "Allow",
"Action": [
"ssm:TerminateSession",
"ssm:ResumeSession"
],
"Resource": [
"arn:aws:ssm:*:*:session/${aws:userid}-*"
]
}
]
}
1 如果有使用者嘗試從 Amazon EC2 主控台啟動工作階段,但必須先傳送命令來更新 SSM Agent 的話,就需要 SendCommand 的許可。