Microsoft Azure Managed CCF (Managed CCF) は、機密アプリケーションをデプロイするための新しいセキュリティで保護されたサービスです。 Azure Managed CCF の詳細については、「 Azure Managed Confidential Consortium Framework について」を参照してください。
Azure アカウントをお持ちでない場合は、開始する前に無料アカウントを作成してください。
API リファレンスのドキュメント | ライブラリのソース コード | パッケージ (npm)
[前提条件]
- Azure サブスクリプション - 無料アカウントを作成します。
- Node.js バージョンは Azure SDK for JavaScript によってサポートされています。
- OpenSSL を Windows または Linux を実行しているコンピューターで使う。
設定
このクイック スタートでは、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 コマンドレットを使用して、southcentralus の場所に myResourceGroup という名前のリソース グループを作成します。
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);
}
})();
マネージド CCF リソースを削除する
次のコードは、マネージド CCF リソースを削除します。 その他のマネージド 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);
}
})();
リソースをクリーンアップする
その他のマネージド CCF 記事は、このクイック スタートに基づいて構築できます。 後続のクイック スタートとチュートリアルを引き続き使用する予定の場合は、これらのリソースをそのまま使用することをお望みかもしれません。
それ以外の場合は、この記事で作成したリソースが完了したら、Azure CLI az group delete コマンドを使用して、リソース グループとそのすべての含まれるリソースを削除します。
az group delete --resource-group myResourceGroup
次のステップ
このクイック スタートでは、Azure Python SDK for Confidential Ledger を使用してマネージド CCF リソースを作成しました。 Azure Managed CCF とアプリケーションとの統合方法の詳細については、次の記事に進んでください。