Aza*_*hli 2 amazon-ec2 amazon-web-services amazon-iam aws-ssm
我试图让 IAM 用户只能对特定文档使用 SSM 运行命令。
如果我将以下策略附加到用户,则该用户确实只能AWS-RunShellScript
在 EC2 实例上成功执行(这是 AWS 托管的)文档。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:DescribeDocument",
"ssm:DescribeDocumentParameters",
"ssm:DescribeDocumentPermission",
"ssm:GetCommandInvocation",
"ssm:GetDocument",
"ssm:ListCommandInvocations",
"ssm:ListCommands",
"ssm:ListDocumentMetadataHistory",
"ssm:ListDocuments",
"ssm:ListDocumentVersions"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "ssm:SendCommand",
"Resource": "arn:aws:ssm:us-west-2:999999999999:document/AWS-RunShellScript"
}
]
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我用我创建的自定义文档 ARN 替换策略中的资源项(例如arn:aws:ssm:us-west-2:999999999999:document/CustomDocument
),我会收到“访问被拒绝”的消息
文档中并不太清楚,但为了限制ssm:SendCommand
,您必须使用该Resource
字段来指定允许 IAM 用户运行哪些文档以及允许在哪些实例上运行命令。
用户在尝试运行命令时将看到所有实例,但只能针对 IAM 策略中指定的 EC2 实例 ID 执行命令。
\n如果需要,您可以指定策略以允许任何实例,如下所示,或者根据在 IAM 策略中授予最小权限的标准安全建议指定有限的实例 ID 列表。
\n至于为什么AWS托管文档有效,这可能是一些内部魔法 \xe2\x80\x8d\xe2\x99\x82\xef\xb8\x8f
\n这应该有效:
\n{\n "Version":"2012-10-17",\n "Statement":[\n {\n "Effect":"Allow",\n "Action":"ssm:SendCommand",\n "Resource":[\n "arn:aws:ec2:us-west-2:999999999999:instance/*",\n "arn:aws:ssm:us-west-2:999999999999:document/AWS-RunShellScript"\n ]\n }\n ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
3303 次 |
最近记录: |