AWSSecretsManagerConfigurationExtensions

2025-12-07 0 169

存储库包含Microsoft.extensions.configuration的提供商,该提供商检索存储在AWS Secrets Manager中的秘密。

概述

每个应用程序都有某种设置,这些设置绝不应该被检查到源控件中,例如数据库连接字符串或某些外部API凭据。但是,您的应用程序需要该设置才能正确执行其工作。

.NET核心本地支持从不同来源摄入设置。这允许根据当前环境自定义应用程序。典型的示例是可以变化的数据库的连接字符串,以便每个环境可以连接到特定数据库。

从事.NET Core的开发人员通常会在其开发环境中利用秘密经理。另一方面,生产环境的设置通常存储在环境变量中。

AWS Secrets Manager为问题提供了无服务器的托管解决方案。

kralizek.extensions.configuration.awssecretsmanager提供了一种方便的方法来访问您存储在AWS Secrets Manager中的秘密。

这就是您的ASP.NET Core 2.0应用程序的外观。注意config.AddSecretsManager();在代表中传递给了ConfigureAppConfiguration方法。

 public class Program
{
    public static void Main ( string [ ] args )
    {
        BuildWebHost ( args ) . Run ( ) ;
    }

    public static IWebHost BuildWebHost ( string [ ] args ) =>
        WebHost . CreateDefaultBuilder ( args )
                . ConfigureAppConfiguration ( ( hostingContext , config ) =>  
                {
                    config . AddSecretsManager ( ) ;
                } )
                . UseStartup < Startup > ( )
                . Build ( ) ;
}

此示例中也可以使用此代码。

