按照标题,当资源策略已经将要应用于特定资源时,在定义资源策略时具有资源字段的目的是什么。
例如,在此tutorial aws中,以下策略被定义为队列的附件。 resource
字段的用途是什么?
{
"Version": "2008-10-17",
"Id": "example-ID",
"Statement": [
{
"Sid": "example-statement-ID",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"SQS:SendMessage"
],
"Resource": "arn:aws:sqs:REGION:ACCOUNT-ID:QUEUENAMEHERE",
"Condition": {
"ArnLike": { "aws:SourceArn": "arn:aws:s3:*:*:bucket-name" }
}
}
]
}
答案 0 :(得分:2)
S3是您需要在策略中包括资源语句的好例子。假设您要在S3存储桶上有一个上传位置。
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"Upload",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:PutObject"],
"Resource":["arn:aws:s3:::examplebucket/uploads/*"]
}
]
}
在这些情况下,您确实不想将资源默认为存储桶,因为这可能会意外导致全局访问。最好确保用户清楚地了解允许或拒绝什么访问。
但是,为什么在不需要SQS的资源策略中将其设置为必需?为此,让我们深入研究如何使用资源策略。
您可以通过两种方式授予对资源的访问权限:
要理解的重要部分是如何使用资源策略? IAM实际上在策略评估逻辑中将资源策略用于授权。换句话说,资源不负责留给IAM(身份和访问管理)的实际授权。
由于IAM要求每个策略语句都必须具有Resource或NotResource,这意味着如果缺少资源,则服务在将其发送到IAM时需要添加资源。因此,让我们从设计的角度看待服务缺失时添加服务的含义。
{
"Sid": "example-statement-ID",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"*"
]
}
请注意,我基于对AWS如何实施访问管理的理解,从一般设计的角度回答了这一问题。 AWS实施该系统的方式可能有所不同,但我对此表示怀疑,因为确实需要针对性能优化策略评估逻辑,因此最好在一项服务(IAM)中而不是在每项服务中做到这一点。
希望有帮助。
如果您对Policy Evaluation Logic的详细信息感兴趣,请额外阅读。
您可以拒绝6种访问方式:
答案 1 :(得分:0)
有您定义的政策。
arn:aws:sqs:REGION:ACCOUNT-ID:QUEUENAMEHERE
一旦将策略应用于ec2
之类的A
实例之类的服务,则该实例只能通过资源SQS:SendMessage
来完成B
。 A和B完全不同。
如果要限制对资源A
的访问权限,该资源不应访问其他资源,而只能访问已定义的资源,则必须定义resource
,例如{{ 1}}。
您的策略仅对该资源B
有效,而不是您应用的资源B
。