cpp*_*ner 6 amazon-web-services amazon-iam
根据标题,当资源策略已经应用于特定资源时,定义资源策略时拥有资源字段的目的是什么。
例如,在本 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" }
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
S3 是一个很好的示例,说明您需要在策略中包含资源声明。假设您希望在 S3 存储桶上有一个上传位置。
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"Upload",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:PutObject"],
"Resource":["arn:aws:s3:::examplebucket/uploads/*"]
}
]
}
Run Code Online (Sandbox Code Playgroud)
在这些情况下,您确实不希望将资源默认到存储桶,因为这可能会意外导致全局访问。最好确保用户清楚了解允许或拒绝哪些访问。
但是,为什么在不需要像 SQS 那样的资源策略中需要它呢?为此,让我们深入了解如何使用资源策略。
您可以通过两种方式授予对资源的访问权限:
需要理解的重要部分是如何使用资源策略?资源策略实际上是IAM在策略评估逻辑中用于授权的。换句话说,资源不负责留给 IAM(身份和访问管理)的实际授权。
由于 IAM 要求每个策略语句都具有 Resource 或 NotResource,这意味着如果资源丢失,服务在将资源发送到 IAM 时需要添加该资源。因此,让我们从设计角度看一下让服务添加缺少的资源的含义。
{
"Sid": "example-statement-ID",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"*"
]
}
Run Code Online (Sandbox Code Playgroud)
注:我根据我对 AWS 如何实现访问管理的理解,从一般设计的角度回答了这个问题。AWS 实现该系统的方式可能有点不同,但我对此表示怀疑,因为策略评估逻辑确实需要针对性能进行优化,因此最好在一项服务 IAM 中实现这一点,而不是在每项服务中实现这一点。
希望有帮助。
如果您对政策评估逻辑的详细信息感兴趣,请额外阅读。
您可以通过 6 种方式拒绝访问:
归档时间: |
|
查看次数: |
1651 次 |
最近记录: |