gpt4 book ai didi

amazon-web-services - CloudFormation 角色使用 QueuePolicy Ref 作为 IAM 角色资源中的 ManagedPolicy?

转载 作者:行者123 更新时间:2023-12-03 07:31:50 24 4
gpt4 key购买 nike

我尝试通过 CloudFormation 创建 IAM 角色,但在尝试附加 QueuePolicy 时收到此错误资源到IAM::Role资源。

ARN stack-personSQSPolicy-3F02ILJ96DB1 is not valid. (Service: AmazonIdentityManagement; Status Code: 400; Error Code: InvalidInput; Request ID: 4410ba76-30ce-4d15-be3c-6d5040f971f0)

这是我的 CloudFormation 角色和策略定义:

APIGatewaySQSRole:
Type: 'AWS::IAM::Role'
Properties:
AssumeRolePolicyDocument:
Statement:
- Action: 'sts:AssumeRole'
Effect: Allow
Principal:
Service: apigateway.amazonaws.com
Version: 2012-10-17
ManagedPolicyArns:
- !Ref personSQSPolicy
- 'arn:aws:iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs'
personSQSPolicy:
Type: 'AWS::SQS::QueuePolicy'
Properties:
PolicyDocument:
Version: 2012-10-17
Statement:
Effect: Allow
Action: 'sqs:SendMessage'
Resource: !GetAtt personSQS.Arn
Queues:
- !Ref personSQS

Type: 'AWS::SQS::QueuePolicy' 有什么意义?如果它不允许在角色资源中用作 Arn?看来我仍然需要在 IAM 角色资源 block 中手动创建该策略。

Policies:
- PolicyDocument:
Statement:
- Action: sqs:SendMessage
Effect: Allow
Resource: !GetAtt 'personSQS.Arn'
PolicyName: apig-sqs-send-msg-policy

有办法避免这种情况吗?

最佳答案

由于 SQS 队列可以公开访问,因此如果人们要在没有角色的情况下访问它,它们需要一种安全机制。

这就是为什么您可以为队列定义 QueuePolicy AWS::SQS::QueuePolicy 并将其应用于一个或多个队列。它将帮助您直接从队列的角度定义谁可以访问它、如何访问它等。

然后,您可以使用 Cloudformation 属性 Queues 将 QueuePolicy 附加到您的队列(请参阅: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html#cfn-sqs-queuepolicy-queues )

如果您想定义一个角色来访问您的队列,是的,您必须描述相同的策略,但这次是从访问它的资源的角度来看,但我仍然建议您保护对您的队列具有队列策略。

对于你的最后一个问题,定义 QueuePolicy 并将其附加到你的队列是正确的方法。

请注意,Queues 属性需要队列 URL 列表,而不是 ARN。

关于amazon-web-services - CloudFormation 角色使用 QueuePolicy Ref 作为 IAM 角色资源中的 ManagedPolicy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60385202/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com