マイクロソフト コード名「トラスト・サービス」入門チュートリアル (ja-JP)

表示言語を変更するにはここをクリックしてください (English)

概要

このチュートリアルは、トラスト・サービスでの基本的なタスクの実行方法を示します。

トラスト・サービスは、部品集で、クラウドでセキュアに情報を共有できるようにするAzureサービスです。クラウドストレージにアップロードしたり、ディスクに保存したり、パートナーに送信する前に、データを暗号化することができます。

このチュートリアルでは、トラスト・サービスの申し込み方法、データ保護をするためのポリシーを定義方法、サンプルデータの暗号化、解読するためのポリシーの使い方を学びます。

デモシナリオでは、次の4グループで構成しています。 

  • トラスト・サービス管理者(Trust Services Administrator (TSA)) 組織のアカウント管理や組織のサブスクリプション作成、トラストサービスに接続できるユーザと権限の管理をします。 
  • トラスト・サービス ポリシー管理者(Trust Services Policy Administrator (TSPA)) 組織のデータに対するセキュリティポリシーの管理と定義をします。
  • **データ送信者 **TSPAが定義したポリシーに基づいてデータを暗号化するアプリケーションを実行するユーザです。
  • **データ受信者 **TSPAが定義したポリシーに基づいて、データ送信者が暗号化したデータを解読するアプリケーションを実行するユーザです。

補足:

  • 実際のケースでは、上記役割の全てを一人で担当し、1つのX509証明書を使用して完結することもあります。チュートリアルでは、システムの可能性を見てもらうために、すべての役割を使用します。
  • このリリース版では、 顧客はAzureサブスクリプションを保有する管理者と仮定します。クラウドで、非常に慎重に扱う必要があるデータを格納する目的で、Azureを使用していると仮定します。

システム要件

  1. 次のOSを使用してください
    • Windows Server 2008 R2 x86
    • Windows Server 2008 R2 x64
    • Windows 7 x86
    • Windows 7 x64
  2. .NET Framework 4

チュートリアル シナリオ

この手順では、トラスト・サービスの申し込み方法とデータを保護するためのポリシーを定義する方法、サンプルデータを暗号化、解読するためのポリシーの使用方法を学習します。

手順1. 登録コードのリクエスト

リクエストフォーム

https://connect.microsoft.com/SQLServer/Survey/Survey.aspx?SurveyID=13835

登録コードを受け取る前に、次の手順に進んで証明書を作成する手順を完了させることができます。手順3は、トラスト・サービス ポータルを使用するために、登録コードが必要です。

手順2. 証明書の作成

X509証明書は、トラスト・サービスの認証とトラスト・サービスSDKとPowerShell Snap-Inでの署名と暗号化に使用します。

次の3つの役割用に3つの証明書が必要です。

  • ポリシー管理者
  • データ送信者
  • データ受信者

既存の証明書、または自己署名証明書を使用できます。自己書名証明書の作成方法:

  1. Visual Studioコマンドプロンプト をスタートメニューから開きます。

  2. 次のコマンドを実行します。

    makecert -r -pe -n "CN=Azure.Trust.Sample.PolicyAdmin" -sky exchange -ss my %HOMEPATH%\PolicyAdmin.cer
    makecert -r -pe -n "CN=Azure.Trust.Sample.DataPublisher" -sky exchange -ss my %HOMEPATH%\DataPublisher.cer
    makecert -r -pe -n "CN=Azure.Trust.Sample.DataSubscriber" -sky exchange -ss my %HOMEPATH%\DataSubscriber.cer

     

  3. カレントユーザWindows証明書ストアーで、それらの証明書を保持するべきです。

手順3. トラスト・サーバーの作成

概要で説明したTSA担当が、実行する手順について説明します。

  1. トラスト・サービス ポータルにアクセスします。- https://trustservices.cloudapp.net/
  2. Live IDでサインインします。
  3. 登録ページが表示されます。
  4. コード欄に提供された登録コードを入力し、名前とEメール欄を埋め、使用許諾にチェックを入れます。登録ボタンをクリックします。
  5. 登録完了後、ホームページにリダイレクトされます。
  6. トラスト・サービスを追加します:
    1. Your Trust Servers欄、Createボタンをクリックします。
      これで、新しいトラスト・サービスが作成されます(システムが動的に名前を生成します)。
  7. トラスト・サービスにユーザを追加します:
    1. トラスト・サービスを選択します。

    2. ユーザ証明書をアップロードするためにAuthorized Certificates 欄で、Addボタンをクリックします。

    3. 手順2で作成した**.CER証明書ファイルをアップロードします**。これらのファイルには、パブリックキーを含んでいます。

      1. %HOMEPATH%\Azure.Trust.Sample.PolicyAdmin.cer
      2. %HOMEPATH%\Azure.Trust.Sample.DataPublisher.cer
      3. %HOMEPATH%\Azure.Trust.Sample.DataSubscriber.cer

      もし、自分自身の証明を使用する場合は、ポリシー管理者、データ送信者、データ受信者に対応する.CERファイルをアップロードします。

    4. 今のところ、3人のユーザが選択したトラスト・サービスにアクセスすることができます。

        

 

