AWS 有没有办法通过中央策略向所有服务授予只读权限?目前,我被迫为每项服务执行此操作,例如下面的 IAM -
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": [
"iam:Get*",
"iam:List*",
"iam:Generate*"
],
"Resource": "*"
}
}
Run Code Online (Sandbox Code Playgroud)
必须对每个资源执行此操作很容易出错且乏味。我们如何定义一个策略来为所有服务提供只读权限。
谢谢
我是 AWS 新手,但根据我的理解,角色既包含权限策略又包含信任策略。权限策略看起来非常简单——你可以做什么。IE:
"iam:CreatePolicy",
"iam:GetRole",
"iam:GetPolicy",
"iam:DeletePolicy",
"iam:CreateRole",
"iam:DeleteRole",
...
Run Code Online (Sandbox Code Playgroud)
另一方面,信任策略是“谁被允许这样做”IE:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::000000000000:role/My-Role"
},
**"Action": "sts:AssumeRole"**
}
]
}
Run Code Online (Sandbox Code Playgroud)
AssumeRole 听起来像是“你可以做什么”,那么为什么它总是属于信任策略而不是权限策略。继续下去,我了解到 sts:TagSession 也属于信任策略而不是权限策略。我是否遗漏了某些内容,或者它只是属于信任策略中的 sts 类型操作?
我正在尝试为 AWS 中的身份池应用策略。我正在使用 awc-cli 来设置策略,但它不断地从标题中给我这个例外:
调用 AttachPrincipalPolicy 操作时发生错误 (InvalidRequestException):检测到 1 个验证错误:“policyName”处的值“DeviceShadowPolicy”无法满足约束:成员必须满足正则表达式模式:[\w+=,.@-]+
这是我使用的命令:
aws iot attach-principal-policy --policy-name 'DeviceShadowPolicy' --principal 'PRINCIPAL'
Run Code Online (Sandbox Code Playgroud)
我不明白为什么会出现此错误。有人可以帮我吗?
amazon-web-services amazon-cognito aws-iot aws-amplify aws-policies
我正在尝试使用 terraform 创建一个状态函数。首先,我创建一个策略并将其分配给现有角色processing_lambda_role
。
resource "aws_iam_role_policy" "sfn_policy" {\n policy = jsonencode(\n{\n "Version": "2012-10-17",\n "Statement": [\n {\n "Effect": "Allow",\n "Principal": {\n "Service": "states.amazonaws.com"\n },\n "Action": "sts:AssumeRole"\n },\n {\n "Sid": "VisualEditor0",\n "Effect": "Allow",\n "Action": [\n "lambda:InvokeFunction",\n "lambda:InvokeAsync"\n ],\n "Resource": "*"\n }\n ]\n}\n )\n role = aws_iam_role.processing_lambda_role.id\n}\n\n\nresource "aws_sfn_state_machine" "sfn_state_machine" {\n name = local.step_function_name\n role_arn = aws_iam_role.processing_lambda_role.arn\n\n definition = <<EOF\n{\n "Comment": "Get Incoming Files",\n "StartAt": "GetIncomingFiles",\n "States": {\n "GetIncomingFiles": {\n "Type": "Task",\n "Resource": "${aws_lambda_function.get_incoming_lambda.arn}",\n "ResultPath": "$.Output",\n "End": true\n }\n }\n}\nEOF\n}\n
Run Code Online (Sandbox Code Playgroud)\n我收到此错误: …
amazon-web-services terraform terraform-provider-aws aws-policies terraform-aws-modules
我正在 AWS 中使用密钥管理服务 (KMS),目前正在设置密钥策略。
我创建了两个角色KmsUser和KmsAdmin并将以下密钥策略附加到我的 CMK:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "KMS KeyAdmin access",
"Effect": "Allow",
"Principal": {"AWS": [
"arn:aws:iam::1234567890:role/KmsAdmin",
"arn:aws:iam::1234567890:user/myadmin"
]},
"Action": [
"kms:Create*",
"kms:Describe*",
"kms:Enable*",
"kms:List*",
"kms:Put*",
"kms:Update*",
"kms:Revoke*",
"kms:Disable*",
"kms:Get*",
"kms:Delete*",
"kms:TagResource",
"kms:UntagResource",
"kms:ScheduleKeyDeletion",
"kms:CancelKeyDeletion"
],
"Resource": "*"
},
{
"Sid": "KMS KeyUser access",
"Effect": "Allow",
"Principal": {"AWS": [
"arn:aws:iam::1234567890:role/KmsUser"
]},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
问题是,现在如果我尝试使用我的密钥作为myadmin用户(附加了 …
我正在尝试在 AWS IoT 和我的 React JS 应用程序之间建立连接。
\n\n我遵循了本教程(https://medium.com/serverlessguru/serverless-real-time-reactjs-app-aws-iot-mqtt-17d023954045),但我不清楚如何将 Cognito 身份 ID 附加到AWS IoT 政策。
\n\n在我的所有调查过程中,我发现此过程必须通过命令行完成。
\n\n在上面的文章中,这些过程是通过以下命令行完成的:
\n\n\xe2\x80\xa2 请注意,此命令中必须考虑 \xe2\x80\x9cidentity_pool_id\xe2\x80\x9d。
\n\n\n\n在aws文档(https://aws-amplify.github.io/docs/js/pubsub)中,它说在命令行中写入\xe2\x80\x9cidentity_id\xe2\x80\x9d:
\n\n\n\n当我在命令行中使用 \xe2\x80\x9cidentity_pool_id\xe2\x80\x9d 并尝试从 AWS IoT 发布消息时,出现以下错误:
\n\n\n\n当我在命令行中使用 \xe2\x80\x9cidentity_id\xe2\x80\x9d 时,我可以成功执行 AWS IoT 和前端之间的通信:
\n\n\n\n问题是 \xe2\x80\x9cidentity_id\xe2\x80\x9d 对于每个用户来说都是不同的代码。考虑到我的应用程序中将有很多用户,我不知道如何执行此任务。
\n\n\xe2\x80\xa2 我是否正在执行正确的过程来考虑 \xe2\x80\x9cidentity_id\xe2\x80\x9d 而不是 \xe2\x80\x9cidentity_pool_id\xe2\x80\x9d?
\n\n\xe2\x80\xa2 如果是,每次有新用户在我的应用程序中登录时,如何自动将 Cognito ID 附加到 AWS IoT 策略?
\n\n\xe2\x80\xa2 在 AWS IoT 策略中附加数千个 Cognito 证书是否有任何问题?
\namazon-web-services amazon-cognito aws-iot aws-userpools aws-policies
根据此处的AWS 文档-当您以 AWS 账户根用户身份登录时,无法切换角色。
如果我们遵循 AWS 最佳实践,即不使用 root 用户执行操作,则此限制是有意义的,并且支持了 AWS 不允许以 root 用户进行角色切换的原因。然而,当使用存储桶策略时,一个账户中的根用户可以访问另一个账户中的存储桶,而且 AWS 似乎并没有限制这一点,这与角色不同(从技术上讲,两者都是使用资源策略的跨账户操作)。
为什么此“根用户限制”仅适用于角色而不适用于存储桶 - 有任何安全原因吗?
某些涉及 IAM 权限的操作可能会返回 Client.UnauthorizedOperation 响应。
根据文档,在 AWS Transfer SFTP 服务器中为用户创建范围缩小策略时,可以使用策略变量${transfer:HomeFolder}
和${transfer:HomeDirectory}
该策略。但是,我找不到任何关于两者之间区别的描述。有人可以解释或链接到相关文档吗?
我正在尝试按照Terraform 文档创建策略
resource "aws_iam_policy" "policy" {
name = "test_policy"
path = "/"
description = "My test policy"
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"ec2:Describe*",
]
Effect = "Allow"
Resource = "*"
},
]
})
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,没有关于如何包含标签的描述。即使我可以从 AWS 管理控制台手动提供,我也无法像使用其他资源那样完成它。
该tags
设置似乎不起作用。如果我尝试对IAM 角色执行相同操作,则会收到错误消息,包括:
tags = {
tag-key = "tag-value"
}
Run Code Online (Sandbox Code Playgroud) amazon-web-services amazon-iam terraform terraform-provider-aws aws-policies
aws-policies ×10
amazon-iam ×5
aws-iot ×2
terraform ×2
amazon-ec2 ×1
amazon-kms ×1
amazon-s3 ×1
aws-amplify ×1
aws-sftp ×1
roles ×1