我们正在满足一项要求,我们希望在 AWS EC2 实例上运行的 terraform apply 使用 IAM 角色而不是使用凭证(访问密钥/秘密密钥)作为 aws 提供程序的一部分在 AWS 中创建 route53。注意:添加到实例的 IAM 角色已提供策略,该策略为角色提供 route53fullaccess。当我们在 terraform.tf 中使用以下语法时,它工作正常。我们能够创建路线。句法:
*provider "aws" {
access_key = "${var.aws_accesskey}
secret_key = "${var.aws_secretkey}
region = "us-east-1"
}
resource "aws_route53_record {}*
Run Code Online (Sandbox Code Playgroud)
但是,我们希望 terraform 脚本使用 IAM 角色而不是凭据运行。(不想维护凭证文件) 尝试的步骤: 1. 从 terraform.tf 文件中删除提供程序块并运行构建。语法:资源“aws_route53_record {} 2. 出现以下错误。Provider.aws :InvalidClientTokenid。3. 浏览了 terraform 官方文档以使用 IAM 角色。它说要使用元数据 api。但没有工作示例。(https: //www.terraform.io/docs/providers/aws/index.html ) 我是 Terraforms 的新手,所以如果这是一个基本问题,请原谅我。有人可以帮助代码/工作示例来实现这一目标吗?
我一直在尝试让 MFA 与 kubectl 一起工作,以保护对 AWS 中 EKS 主节点的访问。文档似乎暗示这是可能的,但我遇到了问题,我无法弄清楚。
没有什么特别的,我可以连接到我的 EKS 集群:
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 172.20.0.1 <none> 443/TCP 2d
Run Code Online (Sandbox Code Playgroud)
如果我将 MFA 添加到 AWS CLI,请遵循以下帖子:
https://docs.aws.amazon.com/cli/latest/userguide/cli-roles.html
我像这样设置我的本地凭据:
[default]
aws_access_key_id = **********************
aws_secret_access_key = **********************
region = us-west-2
[default_role]
mfa_serial = arn:aws:iam::1234567890:mfa/spanktar
role_arn = arn:aws:iam::1234567890:role/test_assumeRole
source_profile = default
Run Code Online (Sandbox Code Playgroud)
...然后我可以看到 AWS CLI 具有 MFA:
aws sts get-caller-identity --profile default_role
Enter MFA code for arn:aws:iam::1234567890:mfa/spanktar: 123456
{
"UserId": "**********************:botocore-session-1234567890",
"Account": …
Run Code Online (Sandbox Code Playgroud) kubernetes kubectl aws-iam multi-factor-authentication amazon-eks
我是AWS和IAM的新手,试图了解角色和信任关系。
我完全理解为什么使用角色,如何创建角色及其用例。
我没有得到的是信任关系步骤。在几乎所有情况下,我都看到这是一对一的关系。EC2需要与EC2的信任。为什么要采取额外的步骤?
如果我创建一个EC2实例和一个具有S3权限的角色,那还不够吗?
我正在尝试设置 Congito 来管理我的用户池并设置电话验证。不幸的是,AWS 文档似乎已经过时。
根据这个文档,我应该在我的 coginto 页面上看到一个创建 IAM 角色按钮,但它不存在:https ://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-mfa .html
我猜他们删除了该选项,但我也没有看到手动创建正确角色的方法。Cognito 未列为您可以为其创建角色的服务之一。
上图中有一个 Web 身份选项卡,所以我尝试使用它。果然,有创建角色的选项,甚至给它发送短信所需的SNS访问权限,但它不是服务角色。生成的 ARN 不具有第一个映像具有的 /service-role/ 路径。我想不出任何方法来更改 arn 以包含它,如果我只是尝试在没有它的情况下运行我的应用程序,我仍然收到错误消息:
[00:20:30] 错误注册对象 { [00:20:30] "code": "InvalidSmsRoleTrustRelationshipException", [00:20:30] "message": "角色没有允许 Cognito 承担的信任关系角色", [00:20:30] "name": "InvalidSmsRoleTrustRelationshipException", [00:20:30] }
Cognito 现在坏了吗??我确定我错过了一些东西......
amazon-web-services amazon-sns amazon-iam amazon-cognito aws-iam
这个问题可能看起来很笨拙,但我正在与我们的 AWS 组织保持联系。我们将 3 个独立的根账户连接到一个组织中,并使用 IAM 账户和策略。我们只能在 EC2 列表中看到来自默认 root 帐户的实例(是的,我正在寻找正确的区域)。我们已在所有其他帐户之间共享完整帐户访问权限并接受了邀请。我们的计费工作完美,并且从我们的主根帐户漏斗(我可以看到其他单独帐户的计费很好)。即使是我们最高级别的管理员(字面意思是对所有内容的授予权限)也无法看到从单独的根帐户之一启动的实例。
我们的目标是我们的管理员组应该可以看到来自组织中所有 3 个根账户的 EC2 实例,而无需切换账户或凭证。
我知道这必须是可能的,但我已经花了至少 2 个小时并且没有走多远。关于如何实现这一目标的任何建议?
amazon-ec2 amazon-web-services amazon-iam aws-organizations aws-iam
我的AWS账户中有很多S3存储桶。但是,现在我创建了一个IAM用户和一个新的S3存储桶,我希望使该用户能够使用CyberDuck之类的客户端访问新的S3存储桶。
我试图制定许多政策。但是之后,该用户也获得了列出我所有其他存储桶的权限。如何授予对单个S3存储桶的列表访问权限和写入权限?
我有一个与AWS资源交互的Docker容器golang代码。在测试环境中,我们使用iam角色。但是如何在本地测试。如何使用AWS凭证在本地运行Docker。我正在使用Docker文件构建Docker映像。
我正在尝试编写一个 lambda 来侦听来自 CloudWatch 的 Parameter Store 更改事件,并通过调用boto3.client('ssm').get_parameter_history(Name=event["name"],WithDecryption=True)
. 此方法失败并显示以下消息:
botocore.exceptions.ClientError: 调用GetParameterHistory 操作时发生错误(AccessDeniedException):密文引用的客户主密钥不存在、不存在于该区域或您不被允许访问。(服务:AWSKMS;状态代码:400;错误代码:AccessDeniedException;请求 ID:等等)
下面是 lambda 的执行角色:
{
"roleName": "myapp-paramstore-updates-webhook-role",
"policies": [
{
"document": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "logs:CreateLogGroup",
"Resource": "arn:aws:logs:eu-west-1:000000000000:*"
},
{
"Effect": "Allow",
"Action": [
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:eu-west-1:000000000000:log-group:/aws/lambda/ssm-paramstore-updates-webhook:*"
]
}
]
},
"name": "LambdaBasicExeRole",
"type": "inline"
},
{
"document": {
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"kms:DescribeKey",
"ssm:GetParameter"
],
"Resource": [
"arn:aws:kms:eu-west-1:000000000000:key/*",
"arn:aws:ssm:eu-west-1:000000000000:parameter/myorg/myteam/slack/webhooks/ssm-paramstore-updates-webhook",
"arn:aws:ssm:eu-west-1:000000000000:parameter/myorg/myteam/slack/webhooks/system-eventsupdates-webhook" …
Run Code Online (Sandbox Code Playgroud) 根据 AWS 官方文档,IAM 角色还可以可以附加到 IAM 用户,而不仅仅是服务。
将 IAM 角色分配给 IAM 用户的有效用例是什么?
直接向用户授予(允许/拒绝)IAM 策略是否涵盖了所有情况?
TBH 我的最初印象是 IAM 角色用于授权 AWS 服务(以便它们可以与其他服务交互),因为后者无法在用户上下文中解决
我正在尝试使用Firehose交付流设置Lambda转换。我为Firehose定义了一个IAM角色,其中包括以下策略文档:
{
"Statement": {
"Action": [
"lambda:InvokeFunction",
"lambda:GetFunctionConfiguration"
],
"Resource": [<Arn>, ...],
"Effect": "Allow"
}
}
Run Code Online (Sandbox Code Playgroud)
我还授予了sts:AssumeRole从Firehose访问Lambda角色的权限。
从理论上讲,这应允许我的Firehose“调用”访问指定的lambda ARN。但是转换失败了
{
"errorCode":"Lambda.InvokeAccessDenied",
"errorMessage":"Access was denied. Ensure that the access policy allows access to the Lambda function."
}
Run Code Online (Sandbox Code Playgroud)
而且从Lambda控制台看不到函数调用。我的IAM组件是否配置正确?还是这里有其他问题?
aws-iam ×10
amazon-iam ×3
amazon-ec2 ×2
aws-lambda ×2
amazon-eks ×1
amazon-s3 ×1
amazon-sns ×1
boto3 ×1
docker ×1
docker-swarm ×1
json ×1
kubectl ×1
kubernetes ×1
linux ×1
multi-factor-authentication ×1
terraform ×1