Exemple #1
0
        public void ShouldInstantiateConfigurationProvider()
        {
            var mockGrpcClient = new Mock <SecretManagerServiceClient>();

            mockGrpcClient
            .Setup(e => e.ListSecretsAsync(new ProjectName(PROJECT_NAME), null, null, null))
            .Returns(new MockPagedEnumerable());


            var secretResponse = new AccessSecretVersionResponse()
            {
                Payload = new SecretPayload {
                    Data = ByteString.FromBase64(System.Convert.ToBase64String(Encoding.UTF8.GetBytes("value")))
                }
            };

            mockGrpcClient
            .Setup(e => e.AccessSecretVersionAsync(new SecretVersionName(PROJECT_NAME, "param1", "latest"), null))
            .Returns(Task.FromResult(secretResponse));

            var configurationOptions = new SecretManagerConfigurationOptions {
                ProjectName = PROJECT_NAME
            };
            var configurationSource = new SecretManagerConfigurationSource(configurationOptions);

            var provider = new SecretManagerConfigurationProvider(mockGrpcClient.Object, configurationSource);

            provider.Load();

            Assert.True(provider.TryGet("param1", out var value));
            Assert.Equal("value", value);
        }
Exemple #2
0
    public void AddsSecretVersions()
    {
        string        data          = "my secret data";
        SecretName    secretName    = _fixture.Secret.SecretName;
        SecretVersion secretVersion = _sample.AddSecretVersion(
            projectId: secretName.ProjectId, secretId: secretName.SecretId,
            data: data);

        SecretManagerServiceClient  client = SecretManagerServiceClient.Create();
        AccessSecretVersionResponse result = client.AccessSecretVersion(secretVersion.SecretVersionName);

        Assert.Equal(data, result.Payload.Data.ToStringUtf8());
    }
Exemple #3
0
 public string getDbString()
 {
     if (dbConnectionString != null)
     {
         return(this.dbConnectionString);
     }
     else
     {
         const string                secretId  = "DatabaseConnectionString";
         const string                versionId = "3";
         SecretVersionName           secret    = new SecretVersionName(projectId, secretId, versionId);
         AccessSecretVersionResponse result    = client.AccessSecretVersion(secret);
         this.dbConnectionString = result.Payload.Data.ToStringUtf8();
         return(this.dbConnectionString);
     }
 }
Exemple #4
0
        /// <summary>
        /// GetSecretValue
        /// Retrieve latest secret value
        /// </summary>
        /// <param name="secretKey"></param>
        /// <returns></returns>
        public string GetSecretValue(string secretKey)
        {
            // Create the client.
            SecretManagerServiceClient client = SecretManagerServiceClient.Create();

            // Build the resource name.
            SecretVersionName secretVersionName = new SecretVersionName(_configuration.GcpProjectId, secretKey, "latest");

            // Call the API.
            AccessSecretVersionResponse result = client.AccessSecretVersion(secretVersionName);

            // Convert the payload to a string. Payloads are bytes by default.
            string payload = result.Payload.Data.ToStringUtf8();

            return(payload);
        }
Exemple #5
0
        private string GetDBUserName()
        {
            // Create the client.
            SecretManagerServiceClient client = SecretManagerServiceClient.Create();

            // Build the resource name.
            SecretVersionName secretVersionName = new SecretVersionName(
                "dev-office-294516",
                "db-user-name",
                "1");

            // Call the API.
            AccessSecretVersionResponse result = client.AccessSecretVersion(secretVersionName);

            // Convert the payload to a string. Payloads are bytes by default.
            return(result.Payload.Data.ToStringUtf8());
        }
    public String AccessSecretVersion(
        string projectId = "my-project", string secretId = "my-secret", string secretVersionId = "123")
    {
        // Create the client.
        SecretManagerServiceClient client = SecretManagerServiceClient.Create();

        // Build the resource name.
        SecretVersionName secretVersionName = new SecretVersionName(projectId, secretId, secretVersionId);

        // Call the API.
        AccessSecretVersionResponse result = client.AccessSecretVersion(secretVersionName);

        // Convert the payload to a string. Payloads are bytes by default.
        String payload = result.Payload.Data.ToStringUtf8();

        return(payload);
    }
