2

Octopus Deploy から自動化されたプロセスで Azure Service Fabric クラスターをデプロイしようとしています。新しいクラスターをデプロイするプロセスの一部には、Azure Key Vault を作成し、そのクラスターに固有の証明書やその他のシークレットを設定することが含まれます。

Key Vault をデプロイするための ARM テンプレートと、クラスターをデプロイするための別のテンプレートがあります。シークレット (一般的に) は ARM テンプレートの一部として Azure Key Vault にデプロイできることがわかりましたが、シークレットが証明書である場合にそれを行う方法に関する情報は見つかりませんでした。理想的には、クラスター固有の証明書を作成してデプロイの一部として Key Vault にデプロイし、クラスターのデプロイ中にそれらの証明書にアクセスできるようにしたいと考えていますが、Key Vault のプロビジョニング時に証明書をデプロイできるだけでも十分です。足りる。

4

2 に答える 2

1

SF 展開で使用される証明書は、実際には KeyVault のシークレットに詰め込まれた base64 でエンコードされた証明書です。そのため、SF 展開のために使用する場合は、証明書リソースではなく、実際にはシークレットリソースを作成します。

必要なものはすべて揃っているように思えます。keyvault をセットアップするときに、base64 でエンコードされた blob をシークレット値に入れるだけです。

その助け?

于 2016-10-24T17:19:20.180 に答える
0

キー ストアから VM への証明書の展開は、特定の json ドキュメントとして保存する必要があります。ARM テンプレート内からは実行していませんが、Powershell では次を使用します。

 $cert = Get-Content $certLocation -Encoding Byte;
    $cert = [System.Convert]::ToBase64String($cert);

    $json = @"
    {
        "data" : "$cert",
        "dataType": "pfx",
        "password": "$password"
    } 
"@

    $package = [System.Text.Encoding]::UTF8.GetBytes($json);
    $package = [System.Convert]::ToBase64String($package);
    $secret = ConvertTo-SecureString -String $package -AsPlainText -Force;

理論的には、これを取得して $secret 値を ARM テンプレートに挿入できれば、目的を達成できるはずです。

この時点での $password はプラン テキストであり、セキュリティで保護された文字列としてではなく、Azure コンピューティングがそれを使用して証明書をインストールできることに注意してください。

次に、クラスター ARM テンプレートで、VMSS OS プロファイルの証明書とキー コンテナーを参照できます。

 "osProfile": {
            "adminUsername": "[parameters('adminUsername')]",
            "adminPassword": "[parameters('adminPassword')]",
            "computernamePrefix": "[parameters('vmNodeType0Name')]",
            "secrets": [
                            {
                                "sourceVault": {
                                    "id": "[parameters('sourceVault')]"
                                },
                                "vaultCertificates": [
                                    {
                                        "certificateStore": "My",
                                        "certificateUrl": "[parameters('clusterCertificateUrl')]"
                                    },
                                    {
                                        "certificateStore": "My",
                                        "certificateUrl": "[parameters('adminCertificateUrl')]"
                                    }
                                ]
                            }
                        ]
          }

次に、Service Fabric リソースのプロパティの下にある同じ ARM テンプレート内で、使用する特定の証明書を参照します。

"certificate": {
    "thumbprint": "[parameters('clusterCertificateThumbPrint')]",
    "x509StoreName": "My"
},
"clientCertificateCommonNames": [],
"clientCertificateThumbprints": [{
    "CertificateThumbprint": "[parameters('adminCertificateThumbPrint')]",
    "IsAdmin": true
}],

ここで役立つ場合は、githubでの私の試みへのリンクです

于 2016-10-24T15:58:13.637 に答える