Azure Key Vault Connector 1.1 の例 - Mule 4

始める前に

  • Java 8 または 11

  • Anypoint Studio 7.5 以降

  • Mule Runtime Engine (Mule) 4.3.0 以降

  • DataWeave

  • Azure Key Vault インスタンスへのアクセス

接続の設定

接続を保護するには、接続項目の値を指定する必要があります。次の手順を実行します。

接続の設定ファイルを作成する

接続のプロパティが含まれる設定ファイルを作成します。

  1. /src/main/resources/​ フォルダー内に ​mule-app.properties​ という名前のファイルを作成します。

  2. mule-app.properties​ ファイルに、次のような接続の一連のプロパティを作成します。括弧で囲まれたテキスト (括弧を含む) を各自の設定の適切な値に置き換えます。

    azure.keyVault.tenantId=<tenant ID>
    azure.keyVault.clientId=<client ID>
    azure.keyVault.clientSecret=<client secret>
    azure.keyVault.vaultName=<vault name>
    
    azure.keyVault.secret=<secret>
    azure.keyVault.key=<key>
    azure.keyVault.certificate=<certificate>
    
    your-directory=<your directory>

プロパティファイルの作成についての詳細は、​「プロパティプレースホルダーの設定」​を参照してください。

接続のグローバル要素を設定する

接続のグローバル要素を設定します。

  1. 新しい Mule プロジェクトを作成します。

  2. [Mule Palette (Mule パレット)]​ ビューで、​[Search in Exchange (Exchange 内を検索)]​ をクリックして「​Azure Key Vault​」と入力します。

  3. [Selected modules (選択したモジュール)]​ セクションに ​[Azure Key Vault Connector]​ を追加し、​[Finish (完了)]​ をクリックします。

  4. [Global Elements (グローバル要素)]​ タブをクリックし、​[Create (作成)]​ をクリックします。

  5. [Connector Configuration (コネクタ設定)] > [Azure Key Vault Config (Azure Key Vault 設定)]​ を選択し、​[OK]​ をクリックします。

  6. 値を入力して、接続認証種別を設定します。

  7. [Test Connection (接続をテスト)]​ ボタンをクリックして、Azure Key Vault API と接続されていることを確認します。ポップアップに成功メッセージが表示されます。

  8. [OK]​ をクリックします。

プロパティファイルのグローバル要素を設定する

mule-app.properties​ ファイルのグローバル要素を設定して、Mule がその場所を認識できるようにします。

  1. [Global Elements (グローバル要素)]​ タブをクリックし、​[Create (作成)]​ をクリックします。

  2. [Choose Global Type (グローバル種別の選択)]​ ダイアログで、​[Configuration properties (設定プロパティ)]​ を選択し、​[OK]​ をクリックします。

  3. [File (ファイル)]​ 項目に「​mule.app.properties​」と入力します。

  4. [OK]​ をクリックします。

シークレットの暗号化と復号化

この Mule フローは、シークレットを取得し、設定ファイルで提供された鍵を使用してシークレットを暗号化してから復号化し、プロセス全体をログに記録します。

この例では、次のコンポーネントを使用します。

  • HTTP Listener
    HTTP 要求からデータを受け入れる

  • Get Secret
    シークレットを取得する

  • Logger
    シークレットの値をログに記録する

  • Encrypt Message
    メッセージを暗号化する

  • Logger
    ログを base64 で暗号化する

  • Decrypt Message
    メッセージを復号化する

  • Transform Message
    アルゴリズムを使用してメッセージを変換する

  • Logger
    ログを復号化する

シークレットの暗号化と復号化フローの Studio フロー

この例の XML