Exemple #7
0
        string GetDBPassword()
        {
            // Create the client.
            SecretManagerServiceClient client = SecretManagerServiceClient.Create();

            // Build the resource name.
            SecretVersionName secretVersionName = new SecretVersionName(
                Environment.GetEnvironmentVariable("PROJECT"),
                Environment.GetEnvironmentVariable("SECRET_ID"),
                Environment.GetEnvironmentVariable("SECRET_VER"));

            // Call the API.
            AccessSecretVersionResponse result = client.AccessSecretVersion(secretVersionName);

            // Convert the payload to a string. Payloads are bytes by default.
            return(result.Payload.Data.ToStringUtf8());
        }
Exemple #8
0
        public SecretManagerConfigurationProviderTests()
        {
            _testSecrets = new List <Secret>
            {
                new Secret
                {
                    SecretName = new SecretName(_secretProjectName, "SecretId1")
                },
                new Secret
                {
                    SecretName = new SecretName(_secretProjectName, "SecretId2")
                },
                new Secret
                {
                    SecretName = new SecretName(_secretProjectName, "SecretId3")
                },
                new Secret
                {
                    SecretName = new SecretName(_secretProjectName, "SecretId4")
                }
            };
            _pagedResponse = new PagedEnumerableHelper <ListSecretsResponse, Secret>(_testSecrets);

            _mockClient = new Mock <SecretManagerServiceClient>(MockBehavior.Strict);
            _mockClient.Setup(x => x.ListSecrets(It.Is <ProjectName>(pn => pn.ProjectId == _projectName), null, null, null))
            .Returns(_pagedResponse);

            foreach (var secret in _testSecrets)
            {
                var response = new AccessSecretVersionResponse
                {
                    Payload = new SecretPayload
                    {
                        Data = Google.Protobuf.ByteString.CopyFromUtf8($"{secret.SecretName.SecretId}-Value")
                    }
                };
                _mockClient.Setup(
                    x => x.AccessSecretVersionAsync(
                        It.Is <SecretVersionName>(svn => svn.ProjectId == secret.SecretName.ProjectId &&
                                                  svn.SecretId == secret.SecretName.SecretId &&
                                                  svn.SecretVersionId == "latest"), null))
                .ReturnsAsync(response);
            }

            _target = new SecretManagerConfigurationProvider(_mockClient.Object, new ProjectName(_projectName), new DefaultSecretManagerConfigurationLoader());
        }
        public void StoreSecret([FromForm] string projectId, [FromForm] string secretId)
        {
            IDatabase db = Connection.GetDatabase();

            db.StringSet("name", "redis");
            Console.WriteLine(db.StringGet("name"));
            //call SDK
            SecretManagerServiceClient client = SecretManagerServiceClient.Create();

            // Build the parent project name.
            ProjectName projectName = new ProjectName(projectId);

            // Build the secret to create.
            Secret secret = new Secret
            {
                Replication = new Replication
                {
                    Automatic = new Replication.Types.Automatic(),
                },
            };

            Secret createdSecret = client.CreateSecret(projectName, secretId, secret);

            // Build a payload.
            SecretPayload payload = new SecretPayload
            {
                Data = ByteString.CopyFrom("my super secret data", Encoding.UTF8),
            };

            // Add a secret version.
            SecretVersion createdVersion = client.AddSecretVersion(createdSecret.SecretName, payload);

            // Access the secret version.
            AccessSecretVersionResponse result = client.AccessSecretVersion(createdVersion.SecretVersionName);

            // Print the resultszxcvbnj
            //
            // WARNING: Do not print secrets in production environments. This
            // snippet is for demonstration purposes only.
            string data = result.Payload.Data.ToStringUtf8();

            Console.WriteLine($"Plaintext: {data}");
        }
