我有一个 asp net core 项目,正在 kubernetes 集群中的 Linux 容器中部署。我的秘密安装在容器中的 /secrets 文件夹中,我找到了https://github.com/aspnet/Configuration/tree/master/src/Config.KeyPerFile并尝试使用builder.AddKeyPerFile("/secrets", false);来加载秘密。但这不起作用。配置[“File1”]返回空,其中File1是“/secrets”文件夹内的文件,其中包含其中一个秘密。
当我在服务代码中执行以下内容时,我能够读取秘密。
List<KeyValuePair<string, string>> secrets =
new List<KeyValuePair<string, string>>();
foreach (var secretFile in Directory.GetFiles("/secrets", "*.*", System.IO.SearchOption.AllDirectories))
{
secrets.Add(
new KeyValuePair<string, string>(
Path.GetFileName(secretFile), File.ReadAllText(secretFile)));
}
Run Code Online (Sandbox Code Playgroud)
我试图找出如何使用 builder.AddKeyPerFile 扩展方法来实现此目的。
问题:\n当我使用部署向导部署表格模型时。效果很好。但我们的问题是,我们有 20 个数据源,在部署时,我们需要提供 20 次凭据,因为它要求每个数据源提供凭据。这是非常痛苦的。这就是我们想要自动化部署的原因。
\n\n方法: \n我按照这篇文章https://notesfromthelifeboat.com/post/analysis-services-1-deployment/进行操作 ,我可以毫无错误地部署表格模型,但是当我刷新模型时。它失败并出现以下错误
\n\n无法将修改保存到服务器。返回错误:\'OLE DB 或 ODBC 错误:
\n\nThe credentials provided for the File source are invalid. (Source at \\\\share\\acaidatatempshare\\data\\lumeneventpropertiesexport.tsv.).\nOLE DB or ODBC error: The command has been canceled..\nOLE DB or ODBC error: The command has been canceled..\nOLE DB or ODBC error: The command has been canceled..\nRun Code Online (Sandbox Code Playgroud)\n\n我的数据源是 tsv 文件,下面是 model.bim 文件的数据源部分。正如您所看到的,它不会将凭证的密码保存在 model.bim、asdatabase 或 xmla 文件中。
\n\n\xe2\x80\xa6.\n\xe2\x80\xa6.\n {\n "type": "structured",\n "name": "File/\\\\\\\\Share\\\\AcaiDataTempShare\\\\Data\\\\LumenEventPropertiesExport tsv",\n "connectionDetails": {\n "protocol": "file",\n "address": …Run Code Online (Sandbox Code Playgroud) 我正在尝试获取特定用户定义身份的 msi 令牌。我们的应用服务有 2 个用户定义的身份,我想要一个代表用户分配的身份之一的令牌。
这是代码:
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(
"http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/&object_id=<ObjectId>&client_id=<clientId>");
req.Headers["Metadata"] = "true";
req.Method = "GET";
try
{
// Call /token endpoint
HttpWebResponse response = (HttpWebResponse)req.GetResponse();
// Pipe response Stream to a StreamReader, and extract access token
StreamReader streamResponse = new StreamReader(response.GetResponseStream());
string stringResponse = streamResponse.ReadToEnd();
Dictionary<string, string> list =
JsonConvert.DeserializeObject<Dictionary<string, string>>(stringResponse);
string accessToken = list["access_token"];
System.IO.File.WriteAllText(@".\Log.txt", accessToken);
}
catch (Exception e)
{
string errorText = String.Format("{0} \n\n{1}", e.Message, e.InnerException != null ? e.InnerException.Message : "Acquire token failed");
System.IO.File.WriteAllText(@".\Log.txt", …Run Code Online (Sandbox Code Playgroud) azure azure-active-directory azure-web-app-service azure-managed-identity