Cas*_*lay 5 amazon-ec2 amazon-web-services aws-cloudformation
在此页面上:
要使用AWS CloudFormation引导功能,您需要向引导脚本提供AWS凭证。强烈建议您在启动实例时在EC2实例上分配一个IAM角色。
这似乎很简单,但是当我从AWS文档的各个地方查看任何示例时,他们从未为此设置角色或配置文件。例如,这里。
我想念什么?是否存在cfn-init需要其他权限而其他情况不需要的权限?
不,您不再需要将cloudformation:DescribeStackResource添加到与实例配置文件关联的角色的任何策略中,以访问CloudFormation元数据。脚本cfn-get-metadata和cfn-init是使用特殊的CFN标头而非标准的AWS Authorization标头授权的。来自CFN脚本的请求如下所示:
# This command succeeds regardless of your instance profile
cfn-get-metadata --region us-west-1 --stack cftest --resource LaunchConfig --key AWS::CloudFormation::Init
GET /?Action=DescribeStackResource&StackName=cftest&Version=2010-05-15&ContentType=JSON&LogicalResourceId=LaunchConfig HTTP/1.1
Host: cloudformation.us-west-1.amazonaws.com
Connection: keep-alive
Accept: application/json
Accept-Encoding: gzip, deflate
Authorization: CFN_V1 ewogICJwcml2YXRlSX(truncated)==:b9ZM3/EnzeX(truncated)=
User-Agent: CloudFormation Tools
Run Code Online (Sandbox Code Playgroud)
该CFN授权报头是串联组成http://169.254.169.254/latest/dynamic/instance-identity/document和http://169.254.169.254/latest/dynamic/instance-identity/signature和只允许实例视图来自其自己的堆栈的CloudFormation元数据。
相反,使用实例配置文件的请求如下所示:
# This command fails if you don’t have cloudformation:DescribeStackResource permission!
aws cloudformation --region us-west-1 describe-stack-resource --stack-name cftest --logical-resource-id LaunchConfig
POST / HTTP/1.1
Host: cloudformation.us-west-1.amazonaws.com
Accept-Encoding: identity
Content-Length: 95
X-Amz-Date: 20160630T010040Z
User-Agent: aws-cli/1.10.43 Python/2.7.11+ Linux/4.4.0-28-generic botocore/1.4.33
X-Amz-Security-Token: FQoDY(truncated-token)=
Content-Type: application/x-www-form-urlencoded
Authorization: AWS4-HMAC-SHA256 Credential=ASIA(truncated)/20160630/us-west-1/cloudformation/aws4_request, SignedHeaders=host;x-amz-date;x-amz-security-token, Signature=fbad7aeef75186cb18bbd44810c4d0379d7d1cf1b8a80be14ea1e3192d2ec531
Action=DescribeStackResource&StackName=cftest&Version=2010-05-15&LogicalResourceId=LaunchConfig
Run Code Online (Sandbox Code Playgroud)
如http://169.254.169.254/latest/meta-data/iam/security-credentials/中所述,获取实例配置文件临时凭据,如EC2的IAM角色中所述。
(注:收集这些要求,我跑nc -l 80 &和跑cfn-get-metadata --url http://localhost和aws --endpoint-url http://localhost。)
此CFNSigner功能已添加到aws-cfn-bootstrap-1.1(2012-03)和aws-cfn-bootstrap-1.3.6(2012-09)之间的客户端中。在2012年之前,您确实需要使用具有cloudformation:DescribeStackResource权限的角色,如本2011年文档使用AWS CloudFormation增强应用程序中所述。注意,只有cfn- *脚本使用CFNSigner。如果要使用aws cloudformation,则需要确保您的角色允许使用。
| 归档时间: |
|
| 查看次数: |
1634 次 |
| 最近记录: |