Exemple #10
0
        public string GetGoogleClientSecret()
        {
            SecretManagerServiceClient client = SecretManagerServiceClient.Create();

            // Build the resource name.
            SecretVersionName secretVersionName = new SecretVersionName("protean-bus-312220", "ApiClientId", "3");

            // Call the API.
            AccessSecretVersionResponse result = client.AccessSecretVersion(secretVersionName);

            // Convert the payload to a string. Payloads are bytes by default.
            String payload = result.Payload.Data.ToStringUtf8();

            dynamic keys = JsonConvert.DeserializeObject(payload);

            JObject jObject = JObject.Parse(payload);
            JToken  jKey    = jObject["Authentication:Google:ClientSecret"].ToString();

            return(jKey.ToString());
        }
Exemple #11
0
        public string GetSecret()
        {
            string secretName = "SqlUserSecret";
            //string region = Configuration.GetValue<string>("AWSRegion");
            var projectId = Configuration.GetValue <string>("projectid");

            SecretManagerServiceClient client = SecretManagerServiceClient.Create();

            // Build the resource name.
            SecretVersionName secretVersionName = new SecretVersionName(projectId, secretName, "latest");

            // Call the API.
            AccessSecretVersionResponse result = client.AccessSecretVersion(secretVersionName);

            // Convert the payload to a string. Payloads are bytes by default.
            String payload = result.Payload.Data.ToStringUtf8();

            return(payload);
            // Your code goes here.
        }
    public void Quickstart(string projectId = "my-project", string secretId = "my-secret")
    {
        // Create the client.
        SecretManagerServiceClient client = SecretManagerServiceClient.Create();

        // Build the parent project name.
        ProjectName projectName = new ProjectName(projectId);

        // Build the secret to create.
        Secret secret = new Secret
        {
            Replication = new Replication
            {
                Automatic = new Replication.Types.Automatic(),
            },
        };

        Secret createdSecret = client.CreateSecret(projectName, secretId, secret);

        // Build a payload.
        SecretPayload payload = new SecretPayload
        {
            Data = ByteString.CopyFrom("my super secret data", Encoding.UTF8),
        };

        // Add a secret version.
        SecretVersion createdVersion = client.AddSecretVersion(createdSecret.SecretName, payload);

        // Access the secret version.
        AccessSecretVersionResponse result = client.AccessSecretVersion(createdVersion.SecretVersionName);

        // Print the results
        //
        // WARNING: Do not print secrets in production environments. This
        // snippet is for demonstration purposes only.
        string data = result.Payload.Data.ToStringUtf8();

        Console.WriteLine($"Plaintext: {data}");
    }
Exemple #13
0
        public void Should_FetcHierarchicalSecrets_When_LoadIsCalled()
        {
            var googleName = "Multi__Level__Secret";
            var dotNetName = "Multi:Level:Secret";
            var value      = "SecretValue";

            var response = new AccessSecretVersionResponse
            {
                Payload = new SecretPayload
                {
                    Data = Google.Protobuf.ByteString.CopyFromUtf8(value)
                }
            };

            _mockClient.Setup(
                x => x.AccessSecretVersionAsync(
                    It.Is <SecretVersionName>(svn => svn.ProjectId == _secretProjectName &&
                                              svn.SecretId == googleName &&
                                              svn.SecretVersionId == "latest"), null))
            .ReturnsAsync(response);

            _testSecrets.Add(new Secret
            {
                SecretName = new SecretName(_secretProjectName, googleName),
            });
            var pagedResponse = new PagedEnumerableHelper <ListSecretsResponse, Secret>(_testSecrets);

            _mockClient.Setup(x => x.ListSecrets(It.Is <ProjectName>(pn => pn.ProjectId == _projectName), null, null, null))
            .Returns(pagedResponse);


            _target.Load();

            Assert.True(_target.TryGet(dotNetName, out var configValue));
            Assert.Equal(value, configValue);
        }
Exemple #14
0
        public string GetSecret(string key)
        {
            AccessSecretVersionResponse result = client.AccessSecretVersion($"projects/807819608558/secrets/{key}/versions/latest");

            return(result.Payload.Data.ToStringUtf8());
        }