我是不是可以在 AWS 中创建仅对 Cognito 用户可用但对任何其他 AWS 用户不可用的密钥?

Posted

技术标签:

【中文标题】我是不是可以在 AWS 中创建仅对 Cognito 用户可用但对任何其他 AWS 用户不可用的密钥?【英文标题】:Can I create a secret in AWS that is only available to a Cognito user but not to any other AWS user?我是否可以在 AWS 中创建仅对 Cognito 用户可用但对任何其他 AWS 用户不可用的密钥? 【发布时间】:2020-12-19 15:04:06 【问题描述】:

我需要实现一些零知识的东西,想知道我是否可以:

在我的平台中创建用户 创建与该用户关联的 Cognito 用户 做一些客户端魔术并将密钥推送到 *any-storage* 中 除此特定用户外,任何人(甚至 AWS 超级管理员)都不能访问此密钥。

能以某种方式实现吗?谢谢!

【问题讨论】:

AWS 超级管理员将始终有权访问所有 aws 资源,除非您将明确的拒绝策略附加到资源。我还没有尝试过,但是您可以尝试在 AWS(参数存储)中使用 SSM 服务,并明确拒绝除您的 cognito 用户之外的所有人访问该参数。您也可以尝试 Secrets Manager。也许这样会更安全 @NinadGaikwad 这不太准确。您可以根据资源的策略拒绝除用户之外的所有人,但管理员仍然具有编辑策略的权限,如果您拒绝他们,他们有权编辑拒绝该策略的策略,等等,等等. 【参考方案1】:

没有。

AWS 账户管理员可以从 AWS 访问任何用户可以访问的任何内容。我能想到几个选项:

    Use asymmetric KMS keys?它们具有私钥从不离开 KMS 的漂亮功能(您/用户通过调用 KMS 使用私钥执行所有操作)。

    在客户端安全地保存用户私钥。如果您想在云中存储一些秘密,请在存储之前使用私钥对其进行加密。管理员可以访问它并不重要,因为它是加密的。

【讨论】:

以上是关于我是不是可以在 AWS 中创建仅对 Cognito 用户可用但对任何其他 AWS 用户不可用的密钥?的主要内容,如果未能解决你的问题,请参考以下文章

AWS Amplify AppSync 使用在 Cognito 中创建的 Google 用户登录

在 DotNet 中创建 AWS Cognito PreSignup Lambda

如何在 Keycloak 中创建客户端以与 AWS Cognito 身份联合使用

是否可以在 GKE 的区域集群中创建仅限区域的节点池?

AWS Cognito 检查是不是登录

AWS Cognito 内置登录重定向问题