はじめに
こんにちは。NTT データ クラウド技術部です。 私たちは、5~10年先のビジネスで活躍するような先進技術にも焦点を当てて、調査や研究に取り組んでいます。 前回はAWSの量子コンピューティングサービスである「Amazon Braket」 の概要についてご紹介させていただきました。
今回の記事では、ビジネスにおける重要事項の1つである「セキュリティ」に焦点を当てて深掘りをしていきたいと思います。
なお、今回の記事の内容は2022年8月時点のAWSの公開情報から判断した弊社の見解です。量子コンピュータ(以下、「QPU」と表記)自体が発展途上にある上に、Amazon Braketも比較的新しいサービスなので、今後のアップデートで変更になる可能性がある点に注意してください。
Amazon Braketのセキュリティ
ここからAmazon Braketのセキュリティを詳細に見ていきたいと思います。
まずは、AWSにおいてセキュリティを考える際に基本となる「AWS責任共有モデル」について確認します。その後、AmazonBraketの基本的な使い方を確認しながら、それぞれのステップで必要となるセキュリティについて見ていきたいと思います。
AWS責任共有モデル
AWSにおいてセキュリティを考える際の基本となるのが「AWS責任共有モデル」です。なお、AWSの利用経験があって内容を熟知している場合は、本パートを読み飛ばしても問題ありません。
AWS責任共有モデルとは、クラウド事業者であるAWSとその利用者である私たちのそれぞれの責任範囲を明確にして、AWSクラウドをセキュアに利用していくためのフレームワークです。
それぞれが担うべき責任範囲は下記です。
- AWSが負う責任:クラウドのセキュリティに対する責任(Responsibility for security 'of' the cloud)
- 利用者が負う責任:クラウド内のセキュリティに対する責任(Responsibility for security 'in' the cloud)
これを詳細化したものが下図です。
かみ砕いて説明すると、AWSはクラウド事業者としてセキュアなサービスや機能を提供する責任を負います。一方で、利用者はAWSクラウド上でセキュアなアプリケーションを運用し、AWSクラウドに持ち込むデータや新たに生成したデータをセキュアに扱う責任を負います。
AWS責任共有モデルは、利用するサービスによって責任範囲が変わります。上図は利用者の責任範囲が最も広いAmazon EC2に代表されるパターンです。
AWS責任共有モデルのパターンは、「Infrastructure Services(インフラストラクチャサービス)」「Container Services(コンテナサービス)」「Managed Services(マネージドサービス)」の3種類があり、それぞれの範囲は下図のようになります。
Amazon Braketは、サービスの紹介ページや開発者ドキュメントで「フルマネージドなAWSサービス」と謳われています。上図右の「Managed Services(以下、マネージドサービスと表記)」に対応し、Amazon S3、AWS KMS、AmazonDynamoDBなどと同様の位置付けと考えられます。マネージドサービスはカスタマイズの余地が少なく利用者側の責任範囲が狭い反面、利用者が下回りのサーバやストレージなどのインフラストラクチャの管理をする必要がなく、アプリケーションの開発に集中できます。
マネージドサービスにおいて利用者の責任範囲で実施すべきものは、下記の3つです。
- クライアント側のデータ暗号化とデータ整合性認証(CLIENT-SIDE DATA ENCRYPTION)
- 利用者のデータ(CUSTOMER DATA)
- IDとアクセス管理(CUSTOMER IAM)
上記以外はAWSの責任範囲です。 Amazon Braketのサービスを提供するアプリケーションやそれを支えるサーバ、ストレージ、ネットワークなどのインフラストラクチャやデータセンタの維持運用などはすべてAWSの責任のもとで実施されます。
【注意】サービスの分類名について
上図の3つのサービスの分類名はAWSブログ「AWS 責任共有モデルを GxP ソリューションに適用する」によるものです。厳密な定義ではなく、ドキュメントによっては違う名称が使われている可能性がある点に注意してください。
例えば、Amazon RDSの製品ページでは「マネージドデータベース」と紹介されており、「コ ンテナサービス」とは紹介されていません。一方で、各サービスの特徴を踏まえると、責任範囲は上図の通りと考えられます。利用するサービスの責任範囲を知りたい場合は各サービスの製品ページや開発者ガイドなどを参照してください。
利用者の責任範囲の各項目について詳細を見ていきましょう。
クライアント側のデータ暗号化とデータ整合性認証
利用者のPCやオンプレミスのデータセンタのサーバからAWSクラウドにデータをアップロードすることがあると思います。その際のデータの機密性と完全性を利用者側で確保することが要求されています。 AWSマネジメントコンソールやAmazon S3をはじめとするサービスのAPIのエンドポイントの多くはhttpsによる暗号化通信がサポートされています。利用者側でアップロードするファイルを暗号化する、アップロード前後のファイルのハッシュ値を比較するなどの対策を実施すると、更に機密性や完全性を高められます。
利用者のデータ
AWSクラウド内でのデータの管理は利用者の責任となります。 AWSは利用者のデータへのアクセス権限を持っておらず、利用者が責任を持って管理していく必要があります。
Amazon S3をはじめとする多くのストレージサービスではAWS KMSによる蓄積データの暗号化がサポートされており、これを利用することで機密性や完全性を確保できます。
可用性の観点では、Amazon S3のように複数のAZに分散してデータのレプリカを保持する仕組みを備えるサービスもあります。一方で、ノートブックインスタンスのストレージのように単一のAZにしかデータを保持しないサービスもあるため、それぞれの特徴を踏まえて適切に可用性を確保する必要があります。 また、利用者が実装するアプリケーションは利用者の組織や信頼のおける組織が提供するセキュアなコーディング規約にしたがって開発するなどアプリケーションの実装面でも考慮する必要があります。
IDとアクセス管理
AWSにおけるアイデンティティ管理はAWS IAMを中心に実施します。管理対象はIAMユーザだけでなく、EC2インスタンスのようなコンピューティングリソースをはじめとするAWSの各種リソースも対象となります。
IAMポリシーやIAMロールを通じて必要最小限のアクセス権限を定義することが重要です。必要最小限のアクセス権限は、利用者 のユースケースによって異なる上に、ビジネスの発展とともに変化します。 AWS IAMの機能として提供されているアクセスアドバイザやAWS CloudTrailのログを定期的に監査して、アクセス権限のメンテナンスを行うことが重要です。
また、Amazon S3のBucketポリシーのように各サービスでリソースポリシーが提供されているものがあり、これらも併用してアクセス権限を管理します。
Amazon Braketの使い方とセキュリティの考察
ここからはAmazon Braketの基本的な使い方について確認しながら、各ステップのセキュリティについて考察していきます。なお、ここではAmazon Braketを利用する上でのポイントに焦点を当てることとし、網羅性までは担保していません。網羅性の考慮が必要である場合は、Amazon Braketの製品ページや開発者ガイドをはじめとする公開情報を参照して確認してください。
「ノートブックインスタンスでアプリケーションを開発し、QPU(量子コンピュータ)を使って量子計算を行う」というシンプルなユースケースを考えていきます。
Amazon Braketを利用する際の処理の流れと概要を下の図および表に示します。図の丸番号と下表のNo.を対応づけて読んでください。
表 1. 処理の概要
No.
概要
説明
1
AWSマネジメントコンソールへのログイン
利用者のPCからAWSマネジメントコンソールに接続し、利用者のIAMユー
ザでログインする。Amazon Braketのコンソールに移動する
2
Amazon Braketとサードパーティデバイスの有効化
利用アカウントで初めて利用する場合の初期設定としてAmazon Braketと
サードパーティデバイスの有効化を行う
3
ノートブックインスタンスの作成と接続
ノートブックインスタンスを作成し、Jupyter Notebookインスタンスに接
続する
4
アプリケーションの開発
Jupyter NotebookでAmazon Braket Python SDKを利用し、アプリケーションを開発する
5
タスクの実行
Jupyter NotebookからQPUに量子計算をリクエストする
6
計算結果の出力
Amazon Braket APIがQPUから計算結果を受領し、Amazon S3に計算結
果を格納する
1ステップずつ処理の詳細と考慮すべきセキュリティについて見ていきましょう。
1.AWSマネジメントコンソールへのログイン
AWSマネジメントコンソールにアプリケーション開発者のIAMユーザでログインします。 AWSマネジメントコンソールへの接続はhttpsによる暗号化通信が可能です。
AWSアカウントに関連するベストプラクティスのうち、本稿に関連するものとしてIAMユーザー権限管理および課金管理に関して下記のような対策があります。
IAMユーザー権限管理
- IAMユーザは共用せずに個人単位に割り当てる
- 二要素認証を設定する
- IAMユーザには必要最小限のアクセス権限を付与する
- 強力な権限を持つルートユーザを利用しない
- AWS CloudTrailの証跡を有効化してAPIの実行履歴を取得し、定期的に証跡を監査する
課金管理
- 課金アラートを設定する
【Tips】AWSアカウント作成後に実施すべきセキュリティ対策
AWSから下記のようなハンズオンが提供されているので、AWSを使い始めたばかりの場合は参考にすると良いでしょう。
「IAMユーザには必要最小限のアクセス権限を付与する」について補足します。
利用者の要件やユースケースによって「必要最小限のアクセス権限」が異なるため、一概に「これを実施すれば良い」というものはありません。利用者のAWSを利用する状況に応じて適切な検討および設計をする必要があります。
AWSでは「管理ポリシー」と呼ばれる豊富なIAMポリシー群が提供されています。これらの管理ポリシー群は該当サービスの想定ユースケースをもとに設計されていると考えられ、そこで必要なアクセス権限があらかじめ定義されています。まずは管理ポリシーの利用を考えると良いでしょう。
Amazon Braketでは、下記の管理ポリシーが提供されています。
表 2. Amazon Braketの管理ポリシー
ポリシー名 | 付与されるアクセス権限 |
---|---|
AmazonBraketFullAccess |
|
AmazonBraketJobsExecutionPolicy |
|
Amazon Braketの管理ポリシーは上記の二択であるため選択肢が限られますが、量子コンピュータの扱いには専門知識が必要であり、開発者がAmazon Braketに関する多くの作業を担うことが多いためと考えられます。これではアクセス権限が大きい場合は、利用させたくない機能をIAMポリシーで定義して、IAMユーザやIAMグループにアタッチすると良いでしょう(ブラックリスト形式による制約)。
例えば、開発者ガイドには、QPU の利用を制限する例が紹介されています。米国東部(バージニア)(us-east-1)でIonQを利用できないようにしたい場合は下記のようなIAMポリシーを定義して、IAMユーザやIAMグループにアタッチします。
このようにIAMポリシーを定義することでQPUのデバイス単位で利用可否を制御できます。他にもアクション単位での利用可否を制御するなど利用者の要件に合わせて定義が可能です。
また、IAMポリシーやIAMロールには「アクセスアドバイザー」という機能があります。 IAMポリシーやIAMロールに付与されたアクセス権限への履歴が提示されるため、定期的にアクセス権限の棚卸しを行い、必要最小限のアクセス権限を目指すと良いでしょう。
ただし、早期に対応すると必要なアクセス権限も制約してしまう恐れがあるため、必要なワークロードをすべて実行した上で見直しを行ってください。例えば、下記は「Amazon Elastic Container Registry」へのアクセスが記録されていませんが、HybridJobsを利用する場合はアクセス権限が必須となります。
2. Amazon Braketとサードパーティデバイスの有効化
Amazon Braketは初回接続時に「Amazon Braket」と「サードパーティデバイス」の有効化が必要となります。有効化は「AmazonBraketFullAccess」のアクセス権限を持つIAMユーザで実施が必要です。
Amazon Braketを有効化すると、「AWSServiceRoleForAmazonBraket」という名前のロールが作成されます。これは「サービスにリンクされたロール」と呼ばれており、Amazon Braketに関連サービスであるAmazon S3、Amazon CloudWatchへのアクセス権限を与えるためのロールです。
また、ここでいう「サードパーティデバイス」とは、Rigetti社のAspen-11などのデバイス(QPU)となります。これらのデバイスがそれぞれのサードパーティ(開発ベンダ)の運用するデータセンタでホストされていること、量子計算に必要なデータを送付して処理することが利用規約(terms and condition)として記載されています。利用規約の内容に問題がないことを確認した上で有効化します。詳細は後続のNo.5で解説します。
3. ノートブックインスタンスの作成と接続
開発環境としてノートブックインスタンスが利用できます。ノートブックインスタンスではマネージドなJupyter Notebookの開発環境が提供され、これを利用して開発ができます。なお、ノートブックインスタンスの作成には「AmazonBraketFullAccess」が必要です。
ノートブックインスタンスの作成において、ポイントが3点あります。
a. 関連サービスへのアクセス権限を付与する
b. AWS KMSによる蓄積データの暗号化をする
c. ノートブックインスタンスを利用者のVPCで稼働させる
それぞれのポイントについて詳しく見ていきます。
a. 関連サービスへのアクセス権限を付与する
ノートブックインスタンスにはAmazon Braketへのアクセス権限に加えて、計算結果の出力先となるAmazon S3や実行ログを格納するAmazon CloudWatchなどの関連サービスへのアクセス権限を付与する必要があります。
ノートブックインスタンスの作成画面から下記のアクセス権限を持つIAMロールを作成できます。作成に成功すると、「AmazonBraketServiceSageMakerNotebook」から始まるIAMロールが作成されます。
- Amazon S3 Bucketへの書き込み、読み込み権限
- Amazon CloudWatch Logsへの書き込み、読み込み権限
- AmazonBraketFullAccess
b. AWS KMSによる蓄積データの暗号化をする
ノートブックインスタンスは専用のストレージを備えており、AWS KMSの暗号鍵を使って暗号化できます。利用者のセキュリティの要件によっては蓄積データの暗号化が必須となる場合がありますが、対応できます。
c. ノートブックインスタンスを利用者のVPCで稼働させる
利用者のセキュリティやネットワークの要件によっては、ノートブックインスタンスの通信の制御が必要となる場合があります。
ノートブックインスタンスは利用者の管理するVPCで稼働させることが可能であり、セキュリティグループやネットワークACLを利用した通信の制御が可能です。なお、VPCを指定しない場合は、AWSが管理するアカウントのVPCで稼働します。
ノートブックインスタンスをVPCで稼働させた場合、VPCエンドポイントを経由して他サービスにアクセスする必要がある点に注意してください。すなわち、追加のリソース作成が必要となり、その分のリソースの利用料金がかかります。
VPCエンドポイントはインターフェース型とゲートウェイ型の2種類がありますが、対応サービスと課金体系が異なります。なお、Amazon S3はインターフェース型とゲートウェイ型の双方のVPCエンドポイントが提供されています。
表 3. VPCエンドポイントの種類と課金体系
種類 | サービス | 課金体系 |
---|---|---|
インターフェース型 |
|
|
ゲートウェイ型 |
|
|
VPCエンドポイントは多くのサービスでサポートされていますが、ローンチされたばかりのサービスなど一部対応していないものがあります。その場合はインターネットゲートウェイ経由でのアクセスが必要です。ノートブックインスタンスをプライベートサブネットで稼働させる場合は、NATゲートウェイの作成し、これを経由してインターネットにアクセスします。
表 4. インターネットゲートウェイとNATゲートウェイの課金体系
種類 | 課金体系 |
---|---|
インターネットゲートウェイ(インターネットとのデータ通信) |
|
NATゲートウェイ |
|
【Tips】VPCエンドポイント、インターネットゲートウェイ、NATゲートウェイの料金
各リソースの料金の詳細は下記を参照してください。
また、AWS Pricing Calculatorという便利なツールも提供されており、計算ミスや考慮漏れを防止できます。
4. アプリケーションの開発
Amazon Braketのコンソールからノートブックが提供するマネージドなJupyter Notebookを利用してアプリケーション開発ができます。 Jupyter NotebookではPythonがサポートされており、対話的に処理を実行してその結果を確認しながら開発できます。
AWSからアプリケーション開発のためのライブラリ(SDK)が提供されています。
- Amazon Braker Python SDK:Amazon Braket専用のSDK
- AWS SDK for Python(Boto3) :AWSの多くのサービスを利用するためのSDK
また、Pythonでのアプリケーション開発でよく利用されるNumPyやPandasをはじめ、PennyLaneやQiskitなどの量子アプリケーション開発で利用されるライブラリも利用可能であり、利用者の多彩なニーズに対応できます。
量子計算では、QPU(量子コンピュータ)に計算させたい内容を「量子回路(量子ゲート)」として表現し、それを計算のリクエストのパラメータとして送付して、QPUに計算させます。私たちが普段利用する従来型のコンピュータ(古典コンピュータ)ではあまり意識することはありませんが、論理回路(論理ゲート)を多数組み合わせて計算を行なっていますので、これと同じようなことをQPUで実施します。
例えば、「半加算器」というコンピュータに1桁の足し算を実行する回路がありますが、量子回路と論理回路ではそれぞれ下記のような回路で実現します。
量子回路による 1 + 1 を実行する半加算器は下記のように実装できます。
5. タスクの実行
アプリケーションの実装が完了したら、Amazon Braket APIを利用して、QPUに計算のリクエスト行います。
Amazon Braketにおける計算の実行単位は「タスク」です。 QPUによる計算では、計算結果が確率的に得られるため、計算結果に信頼性を持たせるために同じ計算を複数回繰り返す必要があります。その1回あたりの計算のことを「ショット」と呼びます。「タスク:ショット=1:多」の関係となります。
タスクを実行するデバイス(コンピューティングリソース)には下記の3つの選択肢があります。
- QPU
- 量子回路シミュレータ
- ローカルシミュレータ
それぞれ下記のようにデバイスの設定を切り替えて利用します。
QPUと量子回路シミュレータでの計算は課金対象となります。一方で、ローカルシミュレータは、ローカル環境となるノートブックインスタンス上で計算を実行するため、ノートブックインスタンスの利用料金の中で賄えます。料金の詳細は「Amazon BraketPricing」を参照してください。
表 5. Amazon Braketの課金要素
課金要素 | 説明 |
---|---|
量子コンピュータ | 後述する「タスク数」と「ショット数」に対する従量課金。利用する量子コン ピュータ(QPU)の種類によって単価が異なる |
量子回路シミュレータ | シミュレータの実行時間に対する従量課金。利用するシミュレータの種類によって 単価が異なる |
また、QPUは限られた台数に全世界からリクエストがあるため、QPUに計算のリクエストを送ると待ち行列に追加されます。その後、Amazon Braket APIからQPUに対してポーリングが行われて、実行状況を確認が行われます。現状では計算結果を得るまでに時間がかかる点に注意が必要です。場合によっては数時間以上待つことがあります。
QPUでの計算は課金対象であり、結果が得られるまでに時間がかかることを踏まえると、ローカルシミュレータで簡単なテストを行ってからQPUに計算をリクエストした方が良いでしょう。
QPUは開発ベンダの運用するデータセンタでホストされており、AWSのデータセンタの外にあります。すなわち、AWSのデータセンタから離れた場所で計算が行われます。 AWSのデータセンタから離れるとなると、どんな情報が送信されるのか、送信された情報は適切に扱われるのかが気になりますので、詳細を見ていきます。
Amazon Braketにタスクの実行をリクエストするAPIとして run メソッドが用意されています。 QPUでの量子計算に関する情報や計算結果の出力先となるS3 Bucketのパスなどをパラメータとして設定します。
上記のパラメータの意味は、それぞれ下記です。
- 量子回路(half_adder)
- 計算結果を出力するS3 Bucketのパス(s3_location)
- タスクで実行するショット数(shots)
- QPUへのポーリングを実行する時間(poll_timeout_seconds)
- QPUへのポーリングの実行間隔(poll_timeout_seconds)
また、AWSおよびQPUをホストするベンダでは、下記のような対策が行われています。[1]
- データは匿名化され、QPUでの計算に必要な情報のみに抽出される。AWSアカウントの情報も含まれない
- データは暗号化され、暗号化通信にてデータセンタ間を送受信される
- QPUではデータが暗号化された状態保存され、計算の実行時にのみ復号されて処理される
- QPUでの計算以外にデータを利用しない
- AWSはQPUのデータセンタのセキュリティを定期的に監査し、ネットワークセキュリティ、アクセス制御、データ保護、物理的セキュリティの基準が満たされていることを確認している
なお、データの匿名化の手法や暗号化の方式、暗号化通信の方式などの具体的な仕様は公開されていません。 AWSのデータセンタはセキュリティを最優先事項として運用されており、対策の詳細は「AWS のコントロール」で確認できます。
以上のことから、情報が適切に扱われていることがわかるため、AWSから利用者のデータが離れるとしても安心して利用できるという判断材料になると考えられます。
6. 計算結果の出力
QPUでの計算結果を完了すると、Amazon Braket APIは run メソッドの引数に設定したAmazon S3 Buketに計算結果を出力します。その他にもAmazon CloudWatchにタスクの実行に関するメトリクスやログを出力し、AWS CloudTrailにAPIの実行履歴が記録されます。
また、Amazon S3 BucketやAmazon CloudWatch LogsはAWS KMSによる暗号化が可能であり、蓄積データの機密性や完全性を確保できます。
その他の注意事項
ここまでAmazon Braketの基本的な使い方の流れに沿ってセキュリティのポイントについて見てきました。その他に注意すべき点として、下記があります。
- 2022年8月時点では、主要なコンプライアンスプログラムに未準拠である
- QPUの利用時間に制約があるため、利用には工夫が必要である
主要なコンプライアンスプログラムに未準拠
クレジットカード業界におけるPDI DSS、銀行業界におけるFISC安全対策基準など各業界で準拠べきコンプライアンスプログラムが存在する場合があります。
例えば、量子コンピュータは金融業界での利用が期待されていますが、「コンプライアンスプログラムによる対象範囲内のAWSのサービス」を参照すると、2022年8月時点でAmazon Braketは上記のようなコンプライアンスプログラムに準拠していないことがわかります。
ここまで見てきたように、Amazon Braketでは利用者の情報が適切に扱われていることがわかりましたが、セキュリティ要件によってはネックになる可能性があるため注意が必要です。機微な情報そのものを扱うのではなく、別のシステムで符号化したり、別のID体系に付け替えるなどして機微な情報を除くといったテクニックもありますので、加工したデータをAmazon Braketで利用できないか検討すると良いでしょう。
QPUの利用時間に制約がある
セキュリティの要素の1つもなっている可用性に関連します。 前回のWeb記事で紹介したようにQPUの稼働時間が制約があるものが多く、利用者の使いたいタイミングで使えない可能性があります。2022年8月時点では、日本時間で下記の時間帯でのみ利用できます(稼働時間はUTCで定義されているものを日本時間に変換しています。「平日」は日本時間で土曜日にかかるものがある点に注意してください)。
- Rigetti社 Aspen-11、M-2(毎日0:00-5:00)
- IonQ社 IonQ(平日22:00-11:00)
- Oxford Quantum Circuits社 Lucy(平日18:00-21:00)
- Xanadu社 Borealis(平日0:00-2:00)
- D-Wave社 Advantage 6.1、4.1、D-Wave 2000Q(常時稼働)
また、各QPUの台数や冗長化の状況は非公開ですが、単一もしくは少ない台数での稼働が想定されます。下記のように計画外メンテナンスの実施により利用できないことがあるため、QPUの利用時に確認すると良いでしょう。
ここで挙げた注意事項はいずれも量子コンピュータ自体が発展途上にあるために発生している問題と考えられます。量子コンピュータおよび市場の成熟とともに順次対応されていくものと考えられるため、動向を注視していく必要があるでしょう。
おわりに
前回と今回の2回に渡ってAWSの量子コンピュータサービスである「Amazon Braket」の概要とセキュリティについてご紹介をさせていただきました。
弊社では他にも先進技術の調査を行っています。今後もその成果を積極的に発信していきたいと考えていますので、楽しみにしてください。
[PR]提供:NTTデータ