常時暗号化機能をデプロイする

完了

データベースを確実に常時暗号化します。

SQL Database Always Encrypted

Always Encrypted は、Azure SQL Database や SQL Server データベースに格納された、クレジット カード番号や国民識別番号 (米国の社会保障番号など) のような機微なデータを保護することを目的とした機能です。 Always Encrypted を使用すると、クライアントはクライアント アプリケーション内の機密データを暗号化することができます。暗号化キーがデータベース エンジン (SQL Database や SQL Server) に公開されることはありません。 結果として、Always Encrypted により、データを所有している (および表示できる) ユーザーと、データを管理している (ただし、アクセス権を持たない) ユーザーが分離されます。 オンプレミスのデータベース管理者、クラウド データベース オペレーター、またはその他の高い特権はあっても認可されていないユーザーが、暗号化されたデータにアクセスできないように確保します。 Always Encrypted により、顧客の直接の管理下にない場所に機密データを安心して格納できます。 そのため、組織で Always Encrypted を使うと、Azure のストレージに保存中および使用中のデータを暗号化すること、オンプレミスのデータベース管理をサードパーティに委任すること、自社の DBA スタッフのセキュリティ クリアランス要件を軽減することができます。

Always Encrypted は、アプリケーションに対して暗号化を透過的に実行します。 クライアント コンピューターにインストールされている、Always Encrypted が有効のドライバーは、クライアント アプリケーション内の機微なデータを自動的に暗号化および暗号化解除することで、この処理を実行します。 ドライバーは、 データベース エンジンにデータを渡す前に機微な列のデータを暗号化し、アプリケーションに対するセマンティクスが維持されるように自動的にクエリを書き換えます。 また、暗号化されたデータベース列に格納され、クエリ結果に含まれているデータを、同じように透過的に暗号化解除します。

使用シナリオの例

Azure のデータを使うオンプレミスのクライアント

顧客はオンプレミスのクライアント アプリケーションを社内で運用しています。 アプリケーションは、Azure にホストされたデータベース (Microsoft Azure の仮想マシンで実行されているSQL Database または SQL Server ) に格納された機微なデータを元に運用しています。 このお客様は、Always Encrypted を使い、Always Encrypted キーをオンプレミスの信頼できるキー ストアに格納し、Microsoft クラウド管理者が機密データにアクセスできないようにしています。

クライアントとデータの両方が Azure 内にある

顧客には、(worker ロールや Web ロールなどで) Microsoft Azure でホストされているクライアント アプリケーションがあります。このアプリケーションは、Azure でホストされているデータベースに格納されている機密データに影響があります。 Always Encrypted には、クラウド管理者からのデータの完全な分離機能がありませんが、データとキーの両方がクライアント層をホストするプラットフォームのクラウド管理者に公開されているので、セキュリティ攻撃の対象となる領域を減らすという利点が顧客にあります (データベース内のデータは常に暗号化されています)。

Data flow for Always Encrypted feature

Always Encrypted 機能

データベース エンジンは、暗号化された列に格納されているプレーンテキスト データに対して動作しませんが、列の暗号化の種類によっては、暗号化されたデータでも一部のクエリをサポートしています。 Always Encrypted は、ランダム化された暗号化と決定論的な暗号化という 2 種類の暗号化をサポートしています。

  • 決定論的な暗号化の場合、任意の指定されたプレーン テキスト値に対して、同じ暗号化された値が常に生成されます。 明確な暗号化を使用すると、暗号化された列で、ポイント参照、等価結合、グループ化、インデックス作成を行うことができます。 ただし、権限のないユーザーが、暗号化された列のパターンを調べることで、暗号化された値に関する情報を推測できる可能性もあります。特に、True/False や、North/South/East/West 地域など、暗号化可能な値セットが小規模である場合は注意が必要です。 明確な暗号化では、バイナリ 2 文字型の列の並べ替え順序を持つ列の照合順序を使用する必要があります。
  • 暗号化をランダム化 は低い予測可能な方法でデータを暗号化するためのメソッドを使用します。 ランダム化された暗号化は安全性が上がりますが、暗号化された列に対して検索、グループ化、インデックス作成、結合ができなくなります。

パラメーター (身分登録番号など) の検索またはグループ化に使用される列については、明確な暗号化を使用します。 他のレコードとグループ化されておらず、テーブルの結合に使用されていない信用調査情報などのデータについては、ランダム化された暗号化を使用します。