标签: aws-iam

使用 IAM 角色而不是凭证从使用 terraform 的 EC2 实例创建 aws 资源

我们正在满足一项要求,我们希望在 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 的新手,所以如果这是一个基本问题,请原谅我。有人可以帮助代码/工作示例来实现这一目标吗?

amazon-ec2 amazon-web-services terraform aws-iam

5
推荐指数
1
解决办法
2959
查看次数

将 MFA 与 EKS kubectl 和 aws-iam-authenticator 结合使用

我一直在尝试让 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,请遵循以下帖子:

如何将 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

5
推荐指数
1
解决办法
2565
查看次数

AWS-IAM角色和信任关系

我是AWS和IAM的新手,试图了解角色和信任关系。

我完全理解为什么使用角色,如何创建角色及其用例。

我没有得到的是信任关系步骤。在几乎所有情况下,我都看到这是一对一的关系。EC2需要与EC2的信任。为什么要采取额外的步骤?

如果我创建一个EC2实例和一个具有S3权限的角色,那还不够吗?

aws-iam

4
推荐指数
2
解决办法
4971
查看次数

创建 IAM 服务角色以允许 Amazon Cognito 为 MFA 发送 SMS 消息

我正在尝试设置 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

4
推荐指数
1
解决办法
3358
查看次数

单个 AWS 组织中的多个根账户:IAM 管理员无法查看指定区域中的所有 EC2 实例

这个问题可能看起来很笨拙,但我正在与我们的 AWS 组织保持联系。我们将 3 个独立的根账户连接到一个组织中,并使用 IAM 账户和策略。我们只能在 EC2 列表中看到来自默认 root 帐户的实例(是的,我正在寻找正确的区域)。我们已在所有其他帐户之间共享完整帐户访问权限并接受了邀请。我们的计费工作完美,并且从我们的主根帐户漏斗(我可以看到其他单独帐户的计费很好)。即使是我们最高级别的管理员(字面意思是对所有内容的授予权限)也无法看到从单独的根帐户之一启动的实例。

我们的目标是我们的管理员组应该可以看到来自组织中所有 3 个根账户的 EC2 实例,而无需切换账户或凭证。

我知道这必须是可能的,但我已经花了至少 2 个小时并且没有走多远。关于如何实现这一目标的任何建议?

amazon-ec2 amazon-web-services amazon-iam aws-organizations aws-iam

4
推荐指数
2
解决办法
3804
查看次数

创建单个IAM用户以仅访问特定的S3存储桶

我的AWS账户中有很多S3存储桶。但是,现在我创建了一个IAM用户和一个新的S3存储桶,我希望使该用户能够使用Cyber​​Duck之类的客户端访问新的S3存储桶。

我试图制定许多政策。但是之后,该用户也获得了列出我所有其他存储桶的权限。如何授予对单个S3存储桶的列表访问权限和写入权限?

linux json amazon-s3 amazon-web-services aws-iam

3
推荐指数
1
解决办法
4056
查看次数

将AWS凭证传递给Docker

我有一个与AWS资源交互的Docker容器golang代码。在测试环境中,我们使用iam角色。但是如何在本地测试。如何使用AWS凭证在本地运行Docker。我正在使用Docker文件构建Docker映像。

docker docker-compose docker-swarm docker-machine aws-iam

3
推荐指数
1
解决办法
3271
查看次数

AWS:在 SSM 参数上调用 ssm:GetParameterHistory 时出现 AccessDeniedException

我正在尝试编写一个 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)

amazon-web-services boto3 aws-lambda aws-iam

3
推荐指数
1
解决办法
5661
查看次数

AWS:为 IAM 用户分配 IAM 角色

根据 AWS 官方文档,IAM 角色还可以可以附加到 IAM 用户,而不仅仅是服务。

将 IAM 角色分配给 IAM 用户的有效用例是什么?

直接向用户授予(允许/拒绝)IAM 策略是否涵盖了所有情况?

TBH 我的最初印象是 IAM 角色用于授权 AWS 服务(以便它们可以与其他服务交互),因为后者无法在用户上下文中解决

amazon-web-services amazon-iam aws-iam

3
推荐指数
1
解决办法
161
查看次数

Lambda.InvokeAccess从Kinesis Firehose拒绝

我正在尝试使用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组件是否配置正确?还是这里有其他问题?

amazon-kinesis aws-lambda aws-iam amazon-kinesis-firehose

2
推荐指数
2
解决办法
2652
查看次数