クイックスタート: JavaScript および TypeScript 用の Azure SDK を使って Azure Managed CCF リソースを作成する
Microsoft Azure Managed CCF (Managed CCF) は、機密性の高いアプリケーションをデプロイするための、高度なセキュリティで保護された新しいサービスです。 Azure Managed CCF の詳細については、Azure Managed Confidential Consortium Framework の概要に関する記事を参照してください。
Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。
API リファレンスのドキュメント | ライブラリのソース コード | パッケージ (npm)
前提条件
- Azure サブスクリプション - 無料アカウントを作成します。
- Azure SDK for JavaScript でサポートされている Node.js のバージョン。
- Windows または Linux を実行しているコンピューターでの OpenSSL。
セットアップ
このクイックスタートでは、Azure ID ライブラリを Azure CLI または Azure PowerShell と共に使用して、Azure サービスに対するユーザーの認証を行います。 また、開発者は、Visual Studio または Visual Studio Code を使用して自分の呼び出しを認証することもできます。 詳細については、Azure ID クライアント ライブラリを使用したクライアントの認証に関するページを参照してください。
Azure へのサインイン
Azure CLI az login コマンドまたは Azure PowerShell Connect-AzAccount コマンドレットを使用して Azure にサインインします。
az login
CLI または PowerShell で既定のブラウザーを開くことができる場合、ブラウザが開き、Azure サインイン ページが読み込まれます。 そうでない場合は、https://aka.ms/devicelogin を開き、ターミナルに表示されている認証コードを入力します。
メッセージが表示されたら、ブラウザーでアカウントの資格情報を使用してサインインします。
新しい npm プロジェクトを初期化する
ターミナルまたはコマンド プロンプトで、適切なプロジェクト フォルダーを作成し、プロジェクトを npm
初期化します。 既存のノード プロジェクトがある場合は、この手順をスキップできます。
cd <work folder>
npm init -y
パッケージのインストール
Azure Active Directory ID クライアント ライブラリをインストールします。
npm install --save @azure/identity
Azure confidential ledger 管理プレーン クライアント ライブラリをインストールします。
npm install -save @azure/arm-confidentialledger@1.3.0-beta.1
TypeScript コンパイラとツールをグローバルにインストールする
npm install -g typescript
リソース グループを作成する
リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。 Azure PowerShell の New-AzResourceGroup コマンドレットを使って、myResourceGroup という名前のリソース グループを southcentralus の場所に作成します。
New-AzResourceGroup -Name "myResourceGroup" -Location "SouthCentralUS"
リソース プロバイダーの登録
リソースを作成する前に、Azure Managed CCF リソースの種類をサブスクリプションに登録する必要があります。
az feature registration create --namespace Microsoft.ConfidentialLedger --name ManagedCCF
az provider register --namespace Microsoft.ConfidentialLedger
メンバーの作成
メンバーのキーの組を生成します。 下記のコマンドが完了すると、メンバーの公開キーが member0_cert.pem
に保存され、秘密キーが member0_privk.pem
に保存されます。
openssl ecparam -out "member0_privk.pem" -name "secp384r1" -genkey
openssl req -new -key "member0_privk.pem" -x509 -nodes -days 365 -out "member0_cert.pem" -"sha384" -subj=/CN="member0"
JavaScript アプリケーションを作成する
管理プレーン クライアント ライブラリを使う
Azure SDK for JavaScript および TypeScript ライブラリ azure/arm-confidentialledger を使用すると、マネージド CCF リソースに対する操作 (作成と削除、サブスクリプションに関連付けられているリソースの一覧表示、特定のリソースの詳細の表示など) を実行できます。
以下のサンプルを実行するには、コード スニペットをプロジェクト フォルダーに拡張子付きの .ts
ファイルに保存し、TypeScript プロジェクトの一部としてコンパイルするか、次を実行してスクリプトを JavaScript に個別にコンパイルしてください。
tsc <filename.ts>
コンパイルされた JavaScript ファイルの名前は同じですが、拡張子は付 *.js
けられます。 次に、nodeJS でスクリプトを実行します。
node <filename.js>
次の TypeScript コードの例では、マネージド CCF リソースのプロパティを作成して表示します。
import { ConfidentialLedgerClient, ManagedCCFProperties, ManagedCCF, KnownLanguageRuntime, DeploymentType, MemberIdentityCertificate } from "@azure/arm-confidentialledger";
import { DefaultAzureCredential } from "@azure/identity";
// Please replace these variables with appropriate values for your project
const subscriptionId = "0000000-0000-0000-0000-000000000001";
const rgName = "myResourceGroup";
const ledgerId = "testApp";
const memberCert0 = "-----BEGIN CERTIFICATE-----\nMIIBvjCCAUSgAwIBAg...0d71ZtULNWo\n-----END CERTIFICATE-----";
const memberCert1 = "-----BEGIN CERTIFICATE-----\nMIIBwDCCAUagAwIBAgI...2FSyKIC+vY=\n-----END CERTIFICATE-----";
async function main() {
console.log("Creating a new instance.")
const client = new ConfidentialLedgerClient(new DefaultAzureCredential(), subscriptionId);
const properties = <ManagedCCFProperties> {
deploymentType: <DeploymentType> {
appSourceUri: "",
languageRuntime: KnownLanguageRuntime.JS
},
memberIdentityCertificates: [
<MemberIdentityCertificate>{
certificate: memberCert0,
encryptionkey: "",
tags: {
"owner":"member0"
}
},
<MemberIdentityCertificate>{
certificate: memberCert1,
encryptionkey: "",
tags: {
"owner":"member1"
}
},
],
nodeCount: 3,
};
const mccf = <ManagedCCF> {
location: "SouthCentralUS",
properties: properties,
}
const createResponse = await client.managedCCFOperations.beginCreateAndWait(rgName, ledgerId, mccf);
console.log("Created. Instance id: " + createResponse.id);
// Get details of the instance
console.log("Getting instance details.");
const getResponse = await client.managedCCFOperations.get(rgName, ledgerId);
console.log(getResponse.properties?.identityServiceUri);
console.log(getResponse.properties?.nodeCount);
// List mccf instances in the RG
console.log("Listing the instances in the resource group.");
const instancePages = await client.managedCCFOperations.listByResourceGroup(rgName).byPage();
for await(const page of instancePages){
for(const instance of page)
{
console.log(instance.name + "\t" + instance.location + "\t" + instance.properties?.nodeCount);
}
}
console.log("Delete the instance.");
await client.managedCCFOperations.beginDeleteAndWait(rgName, ledgerId);
console.log("Deleted.");
}
(async () => {
try {
await main();
} catch(err) {
console.error(err);
}
})();
Managed CCF リソースを削除する
次のコードは、マネージド CCF リソースを削除します。 他の Managed CCF の記事には、このクイックスタートに基づいているものがあります。 後続のクイック スタートおよびチュートリアルを引き続き実行する場合は、これらのリソースをそのまま残しておくことをお勧めします。
import { ConfidentialLedgerClient, ManagedCCFProperties, ManagedCCF, KnownLanguageRuntime, DeploymentType, MemberIdentityCertificate } from "@azure/arm-confidentialledger";
import { DefaultAzureCredential } from "@azure/identity";
const subscriptionId = "0000000-0000-0000-0000-000000000001"; // replace
const rgName = "myResourceGroup";
const ledgerId = "confidentialbillingapp";
async function deleteManagedCcfResource() {
const client = new ConfidentialLedgerClient(new DefaultAzureCredential(), subscriptionId);
console.log("Delete the instance.");
await client.managedCCFOperations.beginDeleteAndWait(rgName, ledgerId);
console.log("Deleted.");
}
(async () => {
try {
await deleteManagedCcfResource();
} catch(err) {
console.error(err);
}
})();
リソースをクリーンアップする
他の Managed CCF の記事には、このクイックスタートに基づいているものがあります。 後続のクイックスタートおよびチュートリアルを引き続き実行する場合は、これらのリソースをそのまま残しておくことをお勧めします。
それ以外の場合は、この記事で作成したリソースの操作が完了したら、Azure CLI の az group delete コマンドを使って、リソース グループとそれに含まれるすべてのリソースを削除します。
az group delete --resource-group myResourceGroup
次のステップ
このクイックスタートでは、Azure Python SDK for Confidential Ledger を使って Managed CCF リソースを作成しました。 Azure Managed CCF の詳細と、これをアプリケーションと統合する方法については、続けて以下の記事を参照してください。