问题标签 [aws-iam]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-rds - 使用 IAM 角色的 AWS RDS MySQL 连接不起作用
想提前通知我一般来说我是 AWS 新手。对于我的项目,我正在尝试从部署在 EC2 实例上的 Tomcat 上的 Java 应用程序中使用 IAM 身份验证(IAM 角色)来使用 AWS RDS MySQL。在从 Java 中尝试之前,我正在从 EC2 实例上的命令提示符中尝试它。我正在按照此链接进行操作:
https://aws.amazon.com/premiumsupport/knowledge-center/users-connect-rds-iam/
到目前为止,我已经完成了以下操作(如果我没有使用正确的术语,请原谅):
- 使用 AWS RDS 的 MySQL
- 在我的 MySQL 实例上启用 IAM 身份验证
- 为 EC2 创建 IAM 角色
为上述 IAM 角色创建内联策略并授予所需的“操作”。还包括“资源”(我的数据库的用户名端点),如下所示:
/li>将此 IAM 角色分配给我创建的 EC2 实例
我遵循了顶部链接中给出的所有内容,除了最后一个命令之外,一切似乎都有效。
如链接中我创建的数据库用户如下:
CREATE USER dev_user IDENTIFIED WITH AWSAuthenticationPlugin as 'RDS';
链接中最后一个不起作用的命令是:
mysql -h {db or cluser endpoint} --ssl-ca={certificate file name with complete path} --ssl-verify-server-cert -u {dbusername2} -p"{authenticationtoken}" --enable-cleartext-plugin
每次我运行此命令时,它都会要求输入密码,然后出现错误。我不知道如何解决它。
在上面的 mysql 命令中,如果我传递我的主用户 ID(我将其创建为“管理员”)并输入它的密码,我会收到如下错误:
输入密码:错误 1059 (42000):标识符名称 'aws rds generate-db-auth-token --hostname --port' 太长
如果在同一个命令中,我提供了上面创建的数据库用户(dev_user)。如果在命令中提供“dev_user”作为用户以及是否输入密码,我会收到以下错误。[在这种情况下,上面的链接没有设置密码,所以当它要求输入密码时我该怎么办?]:
输入密码:ERROR 1045 (28000): Access denied for user 'dev_user'@'xxx.xx.xx.16'(使用密码:YES)
当我在上面命令的两个位置输入“admin”时,我得到相同的“访问被拒绝...”错误。
任何帮助将不胜感激。
谢谢你。
auth0 - Auth0 规则不会在响应中添加属性
我在向Auth0响应添加新属性时遇到了一些问题。我已经定义了一个新规则来将 user.awsRole 添加到用户对象,如下所示:
当我测试时,我可以看到正确的结果:
现在,当我尝试使用我的应用程序登录时,我看不到新属性awsRole。
为了查看规则是否有效,我尝试更改一些默认属性,例如:
user.email = "某事"
我可以在我的应用程序中看到电子邮件已设置为某些内容。
如果您知道如何将这些自定义属性添加到响应中,请告诉我。
我正在使用 Auth0 将 SSO 设置为 AWS。
lambda - lambda 执行角色与 aws_iam
我有一个使用 cognito 联合用户的无服务器应用程序。对于 api 网关,我使用 aws_iam 授权器,并为对 api 网关的每个请求提供 aws 凭证。
现在,当我的 lambda 被执行时,我假设将使用分配给我的 cognito 用户的角色,并且我将可以访问所需的资源。但似乎 lambda 执行角色仍然需要具有执行这些资源的权限。
我真的需要拥有两个具有相同权限集的角色吗?如果是这样,认知角色的意义何在?
amazon-web-services - 创建 AWS IAM 策略,将正在运行的实例限制为特定安全组
我正在尝试编写一个 IAM 策略,该策略仅在安全组是两种类型之一时才允许 AWS 用户启动实例。因为没有安全组条件密钥,所以我选择使用条件语句,这样除非安全组属于这两个类别中的任何一个,否则EC2 实例无法启动/运行。我在下面的策略中引用这些批准的安全组的方式是通过它们的标签。
我遇到的问题是,当我有一个确实等于第一个条件的安全组时,可以启动一个实例。但是,当我使用等于“UCSFInbound”(第二个条件)的安全组时,实例不会启动(即使它应该启动)。
我确实有一个单独的策略,它授予对 EC2 资源的更广泛访问权限,但是,据我了解,AWS 首先在“允许”操作之前注册“拒绝”操作。如果这是我遇到问题的原因,那么这两种情况(安全组)都不应该起作用。
IAM 政策:
amazon-web-services - DynamoDB 多租户 IAM 策略(与其他用户共享文档)
我正在尝试使用 DynamoDB 和 Cognito 创建一个多租户应用程序。该文档非常清楚地说明了如何实现细粒度授权,以便用户只能访问自己的记录,方法是向 IAM 访问策略添加条件,如下所示:
当 Cognito 用户 id 是行的哈希键时,这对于允许用户读取和写入他们自己的记录非常有用,但是我正在努力解决如何允许其他用户对某些记录具有只读访问权限。
以我为拥有多门课程的学生的模型为例:
(Cognito-sub-1
是导师的 Cognito id)
将上述策略条件应用于用户的 IAM 角色后,用户可以读取和写入此文档,因为哈希键 ( student_id
) 是用户的 Cognito id。
我还希望文档中列出的导师对某些属性具有只读访问权限,但我找不到任何可以做到这一点的示例。我知道我不能使用这个dynamodb:LeadingKeys
条件,因为导师不是表的哈希键。如果我设置一个使用导师列表作为哈希键的全球二级索引 (GSI) 可以做到这一点吗?
如果这可以通过索引来完成,我假设这将只允许对该索引进行读取访问(因为索引不能允许写入操作)。是否有任何替代方法允许基于不是哈希键的属性进行写访问?
或者,我可以使用更长的字符串作为哈希键,连接包含 Cognito ID 列表的属性,”owner”:
并”read-only”:
在我的策略中使用它以仅基于哈希键创建更细粒度的权限模型?这假设策略可以从字符串中解码列表,因为 DynamoDB 不允许哈希键是列表、JSON 对象或类似的。
除了允许用户只读/写他们自己的记录之外,我还没有找到任何考虑细粒度访问控制的资源,所以如果有人可以指导我找到一些,那将是一个很好的开始。
amazon-web-services - AWS IAM 角色策略资源限制
我对 AWS 比较陌生,正在尝试弄清楚角色策略是如何工作的。我已经阅读了非常全面的 AWS 文档,但是我应用的政策仍然没有达到我的预期......让我解释一下
我正在尝试授予对角色的访问权限,以便在假定它时可以使用 lambda
我创建了一个名为“部署者”的角色。
然后,我将以下策略附加到该角色:
我的期望是策略说......指定的资源(部署者角色)是“允许”对 Lambda 服务执行任何操作
但是,当我在前端切换到该角色时,我在 Lambda 仪表板中收到以下错误:
您无权执行:lambda:GetAccountSettings。
我发现的唯一解决方案是在策略中使用通配符 Resource 属性...但是这否定了尝试限制仅访问该角色的目的
做我想做的事的政策示例
有人可以向我解释这里实际发生了什么吗?我显然不明白 Resource 属性的用途......对我来说,第二个政策说任何资源都可以用 Lambda 做任何事情......
谢谢
amazon-web-services - AWS Codepipeline 向导“无法创建 IAM 角色”
我正在尝试在此 AWS 教程(此处)中设置管道。一切都很顺利,直到第 5 步结束。我收到的错误消息很简单“无法创建 IAM 角色”,但是当我在 IAM 控制台中检查该角色时,该角色已成功创建。
我取消了向导并再次尝试了几次,甚至将其放置一夜以防缓存中卡住了,但它仍然返回相同的错误消息。
有没有其他人反对这个?
amazon-web-services - AWS - 用户类型以及他们如何承担 IAM 角色
问题
阐明 AWS 中的用户如何代入 IAM 角色。这让我感到困惑,因为 AWS 中的用户/身份可能会因上下文而有所不同,例如 IAM 用户、Cognito 用户池用户、Cognito 联合用户。
背景
试图了解AWS中用户和身份之间的关系以及每个用户如何承担 IAM 角色。
同样在 AWS 中,用户/未经身份验证和身份(经过身份验证的用户)似乎是不同的概念,两者都可以承担 IAM 角色,因此看起来经过身份验证不是承担 IAM 角色的先决条件,这也让我感到困惑。
- IAM用户/身份(身份 = 通过 AWS CLI 使用 AWS ID/Secret 进行身份验证的用户)
- Cognito 用户池用户/身份(已验证)
- Cognito 联合身份池用户/身份(经过身份验证)
- 还有其他用户类型吗?
IAM 用户(经过身份验证)
我相信这是通过登录 AWS 控制台或使用 AWS 访问密钥 ID/秘密通过 CLI/SDK 识别的用户身份。此用户可以通过切换到角色(AWS 管理控制台)或使用 CLI/SDK 以编程方式代入角色来代入IAM 角色。这个对吗?
Cognito 用户池用户
我相信此用户仅存在于 Cognito 中的 AWS 账户中,与 IAM User 无关。目前无法将IAM 用户映射到Cognito 用户(用户池和联合身份池),如Add AWS IAM users to AWS Cognito Pool中那样。
看起来有几种方法可以将 IAM 角色分配给 Cognito 用户池用户或身份(经过身份验证的用户)。
一种方法是将 IAM 角色分配给添加用户的 Cognito 用户池组。用户池组中经过身份验证的用户可以自动代入 IAM 角色。
另一种方法是通过与 Cognito 用户池联合来使用 Cognito 联合身份池,并将 IAM 角色分配给联合身份池。在这种情况下,Cognito 用户池用户/身份(经过身份验证)等同于 Cognito 联合身份池用户/身份(经过身份验证)。
我想用户将通过 Cognito 联合身份池使用 Cognito 用户池工作流程进行身份验证。然后,用户可以承担映射到 Cognito 用户池组的 IAM 角色和映射到 Cognito 联合身份(经过身份验证)的 IAM 角色。
这些是正确的,还是用户只能承担其中一个 IAM 角色?如果AWS 组织中有多个账户怎么办。每个账户应该创建其 Cognito 用户池来管理同一组用户,还是在一个账户中拥有一个 Cognito 用户池并通过指向用户池的 Cognito 联合身份在账户之间共享 Cognito 用户池?
Cognito 联合身份池用户
如果联盟不与 Cognito 合作,例如 Facebook,则 Cognito 联合身份池用户/身份与 Cognito 用户池用户/身份无关,并且该用户是 Facebook 的用户。用户可以承担映射到 Cognito 联合身份池的 IAM 角色,即使它未经身份验证也是如此。这个对吗?
帮助
我一直在研究 AWS Re:Invent 视频、AWS 文档,但要清楚地理解 Cognito 术语和含义是一项艰巨的任务。如果有清晰、简单、直观的解释,请提供参考。
amazon-web-services - Terraform - AWS EC2 IAM 角色
希望在 AWS 中使用 IAM 角色运行 Terraform,删除访问/共享密钥等。我做得对吗,感觉有点奇怪。
所以我有我的 aws_provider.tf
除非我真的给我运行 Terraform 的 EC2 实例,否则它不会起作用。
我是否在这里遗漏了什么,我在考虑 AWS 方面和 IAM 角色?Terraform 不应该能够在没有分配 EC2 实例的情况下承担 IAM 角色吗?我是否需要扮演另一个角色才能在角色之间切换?
还是应该这样?
谢谢
aws-iam - 如何更改 AWS IAM 组路径?
IAM 组路径是一种按照企业结构组织组的方法。查看IAM 控制台,我找不到设置或修改组路径的方法。是否可以从控制台或以编程方式或通过 CLI 的另一种方式?