図1. トラスト・サーバーポータルに、生成されたトラスト・サーバーの名前と、トラスト・サーバーに関連付けられたユーザ証明書が表示されます。

補足: トラスト・サーバー名をコピーしてください。クライアントマシン上で、後の手順で必要になります。

手順4. トラスト・サービスSDKをインストールします

ここ からトラスト・サービスをダウンロードし、インストールします。

Note:

64ビットバージョンのSDKをインストールする時は、TrustServiceLab_amd64.msi ファイルをローカルディスクに保存して、Windows Explorerでファイルをダブルクリックしてインストールを始めてください。インストールが完了し、インストーラーがトラスト・サービスPowerShellウィンドウを開こうとした時に、エラーメッセージ(トラスト・サービスのプラグインが見つかりません)と表示されるのを防ぐためです。詳細は、トラブルシューティングページを参照してください。

手順5. PowerShellを使用してデータポリシーを作成します

概要で説明したTSPA担当が実行する手順です。

  1. スタートメニューで、Trust Services Shell ショートカットを始めます。

  2. ノートパッドに次のスクリプトをコピーします。

    # Example script for using Trust Services PowerShell Snap-In.
    # Policy Administrator defines encryption data policy and 
    # authorizes Data Publisher and Data Subscriber to the policy and data.
    
    $ErrorActionPreference = "Stop"
    
    # Thumbprints of certificates.
    # Public keys must be uploaded as .cer files to Trust Server using Trust Services Portal.
    $policyAdminThumbprint  = "cbd98ce6c208125e164f4a4f125bad7b3de0d9e3"
    $publisherThumbprint    = "655292c5dadaacaa062e4dc76a9641713db165ac"
    $subscriberThumbprint   = "1797021c55683776e2e194c90cd78436c44f5d2e"
    
    # Name of Trust Server created using Trust Services Portal.
    $trustServerName = "ic6ncb0ref"
    
    # URL of Trust Service. Can be obtained from Trust Services Portal.
    $trustServiceUrl = "https://trustservices.cloudapp.net:4433/"
    
    # Find certificates to use by Trust Services snap-in.
    # These certificates must be already uploaded to Trust Server using Trust Services Portal.
    $paCert = dir cert:\currentUser\my | 
        where-object { $_.thumbprint -eq $policyAdminThumbprint }
    if ($paCert -eq $null)
    {
        Throw "Policy Administrator certificate with thumbprint ""$policyAdminThumbprint"" " +
            "not found in Current User Windows certificate store."
    }
    $pubCert = dir cert:\currentUser\my | 
        where-object { $_.thumbprint -eq $publisherThumbprint }
    if ($pubCert -eq $null)
    {
        Throw "Data Publisher certificate with thumbprint ""$publisherThumbprint"" " +
            "not found in Current User Windows certificate store."
    }
    $subCert = dir cert:\currentUser\my | 
        where-object { $_.thumbprint -eq $subscriberThumbprint }
    if ($subCert -eq $null)
    {
        Throw "Data Subscriber certificate with thumbprint ""$subscriberThumbprint"" " +
            "not found in Current User Windows certificate store."
    }
    
    # Create admin ECM to create policies using Trust Services cmdlets.
    if ( !(Test-Path "ecm:\polAdmin") )
    {
        Write-Host "Creating admin Trust Services Edge Compliance Module"
        New-Ecm -Admin -ServerName $trustServerName -ServerUrl $trustServiceUrl `
            -EcmOwner $paCert -FriendlyName "polAdmin"
    }
    
    # Create a policy that data for URI "example:exampleUri" must be encrypted.
    $policyUri = "example:exampleUri"
    
    Write-Host "Creating policy for URI ""$policyUri"""
    Add-DataPolicy -Encrypt -PolicyUri $policyUri -FriendlyName "polAdmin"
    
    # Authorize publisher and subscriber to data with URI "example:exampleUri".
    Write-Host "Adding authorization for URI ""$policyUri"" to Data Publisher"
    Add-DataAuthorization -Principal $pubCert -PolicyUri $policyUri -FriendlyName "polAdmin"
    
    Write-Host "Adding authorization for URI ""$policyUri"" to Data Subscriber"
    Add-DataAuthorization -Principal $subCert -PolicyUri $policyUri -FriendlyName "polAdmin"

         

  3. コピーしたスクリプトで、証明書のthumbprints を書き換えます。

    1. $policyAdminThumbprint ポリシー管理者の証明書のthumbprintの値を入力します。
    2. $publisherThumbprint データ送信者の証明書のthumbprintの値を入力します。 
    3. $subscriberThumbprint データ受信者の証明書のthumbprintの値を入力します。 

    証明書のThunmbprintを探すために、下の図のようにカラムサイズを調整することで、トラスト・サービスから取得することができます。[

    ](resources/6710.TrustServices_5F00_ResizedCertsCropped.png)

    もしくは次のコマンドをPowerShellウィンドウから実行します。

    dir cert:\currentUser\my | where {$_.Subject -eq "CN=Azure.Trust.Sample.PolicyAdmin" }
    dir cert:\currentUser\my | where {$_.Subject -eq "CN=Azure.Trust.Sample.DataPublisher" }
    dir cert:\currentUser\my | where {$_.Subject -eq "CN=Azure.Trust.Sample.DataSubscriber" }

     

  4. $trustServerName トラスト・サーバーの名前を入力します(ポータル上で動的に生成されます。手順4の図1を参照してください。)

  5. スクリプトをファイルに保存します。例)d:\TrustEncryptExample.ps1

  6. トラスト・サービス シェルウィンドウからスクリプトを実行します。 例えば、d:\TrustPolicyExample.ps1とタイプします。

    次のようなエラーが出るかもしれません。

    File d:\TruszpolicyExample.ps1 cannot be loaded because the execution of scripts 
    is disabled on this system. Please see "get-help about_signing" for more details.
    その場合は、スクリプトを実行する前に、次のコマンドを実行してください。
    
    Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
    
  7. 次のように、アウトプットが表示されます。

    PS C:\Program Files\Microsoft\Trust Services Lab SDK and Shell (x64)\bin> d:\TrustPolicyExample.ps1
    Creating admin Trust Services Edge Compliance Module
    Creating policy for URI "example:exampleUri"
    Adding authorization for URI "example:exampleUri" to Data Publisher
    Adding authorization for URI "example:exampleUri" to Data Subscriber
    PS C:\Program Files\Microsoft\Trust Services Lab SDK and Shell (x64)\bin> 

補足: データポリシーを生成するのにC# SDKを使うことができます。トラスト・サービスのサンプルページのサンプルを参照してください。

手順6. PowerShellを使用してデータの暗号化と解読

前の手順でポリシーを作成した後の手順を実行します。

概要で説明したデータ送信者とデータ受信者が実行する手順です。

  1. スタートメニューからTrust Services Shell ショートカットを実行します。

  2. ノートパッドに次のスクリプトをコピーします。

    # Example script for using Trust Services PowerShell Snap-In.
    # Data Publisher encrypts data that Data Subscriber decrypts.
    # Policy Administrator must have already defined encryption data policy and 
    # authorized Data Publisher and Data Subscriber to the policy and data.
    
    $ErrorActionPreference = "Stop"
    
    # Thumbprints of certificates.
    # Public keys must be uploaded as .cer files to Trust Server using Trust Services Portal.
    $policyAdminThumbprint  = "cbd98ce6c208125e164f4a4f125bad7b3de0d9e3"
    $publisherThumbprint    = "655292c5dadaacaa062e4dc76a9641713db165ac"
    $subscriberThumbprint   = "1797021c55683776e2e194c90cd78436c44f5d2e"
    
    # Name of Trust Server created using Trust Services Portal.
    $trustServerName = "ic6ncb0ref"
    
    # URL of Trust Service. Can be obtained from Trust Services Portal.
    $trustServiceUrl = "https://trustservices.cloudapp.net:4433/"
    
    # Find certificates to use by Trust Services snap-in.
    # These certificates must be already uploaded to Trust Server using Trust Services Portal.
    $paCert = dir cert:\currentUser\my | 
        where-object { $_.thumbprint -eq $policyAdminThumbprint }
    if ($paCert -eq $null)
    {
        Throw "Policy Administrator certificate with thumbprint ""$policyAdminThumbprint"" " +
            "not found in Current User Windows certificate store."
    }
    $pubCert = dir cert:\currentUser\my | 
        where-object { $_.thumbprint -eq $publisherThumbprint }
    if ($pubCert -eq $null)
    {
        Throw "Data Publisher certificate with thumbprint ""$publisherThumbprint"" " +
            "not found in Current User Windows certificate store."
    }
    $subCert = dir cert:\currentUser\my | 
        where-object { $_.thumbprint -eq $subscriberThumbprint }
    if ($subCert -eq $null)
    {
        Throw "Data Subscriber certificate with thumbprint ""$subscriberThumbprint"" " +
            "not found in Current User Windows certificate store."
    }
    
    # Create publisher ECM to encrypt data
    if ( !(Test-Path "ecm:\pubUser") )
    {
        Write-Host "Creating publisher Trust Services Edge Compliance Module"
        New-Ecm -User -ServerName $trustServerName -ServerUrl $trustServiceUrl `
            -EcmOwner $pubCert -TrustedPrincipal $paCert -FriendlyName "pubUser" 
    }
    
    # Create subscriber ECM to decrypt data
    if ( !(Test-Path "ecm:\subUser") )
    {
        Write-Host "Creating subscriber Trust Services Edge Compliance Module"
        New-Ecm -User -ServerName $trustServerName -ServerUrl $trustServiceUrl `
            -EcmOwner $subCert -TrustedPrincipal $paCert -FriendlyName "subUser"
    }
    
    # Policy must have been already created by the Policy Administrator.
    $policyUri = "example:exampleUri"
    
    # Data to be encrypted.
    [byte[]] $originalBytes = 1,2,3
    
    $originalString = -join ($originalBytes |  foreach {$_.ToString("X2") } )
    Write-Host "Publisher encrypting data $originalString"
    
    # Encrypt data.
    $encryptedBytes = 
        Add-Encryption -ClearBytes $originalBytes -PolicyUri $policyUri -FriendlyName "pubUser"
    
    $encryptedString = -join ($encryptedBytes |  foreach {$_.ToString("X2") } )
    Write-Host "Subscriber decrypting data $encryptedString"
    
    # Decrypt data.
    $decryptedBytes = 
        Remove-Encryption -CypherBytes $encryptedBytes -PolicyUri $policyUri -FriendlyName "subUser"
    
    $decryptedString = -join ($decryptedBytes |  foreach {$_.ToString("X2") } )
    Write-Host "Subscriber decrypted data $decryptedString"

     

  3. コピーしたスクリプトで、証明書のthumbprints を書き換えます。

    1. $policyAdminThumbprint ポリシー管理者の証明書のthumbprintの値を入力します。
    2. $publisherThumbprint データ送信者の証明書のthumbprintの値を入力します。 
    3. $subscriberThumbprint データ受信者の証明書のthumbprintの値を入力します。 

    証明書のThunmbprintを探すために、下の図のようにカラムサイズを調整することで、トラスト・サービスから取得することができます。[

    ](resources/6710.TrustServices_5F00_ResizedCertsCropped.png)

    もしくは次のコマンドをPowerShellウィンドウから実行します。

    dir cert:\currentUser\my | where {$_.Subject -eq "CN=Azure.Trust.Sample.PolicyAdmin" }
    dir cert:\currentUser\my | where {$_.Subject -eq "CN=Azure.Trust.Sample.DataPublisher" }
    dir cert:\currentUser\my | where {$_.Subject -eq "CN=Azure.Trust.Sample.DataSubscriber" }

     

  4. $trustServerName トラスト・サーバーの名前を入力します(ポータル上で動的に生成されます。手順4の図1を参照してください。)

  5. スクリプトをファイルに保存します。例) d:\TrustEncryptExample.ps1

  6. トラスト・サービス シェルウィンドウからスクリプトを実行します。 例えば、 d:\TrustEncryptExample.ps1 とタイプします。

    次のようなエラーが出るかもしれません。

    File d:\TruszEncryptExample.ps1 cannot be loaded because the execution of scripts 
    is disabled on this system. Please see "get-help about_signing" for more details.
    その場合は、スクリプトを実行する前に、次のコマンドを実行してください。
    
    Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
    
  7. 次のように、アウトプットが表示されます。 

    PS C:\Program Files\Microsoft\Trust Services Lab SDK and Shell (x64)\bin> d:\TrustEncryptExample.ps1
    Creating publisher Trust Services Edge Compliance Module
    Creating subscriber Trust Services Edge Compliance Module
    Publisher encrypting data 010203
    Subscriber decrypting data 140000003400000018EDF757DAE3D3C7794CC741C34E4300776553AF00000000000000000
    00000000000000001000000B1F40947A4411F373FB89CE94A6CAE28075D74FE5099C5C01123C00F8F853DA8
    Subscriber decrypted data 010203
    PS C:\Program Files\Microsoft\Trust Services Lab SDK and Shell (x64)\bin> 

補足: データポリシーを生成するのにC# SDKを使うことができます。トラスト・サービスのサンプルページのサンプルを参照してください。 

次のステップ

  • トラスト・サービスサンプルページを参照してください。
  • スタートメニューから"Trust Services SDK Help"を開いてC# APIを参照します。
  • トラスト・サービスSDKを使用してデータを保護するアプリケーションを作成します。

リンク