首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >secrets :如何在web应用程序中加密clientId和clientSecret?

secrets :如何在web应用程序中加密clientId和clientSecret?
EN

Stack Overflow用户
提问于 2021-08-07 06:11:18
回答 3查看 79关注 0票数 1

人们建议不要存储API密钥和密码配置文件,而是使用Secrets vault。例如:AWS或Azure。

但要访问它们,您需要一个clientId和clientSecret。这些需要存储在应用程序中的某个位置。例如app.config。所以我真的不明白,如果黑客可以使用应用程序中的clientId和clientSecret来获取密码或api密钥,那么这解决了什么问题?

这似乎比存储一个api密钥的原始问题更糟糕,因为如果他们访问密钥管理器,他们将拥有所有的密钥和所有的密码。

EN

回答 3

Stack Overflow用户

发布于 2021-08-07 06:30:46

AWS提供了几种不同的服务来存储您的秘密。假设您在应用程序配置文件中有一个数据库密码,您可以使用AWS secret manager或AWS Parameter store将其存储为Secret。

要安全地检索这些值,您不必存储应用程序中存储的另一个秘密。您可以在AWS中使用一种称为基于角色的访问的机制。

如果您在ec2实例上运行您的应用程序,您可以配置一个AWS角色/配置文件,并将其分配给ec2实例,该实例将安全地链接密钥管理器和ec2机器,并且您的应用程序具有解密密钥并在应用程序中使用的连接。

票数 0
EN

Stack Overflow用户

发布于 2021-08-07 13:36:52

如果你正在使用Azure,答案是使用Managed Identities

它的工作方式是为资源(虚拟机、WebApps等)分配身份需要访问密钥库的用户。这样,资源就像你的Azure AD中的用户(非常像服务主体或任何其他用户)。然后,您可以使用Key Vault访问策略将对Key Vault中的密钥和机密的适当访问权限分配给这些托管身份。执行此操作不需要您指定客户端Id/客户端密码即可访问密钥库。

虽然托管标识是您分配给资源的东西,但如果您有许多资源,它可能会变得很麻烦。这就是User Assigned Managed Identity的用武之地。User Assigned Managed Identity是你的Azure订阅中的资源。该过程非常相似:您创建这样的身份,然后在您的Key Vault资源上分配对此身份的适当访问权限。

现在,只要您需要在应用程序中访问Key Vault,就需要指定此身份的id。使用适当SDK的应用程序将获得代表此身份的访问令牌,并使用该访问令牌连接到密钥库。

你可以在这里了解更多关于这些身份的信息:https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview

票数 0
EN

Stack Overflow用户

发布于 2021-08-07 15:47:30

,但要访问它们,您需要一个clientId和clientSecret。这些需要存储在应用程序中的某个位置。例如app.config

您可以使用运行时权限来访问密钥和参数。在Azure中它被称为托管身份,在AWS中有服务角色。我更熟悉AWS,所以我将使用它的术语,但每个较大的云提供商都有类似的方法,但名称不同。

基本上,您可以分配运行代码的计算资源(EC2/VM服务器、Lambda函数、ECS容器等)角色-您可以将其视为一组权限。使用AWS API,您可以访问代码中的秘密或参数,而无需存储任何客户端凭据。

如果他们能够访问密钥管理器,他们将拥有所有的密钥和所有的密码。

这就是为什么我们都需要使用最少特权的原则,定义的运行时身份应该只有它真正需要的权限。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68689837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档