标签: secret-manager

Terraform RDS 数据库凭据

我正在尝试使用 AWS 秘密管理器来声明 RDS 管理员凭据。

  1. 在变量 RdsAdminCred 中将 rds.tf 中的凭据声明为键/值对
  2. 也在同一个 tf 文件中声明秘密
variable "RdsAminCred" {
    default = {
        username = "dbadmin"
        password = "dbadmin#02avia"
    }
    type = map(string)
}

resource "aws_secretsmanager_secret" "RdsAminCred" {
  name = "RdsAminCred"
}
resource "aws_secretsmanager_secret_version" "RdsAminCred" {
  secret_id     = aws_secretsmanager_secret.RdsAminCred.id
  secret_string = jsonencode(var.RdsAminCred)
}
Run Code Online (Sandbox Code Playgroud)
  1. 我不确定如何使用下面声明中的秘密字符串来替换用户名和密码的硬编码值。
resource "aws_db_instance" "default" {
  identifier            = "testdb"
  allocated_storage    = 20
  storage_type         = "gp2"
  engine               = "mysql"
  engine_version       = "5.7"
  instance_class       = "db.t2.medium"
  name                 = "mydb"
 
  username             = "dbadmin"
  password             = …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services terraform secret-manager

25
推荐指数
3
解决办法
4万
查看次数

Localstack 抛出请求中包含的安全令牌无效

我将 Localstack 与 Testcontainers((testcontainers:localstack:1.15.2 )) 一起使用进行集成测试,并在测试设置中设置秘密,如下所示:代码示例

 import com.amazonaws.services.secretsmanager.AWSSecretsManager;
import com.amazonaws.services.secretsmanager.AWSSecretsManagerClientBuilder;
import com.amazonaws.services.secretsmanager.model.CreateSecretRequest; 
import org.junit.Rule;
import org.junit.Test;
import org.testcontainers.containers.localstack.LocalStackContainer;
import org.testcontainers.utility.DockerImageName; 
import static org.testcontainers.containers.localstack.LocalStackContainer.Service.SECRETSMANAGER;

public class QueueServiceTest {

    DockerImageName localstackImage = DockerImageName.parse("localstack/localstack:0.11.3");
    @Rule
    public LocalStackContainer localstack = new LocalStackContainer(localstackImage)
            .withServices(SECRETSMANAGER).withEnv("LOCALSTACK_HOSTNAME", "localhost").withEnv("HOSTNAME", "localhost");
    @Test
    public void someTestMethod() {
        AWSSecretsManager secretsManager = AWSSecretsManagerClientBuilder.standard()
                .withCredentials(localstack.getDefaultCredentialsProvider()).withRegion(localstack.getRegion())
                .build();

        String secretString = "usrnme";
        CreateSecretRequest request = new CreateSecretRequest().withName("test")
                .withSecretString(secretString)
     .withRequestCredentialsProvider(localstack.getDefaultCredentialsProvider());
        secretsManager.createSecret(request);
    }

}
Run Code Online (Sandbox Code Playgroud)

现在测试崩溃并出现错误:

com.amazonaws.services.secretsmanager.model.AWSSecretsManagerException:请求中包含的安全令牌无效。(服务:AWSSecretsManager;状态代码:400;错误代码:UnrecognizedClientException;请求 ID:314b0dee-69ed-4b08-9cd0-2618b8e14b25;代理:null)

在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1819) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleServiceErrorResponse(AmazonHttpClient.java:1403) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest (AmazonHttpClient.java:1372) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1145) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:802) …

amazon-web-services secret-manager testcontainers localstack

12
推荐指数
1
解决办法
2万
查看次数

ef 核心迁移不能使用秘密管理器

当我创建 .net core web 应用程序时,我在测试期间使用了秘密管理器。我通常能够创建一个新的 web 项目(mvc 和 web api),右键单击该项目并选择“管理用户机密”。这将打开一个 json 文件,我在其中添加了机密。然后我在我的 startup.cs 中使用它,如下所示:

services.AddDbContext<ApplicationDbContext>(options =>
    options.UseMySql(Configuration["connectionString"]));
Run Code Online (Sandbox Code Playgroud)

该网站在此方面运行良好,并且可以很好地连接到数据库。但是,当我尝试使用诸如 ef 核心迁移命令时add-migration,它们似乎无法从秘密管理器访问连接字符串。我收到错误消息“连接字符串不能为空”。当我Configuration["connectionString"]用实际字符串硬编码时,错误消失了。我已经在线检查并检查了 .csproj 文件,它们已经包含以下几行:

