2

キーボルトとその中に秘密を作成するためのテンプレートがあります。私はまた、Vault URI、証明書のURL、および証明書の拇印の3つのものを必要とするサービスファブリックテンプレートを持っています。デプロイメントの主要なボールト値とリンクされたテンプレートのパラメータ

powershellでキーボルトと秘密を作成すると、出力からこれらの3つのものを手動でコピーし、サービスファブリックテンプレートのパラメータに貼り付けるのは簡単です。しかし、この証明書がサービスファブリッククラスタと同じライフサイクルを持っていることから、キーボルトテンプレートからサービスファブリックテンプレートにリンクすることが、私が望んでいることです。キーボルトと秘密を展開すると(btwは文字列にコード化された基数64であるキーですが、これをさらに別のキー格納域の秘密として持つことができます...)、パラメータとして3つの値を渡すことができます。

私には2つの質問があります。

  1. アームテンプレートで3つの値を取得するにはどうすればよいですか。 Powershellは、それらをキーボルトの「ResourceId」、シークレットの「Id」、シークレットの「Version」として出力します。私の試み:

    "sourceVaultValue": { 
        "value": "resourceId('Microsoft.KeyVault/vaults/', parameters('keyVaultName')" 
        }, 
    "certificateThumbprint": { 
        "value": "[listKeys(resourceId('secrets', parameters('secretName')), '2015-06-01')" 
        }, 
    "certificateUrlValue": { "value": "[concat('https://', parameters('keyVaultName'), '.vault.azure.net:443/secrets/', parameters('secretName'), resourceId('secrets', parameters('secretName')))]" 
    

しかしcertificateUrlValueが正しくありません。私はlistKeysの有無にかかわらず試してみましたが、いずれもうまくいかなかったのがわかります(拇印はcertUrl自体の中にあります)

  1. 正しい値を取得する場合は、それらをパラメータとして次のテンプレートに渡そうとします。問題のテンプレートには、私が渡したいものよりもかなり多くのパラメータがあります。ですから、parametersLink要素をパラメータファイルにリンクさせることは可能ですか?または、これを行うための意図した方法がありますか?

乾杯

+0

Ed - 秘密を作成するテンプレートの出力セクションの上にJSONスニペットがあることを確認してください。 –

+0

それはもともとではありませんでした。私は、リンクされたテンプレートのparameters要素にそれを持っていました。そして、それを出力セクションに移動してテストしました。彼らの前に「参照」が必要なことが私には起こりますか?私はatm thoをチェックすることはできません。私たちは明日再会する必要があります:) –

答えて

2

あなたが戻ってキーボードを取得するときに[OK]を、...これを試してみてください

1)URIの、あなたは次のように出力を使用することができます。

"secretUri": { 
    "type": "string", 
    "value": "[reference(resourceId('Microsoft.KeyVault/vaults/secrets', parameters('keyVaultName'), parameters('secretName'))).secretUri]" 
} 

のために#2、あなたはリンクといくつかの値を混ぜ合わせて一致させることはできません。それはどちらか一方です。

あなたがこれを行うことができますどのようにカップルの考え(それはあなたがあなたの展開の残りの部分を構築する方法に少し依存)...これを考えるために

  • 一つの方法ではなく、ネストのですSFは、彼らが代わりにSFテンプレートをネストの同じライフサイクル
  • を持っているので、同じテンプレートでそれらを展開巣KVテンプレートとSFテンプレートでその展開の出力を参照する...

脇から私はエレガントなことは考えられないネストされたデプロイメントに「ダイナミック」パラメタを渡すには、リンクの後ろにparamファイルを動的に書き込むか、すべてのパラメータをデプロイメントリソースに渡すしかありません。

HTH - LMKそうでなければ...

+0

クール、ありがとう。私は時々、私が始めた時に何かをする方法に悩まされ、それがうまく動かなくなるまで仕事をしたり、私が立ち往生するまで働いたりすると思います。あなたの代わりのソリューションはどちらも良いですが、私は新しいソリューションを試してみることを躊躇しないでください。 –

+0

秘密のオブジェクトからの 'secretUri'プロパティが秘密のドキュメントで詳述されていると仮定しますが、それを見つけることができませんでした。私はここでKV文書のためにどのようなプロパティをKVのリソースIDを取得するために使用するかを見るhttps://msdn.microsoft.com/en-us/library/azure/mt620026.aspxを見て、私は私がする必要があることがわかります'id'を使用することはできますが、動作しません。たとえば、vaultUriは次のように動作します。 '[reference(resourceId(' Microsoft.KeyVault/vaults/'、parameters(' keyVaultName '))).vaultUri]'、tenantIdと同様。 –

+0

これで要素が見つかりましたリソースエクスプローラから。リソースエクスプローラでプロパティ内にネストされた値のみを取得できるのはなぜですか? –

-3
Can't Reference a secret with dynamic id !!!! 
The obvious problems with this way of doing things are: 
Someone needs to type the cleartext password which means: 
it needs to be known to anyone who provisions the environment and how do I feed it into an automated environment deployment? If I store the password in a parameter… ??????? 
    "variables": { 
    "tenantPassword": { 
     "reference": { 
     "keyVault": { 
      "ID": "[concat(subscription().id,'/resourceGroups/',parameters('keyVaultResourceGroup'),'/providers/Microsoft.KeyVault/vaults/', parameters('VaultName'))]" 
     }, 
     "secretName": "tenantPassword" 
     } 
    } 
    }, 
+0

[よくある回答を書くにはどうすればいいですか?](https://stackoverflow.com/help/how-to-answer)のスタックオーバーフローのガイドラインを読むことをお勧めします。 – RobC

関連する問題