Amazon Web Services ブログ
AWS Clean Rooms によるスコープ 3 排出量のデータ機密管理
この記事は、Managing data confidentiality for Scope 3 emissions using AWS Clean Rooms を翻訳したものです。
スコープ 3 の排出量は、企業活動の結果による間接的な温室効果ガス排出であり、企業の直接的管理または所有権範囲の外側で発生します。これらの排出量を測定するには、原材料のサプライヤー、輸送業者、その他の第三者組織など、さまざまな外部ソースからデータを収集する必要があります。スコープ 3 のデータ収集に関する主な課題の1つは、企業の専有情報を第三者のサプライヤー間で共有する際に、データの機密性を確保することです。各組織は、競合他社が使用する可能性のある情報を共有することをためらっています。そのため、企業がスコープ 3 の排出量を正確に測定して報告することが難しくなります。その結果、気候関連の影響やリスクを管理する企業能力は制限されてしまいます。
このブログでは、AWS Clean Rooms を使用して、スコープ 3 の排出量をレポートする会社と2社のバリューチェーンパートナー (原材料のサプライヤーと輸送業者)間でデータを共有する方法を示します。データの機密保持要件は、AWS Clean Rooms のコラボレーションに参加する前に各組織によって指定されています (図1 を参照)。
各アカウントには、次のような機密データがあります。
- 列1は、原材料の原産地を示しています。これはサプライヤーにとってビジネス上の機密情報です。
- 列2には、原材料レベルでの排出係数が記載されています。これはサプライヤーにとって機微情報です。
- 列3は輸送手段を示しています。これは輸送業者にとってビジネス上の機密情報です。
- 列4には、個々の品目の輸送による排出量が記載されています。これは輸送業者にとって機微情報です。
- 列5の行には、製品レシピが原材料レベルで一覧表示されています。これはレポート会社にとって企業秘密情報です。
ソリューションの概要
このアーキテクチャでは、AWS Clean Rooms を使用して、元になるデータを共同作業者に共有、移動、公開することなく、排出量データセットの分析と共同作業を行うことができます (図2 を参照)。
このアプローチのデモンストレーションには、3 つの AWS アカウントが使用されています。Reporting Account (レポートアカウント)は AWS Clean Rooms でコラボレーションを作成し、Purchased Goods Account (購買品アカウント) と Transportation Account (輸送アカウント)をメンバーとして招待します。すべてのアカウントは、AWS Glue テーブルを使用することで、Amazon Simple Storage Service (S3) からデータを提供する際のデータアクセスコントロールを使用し、元となるデータを保護できます。
Purchased Goods Account には、購買品データのバケットを更新できるユーザーがいます。同様に、Transportation Account には輸送データのバケットを更新できるユーザーがいます。Reporting Account は、設定されたテーブルに対して SQL クエリを実行できます。AWS Clean Rooms は、参加しているすべてのアカウントが設定した分析ルールに準拠した結果のみを返します。
前提条件
このウォークスルーには、以下の前提条件が必要です。
- 同じ AWS リージョンにある 3 つの AWS アカウント
- 排出量データを格納する各アカウントの Amazon S3 バケット (図1 を参照)
- 各 S3 バケットに保存されている排出量データの AWS Glue データカタログ
Amazon S3 と AWS Clean Rooms は 無料利用枠 の対象ですが、AWS Glue には少額の課金が発生します。コストを最小限に抑えるために、このブログ記事の後半でクリーンアップ作業について説明します。
設定
各 AWS アカウントの S3 バケットを次のように設定しました。
- Reporting Account: reportingcompany.csv
- Purchased Goods Account: purchasedgood.csv
- Transportation Account: transportation.csv
Glue データカタログ デベロッパーガイド の方法に従って、S3 データソースごとに AWS Glue データカタログを作成します。AWS Glue テーブルは、それぞれのアカウントについて、前述の 図1 で説明したスキーマと一致している必要があります (図3 を参照)。
データコンシューマーは、クエリの取り込み、分析、視覚化を行うように構成できます (図2 を参照)。Reporting Account の Glue データベースには「reporting-db」、Glue テーブルには「reporting」というタグを付けます。 同様に、Purchased Goods Account には「purchase-db」と「purchase」タグを付けます。
セキュリティ
本番環境で各アカウントを保護するには、追加のアクションを実行することをお勧めします。暗号化を設定するには、この記事の最後にある「参考文献」セクション、AWS Identity and Access Management (IAM) ロール、および Amazon CloudWatch を確認してください。
ウォークスルー
このウォークスルーは次の 4 つのステップで構成されています。
- Reporting Account は AWS Clean Rooms コラボレーションを作成し、Purchased Goods Account と Transportation Account にデータを共有するよう依頼します。
- Purchased Goods Account と Transportation Account がこの招待を受け入れます。
- AWS Clean Rooms コラボレーションアカウント間でのデータ共有方法を制限するルールが各コラボレーションアカウントに適用されます。
- SQL クエリは Reporting Account で作成され、実行されます。
1. Reporting Account で AWS Clean Rooms コラボレーションを作成
(このセクションで説明する手順では、Reporting Account にログインする必要があります。)
- AWS Clean Rooms コンソールに移動し、[コラボレーションを作成] をクリックします。
- 詳細セクションの名前フィールドに「Scope 3 Clean Room Collaboration」と入力します。
- 「メンバー 1」セクションまでスクロールします。メンバー表示名フィールドに「Reporting Account」と入力します。
- 「メンバー 2」のセクションで、最初のコラボレーションメンバー名として「Purchased Goods Account」と入力し、そのアカウント番号をメンバー AWS アカウント ID のボックスに入力します。
- [別のメンバーを追加] をクリックし、3つめのコラボレーターとして「Transportation Account」とその AWS アカウント番号を追加します。
- メンバー能力セクションで、クエリを実行して結果を受け取ることができるメンバーとして「Reporting Account」を選択します。[次へ] をクリックします。
- 「はい、今すぐメンバーシップを作成してご入会ください」を選択します。[次へ] をクリックします。
- 確認と作成のページでコラボレーション設定を確認し、[コラボレーションとメンバーシップを作成する] を選択します。
その後、両方のアカウントがコラボレーションを受け入れるための招待を受け取ります (図4 を参照)。承認されるまで、コンソールには各メンバーのステータスが「招待済み」と表示されます。次に、招待されたメンバーがデータにクエリ制限を適用する方法を示します。
2. 招待を受け入れ、テーブルのコラボレーションルールを設定
このセクションの手順は、コラボレーション環境の設定後にPurchased Goods Account と Transportation Account に適用します。簡潔にするため、Purchased Goods Account を使用する手順を説明します。Transportation Account での違いも記載しています。
- Purchased Goods Account を所有している AWS アカウントにログインし、コラボレーションへの招待を承諾します。
- AWS Clean Rooms コンソールを開き、左側のナビゲーションペインで [コラボレーション] を選択し、[参加可能] タブをクリックします。
- 「Scope 3 Clean Room Collaboration」からの招待が表示されます。「Scope 3 Clean Room Collaboration」をクリックし、[メンバーシップを作成] をクリックします。
- [テーブル] タブを選択し、[テーブルを関連付ける] を選択します。[新しいテーブルを設定] をクリックします。
次のアクションは、purchasedgoods.csv ファイルから作成された Glue テーブルを関連付けることです。この手順により、コラボレーションの origin_region 列 (Transportation Account のテーブルの場合は transportation_mode 列) へのアクセスが制限されます。
- 「Scope 3 Clean Room Collaboration」では、左側のペインで [設定済みテーブル] を選択し、次に [新しいテーブルを設定] を選択します。purchasedgoods.csv に関連する AWS Glue テーブルを選択します (図5 を参照)。
- AWS Glue データベース (purchase-db) と AWS Glue テーブル (purchase) を選択します。
- [AWS Glue のスキーマ表示] トグルを切り替えて、テーブルセクションが正しいことを確認してください。
- 「コラボレーションで許可された列」セクションで、origin_region を除くすべてのフィールドを選択します。この操作により、コラボレーションで origin_region 列にアクセスしたり表示したりできなくなります。
- [新しいテーブルを設定] を選択してこのステップを完了します。
- [分析ルールを設定] を選択します (図6 を参照)。
- 集約 タイプを選択し、[次へ] を選択します。
- 集約関数として SUM を選択し、列として s3_upstream_purchased_good を選択します。
- 「結合コントロール」で、「結合列を指定」を選択します。オプションのリストから item 列を選択します。これにより、SQL 結合クエリを item 列で実行できます。[次へ] をクリックします。
- 次のページでは、
join
コマンドで集計するユニーク行の最小数を指定します。「列名」に item を選択し、「個別値の最小数」に 2 を選択します。[次へ] をクリックします。 - テーブル設定を確認して、[分析ルールの設定] をクリックします。
- 最後のステップは、[コラボレーションに関連付ける] をクリックし、プルダウンメニューで「Scope 3 Clean Room Collaboration」を選択することです。ページの更新後に [テーブルを関連付ける] を選択します。
以下の例外を除いて、このセクションの手順を Transportation Account についても繰り返してください。
- このコラボレーションで共有される列は、item、s3_upstream_transportation、unit です。
- 集約関数は s3_upstream_transportation 列に適用される SUM です。
- item 列には、個別値の最小数が2という集約制限があります。
3. Reporting Account 内のテーブルコラボレーションルールを設定
この段階で、メンバーアカウントのテーブルが作成され、コラボレーション内で共有されています。次のステップは、Reporting Account の AWS アカウントでテーブルを設定することです。
- AWS Clean Rooms に移動します。「設定済みテーブル」を選択し、「新しいテーブルを設定」を選択します。
- ファイル reportingcompany.csv に関連する Glue データベースとテーブルを選択します。
- 「コラボレーションで許可された列」で「すべての列」を選択し、「新しいテーブルを設定」を選択します。
- コラボレーションルールを設定するには、「分析ルールを設定」をクリックしてガイド付きワークフローを使用します。
- 集約 タイプを選択し、「次へ」を選択します。
- 集約関数としてSUMを選択し、ingredient 列を指定します (図7 を参照)。
- 「結合列を指定」セクションで ingredient 列を選択することで、この列と結合したSQL クエリのみ実行できるようになります。
- ディメンションコントロールで、product を選択します。このオプションで、SQL クエリで製品名別にグルーピングできるようになります。
- スカラー関数セクションで「なし」を選択します。[次へ] をクリックします。スカラー関数の詳細については、AWS Clean Rooms ユーザーガイド をご覧ください。
- 次のページで、「列名」に ingredient を選択し、「個別値の最小数」に 2 を選択します。[次へ] をクリックします。
- [確認と構成] ウィンドウで設定を確認し、[分析ルールの設定] を選択します。
- 「設定済みテーブル」タブ内で、[コラボレーションに関連付ける] を選択します。テーブルを「Scope 3 Clean Room Collaboration」に割り当てます。
- ドロップダウンメニューで 「Scope 3 Clean Room Collaboration」を選択し、[コラボレーションを選ぶ] を選択します。「Scope 3 Clean Room Collaboration」のページで、「reporting」テーブルを選び、[テーブルを関連付ける] をクリックします。
4. SQL クエリを作成して実行する
これで、Reporting Account 内でクエリを実行できるようになりました (図8 を参照)。
- クエリ結果を出力する S3 バケットを選択します。[アクション] を選択し、[結果設定を編集] を選択します。
- S3 バケット名を入力し、[変更内容を保存] をクリックします。
- 次の SQL スニペットをクエリテキストエディターに貼り付けます (図8 を参照)。
- [実行] をクリックします。クエリ結果は、最初のクエリでは数分後に表示されるはずですが、それ以降のクエリではそれほど時間はかかりません。
まとめ
この例は、Clean Rooms が共同作業者全体のデータを集約して、購入した原材料や輸送による各製品のスコープ 3 排出量の合計を算出する方法を示しています。このクエリは、元となる排出係数や独自の製品レシピを互いに明らかにすることなく、3つの組織間で実施されました。これにより、データの機密保持に関する懸念が軽減され、サステナビリティに関するレポートの透明性が向上します。
クリーンアップ
このウォークスルーで作成されたすべてのリソースをクリーンアップするには、次の手順を実行します。
- メンバーアカウントとコラボレーションアカウント:
- AWS Clean Rooms: コラボレーションテーブルの関連付け解除と削除
- AWS Clean Rooms: コラボレーションのメンバーアカウントを削除
- AWS Glue: クローラー、データベース、テーブルを削除
- AWS IAM: AWS Clean Rooms サービスポリシーを削除
- Amazon S3: CSV ファイルストレージバケットを削除
- コラボレーションアカウントのみ
- Amazon S3: SQL クエリバケットを削除
- AWS Clean Rooms: Scope 3 Clean Room Collaboration を削除
参考文献
- Greenhouse Gas Protocol Scope 3 Standard
- AWS Clean Rooms
- AWS Clean Rooms ユーザーガイド
- AWS Glue Data Catalog の開始方法
- S3のデータをAmazon Athenaを使って分析する
セキュリティのプラクティス
- AWS Clean Rooms でのセキュリティ
- IAM Roles を作成して、S3 と Clean Rooms のアクセスポリシーを 最小権限で適用する
- S3 バケットに 暗号化ルール をキーローテーションで適用する
- AWS Clean Rooms API コールのログ記録に Cloud Trailを使用する
- KMS キー を使って Glue テーブルを暗号化する
翻訳はソリューションアーキテクト 中山 七美 が担当しました。原文はこちらです。