<UserSecretsId>My app name</UserSecretsId>
Run Code Online (Sandbox Code Playgroud)

然后:

<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.1" />
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0" />
Run Code Online (Sandbox Code Playgroud)

是否需要添加任何内容以便迁移可以访问连接字符串?

更新

我在上下文类中只有一个构造函数:

public ApplicationDBContext(DbContextOptions<ApplicationDBContext> options) : base(options)
{
}
Run Code Online (Sandbox Code Playgroud)

secret-manager visual-studio-2017 asp.net-core-2.0 entity-framework-core-migrations

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

安全存储 Blazor Web assembly 应用程序的应用程序机密

我正在寻找在 Blazor WebAssembly 应用程序中安全存储应用程序机密的方法。我们可以在下面的 MSDN 文档中找到服务器端应用程序的详细信息。

https://learn.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-3.1&tabs=windows

我们如何将这些秘密用于完全在客户端浏览器中运行的 Blazor WebAssembly 应用程序?

我的基本场景是,需要将密码、产品密钥(许可密钥)信息保留在应用程序代码之外。例如,我们在 Program.cs 的静态 main 方法中加载许可证。

https://i.stack.imgur.com/kCrV1.png

 public class Program
    {
        public static async Task Main(string[] args)
        {
            //want to access the product key here and need to avoid hardcoding
            SomeThirdPartyLibrary.RegisterLicense("product-key");
            var builder = WebAssemblyHostBuilder.CreateDefault(args);
            builder.RootComponents.Add<App>("app");

            builder.Services.AddTransient(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });

            await builder.Build().RunAsync();
        }
Run Code Online (Sandbox Code Playgroud)

我搜索了 blazor 的文档,但找不到任何详细信息。请帮助我找到在 Blazor WebAssembly 中解决此问题的推荐方法。

(对于服务器端,我们有多种选择,但对于客户端,推荐的方式可能是)

secret-manager blazor blazor-webassembly

10
推荐指数
1
解决办法
5306
查看次数

如何在 Express 项目中使用 AWS Secrets Manager 来获取凭证?

我正在尝试从我的凭证和机密迁移到我的 Express 项目中的 AWS Secrets Manager。

当前结构有一个 config.json 文件,该文件在 express 应用程序时同步加载。

但是当我尝试从 AWS API 获取凭证时,流程将不起作用。因为在我以前的方法中,文件是同步加载的,因此,当应用程序启动时,所有凭证都可用,但当从 AWS API 获取凭证时,则不可能。

我想了解在 Express/Node 项目中需要 API 调用以获取凭据的任何秘密管理器的理想方法是什么。

amazon-web-services node.js express secret-manager aws-secrets-manager

7
推荐指数
1
解决办法
696
查看次数

Hashicorp Vault用于文件存储?

我希望保存许​​多相当大的文档,从1M到可能更大的多个数量级。我知道Hashicorp的保险柜非常适合秘密密钥和较小的值。我很乐意从中获得“玻璃休息”功能和关键滚动功能。

有没有人对带有大型秘密的保险柜进行基准测试?我以为我不会在Vault中的秘密数量上遇到麻烦?

file-management app-secret secret-manager hashicorp-vault

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

Secret Manager 与环境变量

使用 Secret Manager 代替环境变量来使用 Visual Studio 2017 开发 ASP.NET Core、Azure Functions、Azure WebJobs 和 Xamarin 项目是否有任何优势?

也许是问同一问题的另一种方式,但哪一种是更新/更优选的方法?

asp.net visual-studio secret-manager azure-functions visual-studio-2017

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

在 AWS lambda node.js 中获取秘密

任何人都可以提供一个简单、完整的 node.js lambda 函数,我可以在其中从机密管理器获取机密并使用它吗?我在异步/等待过程中挣扎。我已经尝试了其他帖子中的一些建议,但最后所有这些建议都无法真正使用 main 函数中的秘密。例如,我有一个主函数并调用第二个函数来检索秘密:

xxx =retrieve_secret('mysecret');

然后,在retrieve_secret 函数中,我可以检索秘密,我可以使用console.log 打印它,但是当我尝试在main 函数中使用它时,它显示“Promise”。

请帮忙。提前致谢!

amazon-web-services node.js aws-lambda secret-manager

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