我目前有一个使用自定义活动的DFv2管道,我正在尝试弄清楚如何读取传递给该自定义活动的安全字符串。
我要这样做的原因是为了使我的自定义活动可以将此安全字符串添加为对外部API的请求的一部分。
这是我的自定义活动的简化版本:
{
"name": "CustomActivity",
"type": "Custom",
"policy": {
"timeout": "7.00:00:00",
"retry": 0,
"retryIntervalInSeconds": 30,
"secureOutput": false,
"secureInput": false
},
"typeProperties": {
"command": "CustomCode.exe",
"resourceLinkedService": {
"referenceName": "AzureStorageLinkedService",
"type": "LinkedServiceReference"
},
"folderPath": "foldercontainingcustomcode",
"extendedProperties": {
"url": "sampleUrl",
"apiKey": {
"type": "SecureString",
"value": "**********"
}
},
"referenceObjects": {
"linkedServices": [
{
"referenceName": "AzureStorageLinkedService",
"type": "LinkedServiceReference"
}
],
"datasets": [
]
}
},
"linkedServiceName": {
"referenceName": "AzureBatchLinkedService",
"type": "LinkedServiceReference"
}
}
以下是一些示例自定义代码:
class Program
{
static void Main(string[] args)
{
dynamic activity = JsonConvert.DeserializeObject(File.ReadAllText("activity.json"));
dynamic apiKey = activity.typeProperties.extendedProperties.apiKey.value;
}
}
我的问题是:由于直接读取apiKey只会读取字符串“ *****”,我该如何实现?
答案 0 :(得分:1)
出于安全原因,在任何情况下,数据工厂都绝不会返回安全字符串。
如果要在自定义exe中使用密钥,可以将其保留为JSON中的加密纯字符串,并使用证书或对称密钥在代码中对其进行解密。或者您可以引用Azure Key Vault,以便您也可以在代码中访问它。