您也可以在经典的控制台应用程序中使用AddSecretsManager

 static void Main ( string [ ] args )
{
    var builder = new ConfigurationBuilder ( ) ;
    builder . AddSecretsManager ( ) ;

    var configuration = builder . Build ( ) ;

    Console . WriteLine ( \"Hello World!\" ) ;
}

此示例中也可以使用此代码。

注意:上面的片段假定某些AWS凭据默认情况下可用于您的应用程序。在这里,您可以看到如何设置环境。

社区提到

  • ASP.NET核心的安全秘密存储与AWS Secrets Manager(第1部分)Andrew Lock
  • ASP.NET核心的安全秘密存储与AWS Secrets Manager(第2部分)Andrew Lock
  • 有用的工具来管理Jerrie Pelser的应用程序秘密
  • 使用AWS Secrets Manager在.NET中正确存储秘密
  • 米兰·乔瓦诺维奇(MilanJovanović
  • 云基础:尼克·奇帕斯(Nick Chapsas)的C#开发人员的AWS服务

亚马逊弹性Kubernetes服务(EKS)

为了对AWS Secret Manager的请求进行身份验证,POD需要使用IAM角色来授予您访问您的秘密。亚马逊介绍了IAM的服务帐户角色,以便在没有第三方解决方案的情况下实现这一目标。

但是,此功能需要安装一个额外的软件包,以通过反射加载。

dotnet add AWSSDK.SecurityToken

定制

该库提供了自定义如何从AWS Secrets Manager检索设置值并将其添加到配置提供商中的可能性。

AWS证书

默认情况下,该库让AWS SDK决定应根据可用设置使用哪些凭据。您可以通过提供自己的凭据集来自定义。

这是一些样本。

基本证书

您可以使用BasicAWSCredentials类直接提供AWS访问和秘密键。

请注意,您应该避免这种情况。毕竟,该库的目的是将我们的秘密从源代码中删除。

 var credentials = new BasicAWSCredentials ( \"my-accessKey\" , \"my-secretKey\" ) ;
builder . AddSecretsManager ( credentials : credentials ) ; 

使用连接到配置文件(旧)的凭据

您可以使用StoredProfileAWSCredentials类使用特定配置文件。

请注意, StoredProfileAWSCredentials已被标记为过时,并将在以后的版本中删除。

 var credentials = new StoredProfileAWSCredentials ( \"my_profile_name\" ) ;
builder . AddSecretsManager ( credentials : credentials ) ; 

使用连接到配置文件(当前)的凭据

您可以使用CredentialProfileStoreChain类从可用的不同来源获取配置文件。

 var chain = new Amazon . Runtime . CredentialManagement . CredentialProfileStoreChain ( ) ;

if ( chain . TryGetAWSCredentials ( \"my_profile_name\" , out var credentials ) )
{
    builder . AddSecretsManager ( credentials ) ;
}

您可以在这里看到一个示例。

AWS地区

默认情况下,此库获取与默认配置文件相关的AWS区域中注册的秘密。您可以通过经过所需区域来更改它。

 builder . AddSecretsManager ( region : RegionEndpoint . EUWest1 ) ;

您可以在这里看到一个示例。

检索之前过滤秘密

最佳实践表明,您使用IAM角色限制您的应用程序可以访问的秘密列表。这并不总是可行的,尤其是在较旧的设置中(例如,位于同一EC2实例上的多个应用程序通过EC2实例配置文件共享权限)。

在这种情况下,仍然可以通过提供要在每个返回的秘密上应用的谓词来限制您的应用程序应检索哪些秘密。

注意检索可用秘密列表及其秘密价值的列表发生在两个不同的时刻,因此您可以防止应用程序访问您不需要的秘密的价值。

 var acceptedARNs = new [ ]
{
    \"MySecretARN1\" ,
    \"MySecretARN2\" ,
    \"MySecretARN3\" ,
} ;

builder . AddSecretsManager ( configurator : options =>
{
    options . SecretFilter = entry => acceptedARNs . Contains ( entry . ARN ) ;
} ) ;

您可以在这里看到一个示例。

提前定义秘密列表(无需清单秘密许可)

安全最佳实践有时会阻止在生产环境中列出秘密。结果,可以定义一个代替秘密过滤器的秘密列表。使用此方法时,库只会检索给定的已AcceptedSecretArns列表中的ARN或名称的秘密。

 var acceptedARNs = new [ ]
{
    \"MySecretFullARN-abcxyz\" ,
    \"MySecretPartialARN\" ,
    \"MySecretUniqueName\" ,
} ;

builder . AddSecretsManager ( configurator : options =>
{
    options . AcceptedSecretArns = acceptedARNs ;
} ) ;

更改如何将值添加到配置

有时我们无法控制整个系统。也许我们被迫使用其他使用其他约定的人定义的秘密。

在这种情况下,您可以提供每次发现值时都会调用的函数。此功能允许您自定义应使用哪个密钥。

例如,在这里,我们将所有传入的钥匙转换为上情况

 builder . AddSecretsManager ( configurator : options =>
{
    options . KeyGenerator = ( entry , key ) => key . ToUpper ( ) ;
} ) ;

您可以在这里看到一个示例。

自定义getsecretvaluerequest

有时,我们可能想请求其他版本的秘密或指定版本阶段。

在这种情况下,您可以提供一个函数,该功能更新GetSecretValueRequest ,该功能用于在发送请求之前从AWS检索秘密。

例如,在这里,我们在每个GetSecretValueRequest中添加了\"AWSCURRENT\" VersionStage

 builder . AddSecretsManager ( configurator : options =>
{
    options . ConfigureSecretValueRequest = ( request , context ) => request . VersionStage = \"AWSCURRENT\" ;
} ) ;

自定义AmazonSecretsManagerConfig,例如使用LocalStack

在某些情况下,您可能想自定义如何构建AmazonSecretsManagerConfig,例如,当您想在本地开发过程中使用LocalStack时。在这种情况下,您应该自定义ServiceUrl。

 builder . AddSecretsManager ( configurator : options =>
{
    options . ConfigureSecretsManagerConfig = c => {
        c . ServiceUrl = \"http://loca**lhost*:4584\" // The url that\'s used by localstack
    } ;
} ) ; 

版本控制

该库遵循公开版本的语义版本2.0.0(发布给nuget.org)。

如何构建

该项目将Cake用作制造引擎。

如果您想在本地构建此项目,只需执行build.cake脚本即可。

您可以使用蛋糕作者创建的.NET工具并使用它来执行构建脚本。

dotnet tool install - g Cake.Tool
dotnet cake

随着时间的流逝,观星者

下载源码

通过命令行克隆项目:

git clone https://github.com/Kralizek/AWSSecretsManagerConfigurationExtensions.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 开发教程 AWSSecretsManagerConfigurationExtensions https://www.zuozi.net/31915.html

supervisor
上一篇: supervisor
threema web
下一篇: threema web
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务