今日のデジタル環境では、フィンテック、ヘルスケア、Eコマースなどの業界にとって、機密情報の保護が最も重要です。このような業界では、個人識別情報(PII)、カード保有者データ(CHD)、個人口座番号(PAN)、ペイメントカード業界(PCI)、社会保障番号(SSN)、個人健康情報(PHI)などの機密データを頻繁に取り扱っており、データの機密性と完全性の確保は、規制遵守と顧客の信頼維持に非常に重要です。
機密データの取り扱いは、特に CSV や Excel ファイルに大量のデータが保存されている場合は大変であり、従来のデータ処理方法では、情報が漏洩する恐れがあり、強力なセキュリティ対策が不可欠になります。
このようなリスクを軽減する効果的な方法の1つに、機密データを非機密識別子で置き換える「データのトークン化」が挙げられます。トークン化でデータのプライバシーと保護が強化され、規制へのコンプライアンスがシンプルになります。
そこで本記事では、Integrate.io を使って SFTP To Go に保存された CSV ファイルを処理し、Piiano Vault のトークン化 API を適用して機密フィールドを保護するソリューションについて見ていきます。そして、Integrate.io のジョブを実行して、処理されトークン化されたデータを変換し、SFTP To Go に安全に保存していきます。
本記事で各コンポーネントの設定、そのシームレスな統合、データ処理ワークフローの自動化の手順について見ていき、このガイドを読み終えると、機密情報の保護や、規制要件への準拠、大規模なデータ管理ワークフローをシンプルにする安全なデータ処理パイプラインを実装する方法がわかるようになるでしょう。
機密フィールドをトークン化する動機
機密データの取り扱いには、侵害を防ぎ、PCI-DSS、HIPAA、GDPR などの規制に準拠するための厳格なセキュリティ対策が必要です。機密情報をトークン化すると、機密データが非機密データトークンに置き換えられ、漏洩のリスクが軽減されます。これは、不正アクセスからデータを保護し、たとえデータが傍受されたとしても悪意のある行為者には無用の長物であることを保証するために、あらゆる組織のデータ処理パイプラインにとって極めて重要です。
ソリューションの概要
本記事では、「100 Sample Synthetic Patient Records, CSV」からダウンロードできる公開データセットを使います。これには、CSV 形式の 100 件の合成患者の記録が含まれており、SyntheticMass 内でホストされているデータは、MITRE Corporation が提供するオープンソースの患者人口シミュレーションである Synthea™ によって生成されています。
このユースケースでは、かなり大きなデータセットを紹介したいので、zip圧縮されたファイルである synthea_sample_data_csv_latest.zip をダウンロードして解凍してください。また、機密データ保護を実証するために、本記事でのソリューションでは patients.csv ファイル内のダミーデータを使いますが、このファイルには、生年月日、住所、SSN などの PII フィールドを含む CSV 形式の合成患者記録が含まれています。
💡 注:ZIPファイルには、患者ごとの PHI データを含む allergies.csv のような他の合成データも含まれています。当社のソリューションは、このようなフィールドを処理してトークン化するように簡単に拡張することができます。詳しくは Integrate.io チームまでぜひお気軽にお問い合わせください。
ファイルは SFTP To Go ストレージにアップロードされます。Integrate.io でデータフローを定めてファイルを処理し、Piiano Vault のトークン化 API を呼び出して機密フィールドをセキュアなデータトークンに置き換え、処理後のデータを SFTP To Go に保存します。そして SFTP To Go Web ポータルを使って、処理されたファイルをプレビューします。
我々のソリューションのアーキテクチャを以下で見てみましょう:
ソリューションアーキテクチャ図
前提条件
- SFTP To Go のアカウント:安全なクラウド ストレージ サービス。
- Piano Vault のアカウント:機密データのトークン化とトークン解除のための API を備えた強力なセキュリティエンジニアリング プラットフォーム。
- Integrate.io のアカウント:堅牢なデータ統合プラットフォーム。
CSV データを処理およびトークン化するためのステップバイステップガイド
では、機密性の高い CSV ファイルを処理するための安全なクラウド ストレージとして SFTP To Go を設定しましょう。
SFTP To Go の設定
- SFTP To Go アカウントの作成:SFTP To Go にアクセスして7日間の無料トライアル アカウントにサインアップし、簡単なセットアップ手順に従って、安全な SFTP ストレージを準備します。
- SFTP To Go 資格情報の作成:最小権限の原則に従うために、Integrate.io がファイルの読み取りと書き込みに使う認証情報を SFTP To Go に作成します。
SFTP To Go の認証情報の作成
3. patients.csv ファイルのアップロード:SFTP To Go があれば、SFTP プロトコルを使ってプログラムで CSV ファイルをアップロードできます。これによって、データ転送がスムーズかつ自動化されることから、外部システムから機密ファイルを受け取るのに最適です。
この例では、SFTP To Go 統合 Web ポータル([File Browser(ファイル ブラウザー)]の タブに有り)を使ってファイルをアップロードします。次に、/home/integrateio/ フォルダー (作成した認証情報のホーム ディレクトリとして設定されている)に移動して[Upload files(ファイルのアップロード)]をクリックしてアップロード プロセスを開始します。そして解凍したフォルダーから patients.csv ファイルを貼り付け、[Upload 1 file(ファイルを1つアップロード)]をクリックします。
SFTP To Go Web ポータルを使ってファイルをアップロード。
Piiano Vault の設定
次に、トークン化のために Piano Vault を設定します。
- Piiano Vault アカウントの作成:Piano.com にアクセスして、管理された Piiano Vault インスタンスの 7日間無料トライアルにサインアップします。ここで、すべてのトークン化の魔法が起こります。
- Vault の作成:Piiano Vault にサインアップすると、すぐに使えるデフォルトの Vault が自動で提供されてくるので、初期設定なしで開始できます。ただし、Vault をまだ作成していない場合は、[New Vault(新しい Vault)]をクリックして、サンドボックス環境で作成します。次に、[Create Vault(Vault の作成)]をクリックして、新しい Vault を作成します。Vault の状態が「Running(実行中)」になるまで数秒待ってから、使い始めてください。
💡 Piiano Vault には、カード所有者データやプライマリアカウント番号などの支払い情報データを保存するための PCI 準拠環境など、デプロイのタイプがいくつかあります。
新しい Vault を作成
- コレクションの作成:データをトークン化するための安全なコンテナとして使われるコレクションを Vault 内に設定します。コレクションに移動して[New collection(新しいコレクション)]をクリックして、コレクションに患者の名前を付けます。
- コレクション スキーマの確定:コレクションのスキーマを指定することで、データ構造の正しい検証や処理が行われます。このソリューションでは、SSN をトークン化するため、SSN をデータ型として「SSN」という名前の新しいプロパティを追加します。プロパティはデフォルトで暗号化されており、基礎となるストレージでもデータが暗号化されることに注意してください。
💡 Piiano Vault にはさまざまなスキーマと組み込みのセマンティック データ タイプが付属していることから、それでデータの意味を理解したり、各タイプに合わせてカスタマイズされた組み込み機能を提供できるようになります。
コレクションの作成には、[Create collection(コレクションの作成)]をクリックします。
新しいコレクションの作成
Integrate.io の設定
最後に、データ処理用に Integrate.io を設定します。
- Integrate.io アカウントの作成:Integrate.io にアクセスし、14日間の無料トライアル アカウントにサインアップします。簡単なセットアップ手順に従って新しい組織を作成し、データ統合プラットフォームを準備します。
- SFTP 接続の作成:接続とは、データ パイプラインで使える再利用可能な認証情報と設定のセットであり、このソリューションでは、最も安全な接続方法である公開キー認証を認証方法として、新しい SFTP 接続を作成します。
接続リストに移動して、[New connection(新しい接続)]をクリックします。
Integrate.io の統合リスト
SFTP 接続の作成
認証方法を設定すると、認証目的で SFTP To Go にインポートできる一意の公開キーが提供されます。SFTP To Go に戻り、提供された SSH 公開キーを、以前に作成した integrate-demo 認証情報にインポートします。
SSH キーを SFTP To Go 認証情報にインポート
次に、ホストとユーザー名の値を Integrate.io の接続詳細にコピーして、接続に SFTP To Go という名前を付けます。「Test connection(接続のテスト)」をクリックして、接続が機能していることを確認し、最後に、「Create connection(接続の作成)」をクリックして接続の詳細を保存します。
3. データフロー パッケージの作成:パッケージとは、データをある場所から別の場所に移動する実行可能なユーザー定義のパイプラインです。このソリューションでは、新しい空のデータフロー パッケージを作成します。パッケージ リストに移動し、[New package(新しいパッケージ)]をクリックします。パッケージに Tokenize Demo という名前を付け、[Type(タイプ)]が[Dataflow(データフロー)]に設定されていることを確認します。[Create package(パッケージの作成)]をクリックしてパッケージを作成します。
データフロー パッケージの作成
4. 環境変数の設定:データ パイプラインを構築する前に、認証された Piiano Vault API の呼び出しに使える秘密の環境変数をいくつか定めます。パッケージ デザイナーで3つのドットをクリックして変数を設定し、[Secrets(シークレット)]タブに移動します。以下の変数を追加します。
PIIANO_VAULT_API_KEY:セキュリティ上の理由から、Vault 内のデータのトークン化のみを実行できるユーザーを使います(データを一覧表示することはできません)。Piano Vault ダッシュボードに戻り、[Identity and access management(IDとアクセス管理)] に移動します。IAM TOML タブを開き、次の TOML コンテンツを貼り付けます。[Save IAM TOML (IAM TOML の保存)]をクリックして、IAM 設定を保存します。
[idps]
[policies]
[policies.AdminPolicy]
operations = ["read", "write", "delete", "search", "tokenize", "detokenize", "encrypt", "decrypt", "hash", "stats", "invoke"]
policy_type = "allow"
reasons = ["*"]
resources = ["*"]
[policies.InvokeHTTPCallPolicy]
operations = ["invoke"]
policy_type = "allow"
reasons = ["AppFunctionality"]
resources = ["http_call"]
[policies.PatientsDetokenizePolicy]
operations = ["detokenize"]
policy_type = "allow"
reasons = ["AppFunctionality"]
resources = ["patients/properties/*"]
[policies.PatientsTokenizePolicy]
operations = ["tokenize"]
policy_type = "allow"
reasons = ["AppFunctionality"]
resources = ["patients/properties/*"]
[roles]
[roles.PublicPatientsTokenizerRole]
capabilities = ["CapTokensWriter"]
policies = ["PatientsTokenizePolicy"]
[roles.VaultAdminRole]
capabilities = ["CapSystem"]
policies = ["AdminPolicy"]
[roles.VaultHTTPCallAction]
capabilities = ["CapTokensDetokenizer"]
policies = ["PatientsDetokenizePolicy"]
[roles.WebAppRole]
capabilities = ["CapActionsInvoker"]
policies = ["InvokeHTTPCallPolicy"]
[users]
[users.PublicPatientsTokenizer]
disabled = false
role = "PublicPatientsTokenizerRole"
[users.VaultAdmin]
disabled = false
role = "VaultAdminRole"
[users.Webapp]
disabled = false
role = "WebAppRole"
💡 注: ID およびアクセス管理は、API とデータへのアクセスを管理する Piiano Vault の強力な機能です。
次に、[Users(ユーザー)]タブに移動し、データ パイプラインで使用できるように PublicPatientsTokenizer ユーザーのオプション ボタンを開いて API キーを再生成し、新しいキーをコピーして変数値として使います。
トークン化 API キーの生成
- PIIANO_VAULT_BASE_URL:これは Vault エンドポイントです。Piano Vault ダッシュボードに戻ってエンドポイントの値をコピーし、それを変数値として貼り付けます。
- クションの名前です。このユースケースでは、これを patients と呼びます。
- 次に、「Save(保存)」をクリックしてパッケージ変数を設定します。
パッケージのセキュリティ変数の設定
5. データ パイプラインの構築:ここで、患者ファイルの処理や、機密性の高い SSN フィールドのデータをトークン化するための ETL データ パイプラインを構築します。
抽出 - ソース ファイルの読み取り:[Add conponent(コンポーネントの追加)]をクリックして、ファイル ストレージ コンポーネントを作成します。
- 「patients」という名前を付けます。
-
SFTP To Go 接続を選択し、[Next(次へ)]をクリックします。
- ソース パスに /patients.csv と入力します。ファイル ストレージのデフォルト設定で十分なので、[Next(次へ)]をクリックします。
- ファイルを読み込んでスキーマを決定しようとする試みは開始されず、ファイルのプレビューと、検出されたフィールドのリストが表示されるはずです。このソリューションでは、すべてのフィールドを選択します。このステップで、Integrate.io はデータを理解して正しく処理することができるようになります。
- 次に、[Save(保存)]をクリックしてコンポーネントの状態を更新します。
ファイルストレージソースコンポーネントを使って患者データを抽出
6. このソリューションでは、一般的に使われる Select 変換コンポーネントを使って、CSV 行ごとに Piiano Vault API を呼び出します。このステップでは、機密フィールドをトークン化に送信するという魔法が起こります。
- これを行うには、先ほど追加した患者コンポーネントにマウスを移動し、プラス ボタンをクリックして変換コンポーネントのリストを開きます。Select コンポーネントを選択します。
- 次に、新しいコンポーネントをクリックして設定を編集し、名前を tokenized にします。このソリューションでは、ID とトークン化された SSN フィールドのみを保持し、フィールド式の指定セクションで、プラス ボタンをクリックして新しいフィールドを追加します。そして式とエイリアスに Id と入力し、プラス ボタンをクリックして別のフィールドを追加します。これを使って、SSN フィールドの値をトークン化します。
- SSN をトークン化するために、決定論的なトークン タイプを使って、同じデータの複数回の実行に耐性を持たせます。トークンタイプの詳細については、Piano Vault のドキュメントを参照してください。そしてそのトークンは機密情報を置き換えて、データのセキュリティとコンプライアンスを維持します。
これを行うには、フィールドの式部分に次の式を貼り付け、フィールドのエイリアス部分に SSN_Token を貼り付けます:
JsonExtractScalar(Curl('$PIIANO_VAULT_BASE_URL/api/pvlt/1.0/data/collections/$PIIANO_VAULT_PATIENTS_COLLECTION/tokens?reason=AppFunctionality', 'POST', '{"Authorization": "Bearer $PIIANO_VAULT_API_KEY", "Content-Type": "application/json"}', SPRINTF('[{ "type": "pci", "object": { "fields": { "SSN": "%s" }}, "props": ["SSN"]}]', SSN))#'body', '$[0].token_id')
SSN フィールドをトークン化する変換コンポーネント
💡 注: この式は基本的に、先ほど定めたパッケージ変数を使って Piiano Vault の Tokenize API を呼び出し、応答からトークン ID を抽出します。
7. 格納 ‐ 処理されたデータを保存する:処理済みおよびトークン化されたデータを SFTP ストレージに戻す最後のステップとして、新しいファイル ストレージのデスティネーションを接続します。その際、処理済みのファイルは、単一の CSV ファイルとして /processed フォルダーに保存されます。デスティネーションコンポーネントを開き、/processed をターゲット ディレクトリとして設定します。このソリューションでは、出力をプレビューするため、圧縮しません。
デスティネーションのアクションで、「Use intermediate storage and copy files to a new directory in destination(中間ストレージを使ってファイルをデスティネーションの新しいディレクトリにコピーする)」を選択し、大きなデータセットを単一のファイルにまとめられるように、「Merge output to single file(出力を単一のファイルに結合する)」をチェックします。以下の画像で、データパイプラインがどのように見えるかを見てみましょう。
完全なデータフローパイプライン
8. パイプラインの実行:最後に、パイプラインを実行します。パッケージ デザイナーで、[Save & Run(保存して実行)]をクリックしてパッケージの最新バージョンを保存して実行します。ジョブを実行するには、クラスターが必要なのでクラスターを作成します。次に、[Run job(ジョブの実行)]をクリックします。
ジョブの実行には、クラスターのサイズと処理するファイルのサイズに応じて数分かかる場合があります。
クラスターを選択
9. 処理されたファイルのプレビュー:最後に、トークン化された患者の SSN を含むファイルを取得します。プレビューするには、SFTP To Go ファイル ブラウザーに戻り、/home/integrateio/processed に移動します。そこで part-r-00000.csv という名前のファイルが表示されるので、生成されたファイルをクリックしてプレビューします。
処理されたファイルをプレビューする
Integrate.io のスケジューラでパイプラインを自動化する
データ処理パイプラインがスケジュールされた間隔で自動的に実行されるようにするには、Integrate.io のスケジューラを使うといいでしょう。これにより、手動による介入なしに、データの読み取り、トークン化、および保存のプロセスを自動化できます。
- [Schedule(スケジュール)]に移動して、[New Schedule(新しいスケジュール)]をクリックします。
- スケジュールに「 Daily Patients Processing」などの名前を付けます 。
- Cron 式を選択し、0 8 * * * (毎日午前 8 時に実行) に設定します。
- ジョブが使うクラスター サイズを設定します。
- 実行するパッケージを選択してTokenize Demo パッケージを選択します。特定のバージョンに固定しない限り、最新バージョンが使用されます。
- スケジュールを作成するには、[Create schedule(スケジュールの作成)]をクリックします。
cron ベースのスケジュールを作成する
トークンを使って SSN を取得する
トークンから SSN を取得するには、Piano Vault が提供するトークン解除機能を使う必要があります。このプロセスでは、トークンを使って Piiano Vault API にリクエストを送信し、リクエスト元に必要な権限がある場合は元の機密データが返されます。
-
適切な権限を確認する:まず、トークン解除に使うユーザーまたは API キーに、Piano Vault IAM 設定で適切な権限が設定されていることを確認します。ユーザーは、関連するリソースに対してトークン解除操作を許可されていないといけません。。
- API 呼び出しを行う:次の API 呼び出し形式を使って、データをトークン解除します。
curl -X POST $PIIANO_VAULT_BASE_URL/api/pvlt/1.0/data/collections/$PIIANO_VAULT_PATIENTS_COLLECTION/tokens/detokenize \-H "Authorization: Bearer $PIIANO_VAULT_API_KEY" \-H "Content-Type: application/json" \-d '{ "token_id": "<TOKEN_ID>", "props": ["SSN"]}'
<TOKEN_ID> を、トークン化解除する実際のトークンに置き換えます。応答には、提供されたトークンに対応する元の SSN が含まれます(存在する場合)。
- 応答の処理:API 応答には、元の SSN が機密情報として含まれます。コンプライアンスとデータ保護基準を維持するために、データが安全に処理および保存されることを確認してください。
これらの手順に従うことで、トークンから SSN などの機密情報を安全に取得し、高いレベルのデータ セキュリティを維持しながら必要な操作を実行できるようになります。
まとめ
SFTP To Go、Integrate.io、Piiano Vault を統合すると、機密性の高い CSV データの処理とトークン化のための合理的で安全なソリューションが得られます。このアプローチにより、データ保護規制への準拠の保証、データ漏洩のリスクの最小化、全体的なデータ処理プロセスのシンプル化が実現します。そしてこれらのプラットフォームを活用することで、さまざまな業界の組織が機密情報を効率的に管理し、データ セキュリティ体制を簡単に強化できるようになります。
Q&A
Q: データ トークン化 (またはデータのトークン化))とは何ですか? また、なぜ重要なのでしょうか?
A: データのトークン化とは、機密データをトークンと呼ばれる非機密データに置き換えるプロセスです。このプロセスにより、データのプライバシーと保護の強化、規制遵守のシンプル化、データ侵害のリスクの最小化が実現抑します。
Q: Piiano Vault を使ってトークン化できる機密データの種類は何ですか?
A: Piiano Vault は、個人識別情報 (PII)、カード所有者データ (CHD)、個人アカウント番号 (PAN)、ペイメントカード業界 (PCI)、社会保障番号 (SSN)、個人健康情報 (PHI) など、さまざまな種類の機密データをトークン化できます。
Q: なぜデータの統合と処理に Integrate.io を使う必要があるのでしょうか?
A: Integrate.io は、複雑なデータ ワークフローを設計および自動化するための使いやすいツールを提供する堅牢なデータ統合プラットフォームであり、さまざまなデータ ソースと送信先をに対応することから、スムーズなデータ処理と変換プロセスを保証し、さまざまな規制基準への準拠を保証します。
Q: SFTP To Go とは何ですか? また、データ セキュリティにどのように貢献しますか?
A: SFTP To Go は、SFTP プロトコルを使ってファイル転送を処理する安全なクラウド ストレージ サービスであり、暗号化とアクセスコントロールによってデータのセキュリティが確保されるため、機密ファイルの保存と交換の自動化に最適です。
Q: Piiano Vault はトークン化されたデータのセキュリティをどのように確保しますか?
A: Piiano Vault は、高度な暗号化技術とアクセスコントロールを使って、トークン化されたデータを保護します。また、機密情報を管理し、さまざまな規制基準への準拠を保証する、非常に堅牢で回復力のあるセキュリティ エンジニアリング プラットフォームを提供します。
Q: このソリューションを拡張して、機密データなどの他の種類のデータをトークン化することはできますか?
A: はい、このソリューションは他の種類の機密データをトークン化するように拡張できます。たとえば、PHI データを含む allergies.csv などの他の合成 CSV ファイル内のフィールドを処理してトークン化できます。
Q: 公開データセットを使う必要がありますか、それとも独自のデータを使ってもいいですか?
A: このガイドではデモンストレーションの目的で公開データセットを使っていますが、機密データを含む独自の CSV ファイルを使うこともできます。同様の手順に従って、データ処理パイプラインを設定して保護してください。
Q: Integrate.io、Piiano Vault、SFTP To Go の使用にかかるコストはいくらですか?
A: 各プラットフォームには無料トライアルがあります(Integrate.io は 14日間、Piano Vault は7日間、SFTP To Go は7日間)。詳しい価格については、Integrate.io、Piano Vault、SFTP To Go の各 Web サイトをご覧ください。
Q: Integrate.io で大規模なデータセットを効率的に処理するにはどうすればいいですか?
A: Integrate.io はスケーラブルなデータ処理に対応しており、データセットのサイズに基づいて分散処理クラスターを設定できるため、データフロー パッケージが大規模なデータ処理に最適化されます。
Q: セットアップ中に問題が発生した場合、どこでサポートを受けることができますか?
A: 問題が発生した場合は、Integrate.io、Piiano Vault、SFTP To Go のサポート チームにお問い合わせください。サポート チームでは、包括的なドキュメントとカスタマー サポートを提供しています。