この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
	  xmlns:http="http://www.mulesoft.org/schema/mule/http"
	  xmlns:azure-key-vault="http://www.mulesoft.org/schema/mule/azure-key-vault" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/azure-key-vault http://www.mulesoft.org/schema/mule/azure-key-vault/current/mule-azure-key-vault.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd">

	<configuration-properties file="mule-app.properties" doc:name="Configuration properties"/>
	<azure-key-vault:config name="Azure_Key_Vault_Config" doc:name="Azure Key Vault Config" >
		<azure-key-vault:connection clientId="${azure.keyVault.clientId}" tenantId="${azure.keyVault.tenantId}" clientSecret="${azure.keyVault.clientSecret}" vaultName="${azure.keyVault.vaultName}" >
			<azure-key-vault:crypto-client-config />
		</azure-key-vault:connection>
	</azure-key-vault:config>
	<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="daa0beda-3e51-4965-9adf-3a328d38623e" >
		<http:listener-connection host="0.0.0.0" port="8081" />
	</http:listener-config>
	<file:config name="File_Config" doc:name="File Config" doc:id="e2650ca2-1343-41ae-a330-f67b3569362d" >
		<file:connection workingDir="${your-directory}" />
	</file:config>
	<flow name="EncryptDecryptFlow" doc:id="90e8e344-f5b5-4dae-a4e2-2e419e02b8c0" >
		<http:listener doc:name="Listener" doc:id="f6ad0772-95b6-44e6-827e-0ea009b2eac6" config-ref="HTTP_Listener_config" path="/encryptDecrypt" />
		<azure-key-vault:get-secret doc:name="Get Secret" doc:id="b8e3d495-266e-4944-9af3-c485023c732b" config-ref="Azure_Key_Vault_Config" name="${azure.keyVault.secret}"/>
		<logger level="INFO" doc:name="Log secret value" doc:id="2693df8f-57a9-49fb-b1f9-58767037d206" message="#[%dw 2.0&#10;output application/json&#10;---&#10;payload.value]" />
		<azure-key-vault:encrypt-message algorithm="RSA_OAEP" doc:name="Encrypt Message" doc:id="e5d88934-b4d2-45b3-9df6-df529d43ab2c" config-ref="Azure_Key_Vault_Config" keyName="${azure.keyVault.key}" >
			<azure-key-vault:message ><![CDATA[#[payload.value]]]></azure-key-vault:message>
		</azure-key-vault:encrypt-message>
		<logger level="INFO" doc:name="Log encrypetd in base 64" doc:id="d628751a-9125-429d-b3c2-0ab3d2cbdf1a" message="#[%dw 2.0&#10;import * from dw::core::Binaries&#10;output text/plain&#10;---&#10;toBase64(payload.data)]" />
		<azure-key-vault:decrypt-message algorithm="RSA_OAEP" doc:name="Decrypt Message" doc:id="96a8e168-4989-4b56-be15-5e5494ce8292" config-ref="Azure_Key_Vault_Config" keyName="${azure.keyVault.key}" >
			<azure-key-vault:message ><![CDATA[#[payload.data]]]></azure-key-vault:message>
		</azure-key-vault:decrypt-message>
		<ee:transform doc:name="Transform Message" doc:id="0848025d-900b-4e7f-a236-ff06089ca82c" >
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
{
	algorithm: payload.encryptionAlgorithm,
	value: payload.data
}]]></ee:set-payload>
			</ee:message>
		</ee:transform>
		<logger level="INFO" doc:name="Log decrypted" doc:id="020e8473-f80f-4356-8b06-8304a8650eaf" message="#[payload]" />
	</flow>
</mule>

証明書の取得と保存

この Mule フローでは、証明書を取得してファイルに保存します。

この例では、次のコンポーネントを使用します。

  • HTTP Listener
    HTTP 要求からデータを受け入れる

  • Get Certificate
    証明書を取得する

  • Write
    ファイルにコンテンツを書き込む

  • Transform Message
    証明書がファイルに保存されたことを示す成功メッセージを出力する

証明書の取得と保存フローの Studio フロー

この例の XML

この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
	  xmlns:http="http://www.mulesoft.org/schema/mule/http"
	  xmlns:azure-key-vault="http://www.mulesoft.org/schema/mule/azure-key-vault" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/azure-key-vault http://www.mulesoft.org/schema/mule/azure-key-vault/current/mule-azure-key-vault.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd">

	<configuration-properties file="mule-app.properties" doc:name="Configuration properties"/>
	<azure-key-vault:config name="Azure_Key_Vault_Config" doc:name="Azure Key Vault Config" >
		<azure-key-vault:connection clientId="${azure.keyVault.clientId}" tenantId="${azure.keyVault.tenantId}" clientSecret="${azure.keyVault.clientSecret}" vaultName="${azure.keyVault.vaultName}" >
			<azure-key-vault:crypto-client-config />
		</azure-key-vault:connection>
	</azure-key-vault:config>
	<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="daa0beda-3e51-4965-9adf-3a328d38623e" >
		<http:listener-connection host="0.0.0.0" port="8081" />
	</http:listener-config>
	<file:config name="File_Config" doc:name="File Config" doc:id="e2650ca2-1343-41ae-a330-f67b3569362d" >
		<file:connection workingDir="${your-directory}" />
	</file:config>
  <flow name="GetCertificateAndSaveIntoFileFlow" doc:id="fc506299-1d81-4a24-ba9f-c05945406c78" >
  <http:listener doc:name="Listener" doc:id="460dab77-913a-46a0-9b71-b1efc6053699" config-ref="HTTP_Listener_config" path="/getCertificate" />
  <azure-key-vault:get-certificate doc:name="Get Certificate" doc:id="f2d1eacf-f017-413b-9dfb-0871b975ade8" config-ref="Azure_Key_Vault_Config" name="${azure.keyVault.certificate}" />
  <file:write doc:id="c2b81872-03c4-4590-bda4-a6b8cd585347" config-ref="File_Config" path="auth_certificate.cer" doc:name="Write" >
    <file:content ><![CDATA[#[payload.certificate]]]></file:content>
  </file:write>
  <ee:transform doc:name="Transform Message" doc:id="ff4ecd1d-7154-4d08-9adc-b66f77e78f29" >
    <ee:message >
      <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
{
message: "file created"
}]]></ee:set-payload>
    </ee:message>
  </ee:transform>
</flow>
</mule>

シークレットとそのメタデータの取得

この Mule フローはシークレットとそのメタデータを取得します。

この例では、次のコンポーネントを使用します。

  • HTTP Listener
    HTTP 要求からデータを受け入れる

  • Get secret metadata
    シークレットのメタデータを取得する

  • Transform Message
    メタデータを JSON に変換する

  • Logger
    メッセージのログを記録する

シークレットとそのメタデータの取得フローの Studio フロー

この例の XML

この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
	  xmlns:http="http://www.mulesoft.org/schema/mule/http"
	  xmlns:azure-key-vault="http://www.mulesoft.org/schema/mule/azure-key-vault" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/azure-key-vault http://www.mulesoft.org/schema/mule/azure-key-vault/current/mule-azure-key-vault.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd">

	<configuration-properties file="mule-app.properties" doc:name="Configuration properties"/>
	<azure-key-vault:config name="Azure_Key_Vault_Config" doc:name="Azure Key Vault Config" >
		<azure-key-vault:connection clientId="${azure.keyVault.clientId}" tenantId="${azure.keyVault.tenantId}" clientSecret="${azure.keyVault.clientSecret}" vaultName="${azure.keyVault.vaultName}" >
			<azure-key-vault:crypto-client-config />
		</azure-key-vault:connection>
	</azure-key-vault:config>
	<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="daa0beda-3e51-4965-9adf-3a328d38623e" >
		<http:listener-connection host="0.0.0.0" port="8081" />
	</http:listener-config>
	<file:config name="File_Config" doc:name="File Config" doc:id="e2650ca2-1343-41ae-a330-f67b3569362d" >
		<file:connection workingDir="${your-directory}" />
	</file:config>
  <flow name="GetSecretMetadataFlow" doc:id="809ade24-8404-4c73-bd7a-6ec3b74f7423" >
  <http:listener doc:name="Listener" doc:id="403a1ae3-cdb3-4ce7-8ff7-a8cba2ad21e6" config-ref="HTTP_Listener_config" path="/getSecretMetadata" />
  <azure-key-vault:get-secret doc:name="Get secret metadata" doc:id="003da980-2b2e-428a-86b4-b8598937cbb3" config-ref="Azure_Key_Vault_Config" name="${azure.keyVault.secret}" />
  <ee:transform doc:name="Transform Metadata to JSON" doc:id="24b0285e-ee74-43dc-a46b-376d3b8f19b8" >
    <ee:message >
      <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
    </ee:message>
  </ee:transform>
  <logger level="INFO" doc:name="" doc:id="91bf36b7-f4c4-4cdf-b827-55a2bec8a3ce" message="#[payload]" />
</flow>
</mule>