Adaptive Server® での暗号化カラムの使用 ドキュメント ID:DC00544-01-1501-02 改訂:2006 年 8 月 このマニュアルでは、このバージョンの Adaptive Server® が提供する暗 号化カラム機能について説明します。 Adaptive Server の認証とアクセス制御のメカニズムでは、正しく識別さ れ、正しい権限を持つユーザのみがデータにアクセスできます。データ を暗号化すると、ディスクやアーカイブ内にある機密データの盗難やセ キュリティ侵害からの保護を強化できます。 Adaptive Server の暗号化オプションを使用すると、アプリケーションを 変更しなくても、静止しているデータを暗号化できます。既存の環境に 速やかに暗号化を追加して、カラム・レベルで機密データを暗号化でき ます。次の機能がネイティブでサポートされています。 • カラム・レベルの細分化 • AES (NIST 承認済みの対称型アルゴリズム ) • パフォーマンスの最適化 • 作業の分割方式の実行 • 重要な管理機能の完全統合と自動化 • アプリケーションの透過性 ( アプリケーションの変更は不要 ) データ暗号化と暗号化は、自動的で透過的です。テーブルのパーミッショ ンを挿入または更新した場合、挿入または修正したすべてのデータは格 納される前に自動的に暗号化されます。日常の作業が中断されることは ありません。 ただし、暗号化カラムのデータを選択するには、別個の復号化パーミッ ションが必要です。特定のデータベース・ユーザや定義済みの役割に対し て復号化を許可することができます。Sybase には、機密データに対する細 分化されたアクセス制御機能があり、より詳細な制御を実行できます。 Copyright 1987-2006 by Sybase, Inc. All rights reserved.Sybase、Sybase のロゴ、ADA Workbench、Adaptable Windowing Environment、Adaptive Component Architecture、Adaptive Server、Adaptive Server Anywhere、 Adaptive Server Enterprise、Adaptive Server Enterprise Monitor、Adaptive Server Enterprise Replication、Adaptive Server Everywhere、Adaptive Warehouse、Afaria、Answers Anywhere、Anywhere Studio、Application Manager、AppModeler、APT Workbench、APT-Build、APT-Edit、APT-Execute、APT-Translator、APT-Library、AvantGo Mobile Delivery、AvantGo Mobile Inspection、AvantGo Mobile Marketing Channel、AvantGo Mobile Pharma、AvantGo Mobile Sales、AvantGo Pylon、AvantGo Pylon Application Server、AvantGo Pylon Conduit、AvantGo Pylon PIM Server、AvantGo Pylon Pro、Backup Server、BizTracker、ClearConnect、ClientLibrary、Client Services、Convoy/DM、Copernicus、Data Pipeline、Data Workbench、DataArchitect、Database Analyzer、DataExpress、DataServer、DataWindow、DataWindow .NET、DB-Library、dbQueue、 Developers Workbench、DirectConnect、DirectConnect Anywhere、Distribution Director、e-ADK、E-Anywhere、e-Biz Impact、e-Biz Integrator、E-Whatever、EC Gateway、ECMAP、ECRTP、eFulfillment Accelerator、 Embedded SQL、EMS、Enterprise Application Studio、Enterprise Client/Server、Enterprise Connect、Enterprise Data Studio、Enterprise Manager、Enterprise SQL Server Manager、Enterprise Work Architecture、Enterprise Work Designer、Enterprise Work Modeler、eProcurement Accelerator、EWA、Financial Fusion、Financial Fusion Server、Gateway Manager、GlobalFIX、iAnywhere、iAnywhere Solutions、ImpactNow、Industry Warehouse Studio、InfoMaker、Information Anywhere、Information Everywhere、InformationConnect、InternetBuilder、iScript、Jaguar CTS、jConnect for JDBC、M2M Anywhere、Mach Desktop、Mail Anywhere Studio、Mainframe Connect、Maintenance Express、Manage Anywhere Studio、M-Business Channel、M-Business Network、M-Business Server、MDI Access Server、MDI Database Gateway、media.splash、MetaWorks、 mFolio、Mirror Activator、MySupport、Net-Gateway、Net-Library、New Era of Networks、ObjectConnect、ObjectCycle、OmniConnect、OmniSQL Access Module、OmniSQL Toolkit、Open Biz、Open Client、Open ClientConnect、Open Client/Server、Open Client/Server Interfaces、Open Gateway、Open Server、Open ServerConnect、Open Solutions、Optima++、PB-Gen、PC APT Execute、PC DB-Net、PC Net Library、 PocketBuilder、Pocket PowerBuilder、Power++、power.stop、PowerAMC、PowerBuilder、PowerBuilder Foundation Class Library、PowerDesigner、PowerDimensions、PowerDynamo、PowerScript、PowerSite、 PowerSocket、Powersoft、PowerStage、PowerStudio、PowerTips、Powersoft Portfolio、Powersoft Professional、PowerWare Desktop、PowerWare Enterprise、ProcessAnalyst、QAnywhere、Rapport、RemoteWare、 RepConnector、Replication Agent、Replication Driver、Replication Server、Replication Server Manager、Replication Toolkit、Report-Execute、Report Workbench、Resource Manager、RFID Anywhere、RW-DisplayLib、 RW-Library、S-Designor、SDF、Search Anywhere、Secure SQL Server、Secure SQL Toolset、Security Guardian、SKILS、smart.partners、smart.parts、smart.script、SOA Anywhere、SQL Advantage、SQL Anywhere、 SQL Anywhere Studio、SQL Code Checker、SQL Debug、SQL Edit、SQL Edit/TPU、SQL Everywhere、SQL Modeler、SQL Remote、SQL Server、SQL Server Manager、SQL SMART、SQL Toolset、SQL Server/CFT、 SQL Server/DBM、SQL Server SNMP SubAgent、SQL Station、SQLJ、STEP、SupportNow、S.W.I.F.T. Message Format Libraries、Sybase Central、Sybase Client/Server Interfaces、Sybase Financial Server、Sybase Gateways、Sybase IQ、Sybase MPP、Sybase SQL Desktop、Sybase SQL Lifecycle、Sybase SQL Workgroup、Sybase User Workbench、SybaseWare、Syber Financial、SyberAssist、SybFlex、SyBooks、System 10、 System 11、System XI (logo)、SystemTools、Tabular Data Stream、TradeForce、Transact-SQL、Translation Toolkit、UltraLite、UltraLite.NET、UNIBOM、Unilib、Uninull、Unisep、Unistring、URK Runtime Kit for UniCode、VisualWriter、VQL、WarehouseArchitect、Warehouse Control Center、Warehouse Studio、Warehouse WORKS、Watcom、Watcom SQL、Watcom SQL Server、Web Deployment Kit、Web.PB、Web.SQL、 WebSights、WebViewer、WorkGroup SQL Server、XA-Library、XA-Server、XcelleNet、および XP Server は、米国法人 Sybase, Inc. の商標です。 1. 概要 Adaptive Server 15.0 での暗号化カラム Adaptive Server におけるカラムの暗号化は、中間層やクライアント・アプリケー ションにおける暗号化よりも簡素化されます SQL 文を使用して暗号化キーの 作成と暗号化カラムの指定を行うことができ、既存のアプリケーションを変更 せずに継続して実行できます。 暗号化されたデータは、暗号化テキストとして格納されます。暗号化されてい ないデータは、プレーン・テキストとして格納されます。 暗号化機能は、次の製品にもあります。 • Sybase Central™ および Adaptive Server プラグイン。詳細については、Sybase Central のオンライン・ヘルプを参照してください。 • sybmigrate ( マイグレーション・ツール )、bulk copy、CIS。詳細について は、 Adaptive Server Enterprise の 『システム管理ガイド』 を参照してください。 • Replication Server™。複写する場合の暗号に関する詳細については、 『Replication Server 管理ガイド』を参照してください。 1. 概要 図 1 は、Adaptive Server の暗号化処理と復号化処理の概要を示しています。こ の例では、社会保険番号 (SSN: Social Security Number) が更新され、暗号化され ます。 図 1: Adaptive Server での暗号化と復号化 クライアント Adaptive Server Enterprise 暗号化 アルゴリズム SSN を挿入または更新 クライアント 暗号化 キー (key) 暗号化 データ 復号化 アルゴリズム SSN を選択 暗号化キーを作成するには、create encryption key を使用します。これによっ て、次の処理が実行されます。 2 • Security Builder Crypto™ API を使用して、キーが内部的に作成されます。 • 暗号化されたキーがシステム・カタログ sysencryptkeys に格納されます。 新機能 Adaptive Server 15.0 での暗号化カラム 1. 概要 特定のカラムの暗号化に使用されるキーは、Adaptive Server によって追跡され ます。カラムの暗号化では、対称暗号化アルゴリズムが使用されます。これ は、暗号化と復号化に同じキーが使用されることを意味します。 暗号化カラムに対してデータの insert または update を実行すると、ローへの 書き込みの直前に、透過的にデータが暗号化されます。暗号化カラムに対して select を実行すると、ローから該当データが読み込まれ、復号化されます。整 数データと浮動小数点データは、すべてのプラットフォームで次の形式で暗号 化されます。 • 整数データの場合、最上位ビット (MSB: Most Significant Bit) 形式 • 浮動小数点データの場合、米国電気電子学会 (IEEE: Institute of Electrical and Electronics Engineers) 規格および MSB 形式 あるプラットフォームで暗号化されたデータは、別のプラットフォームで復号 化できます。ただし、両方のプラットフォームで同じ文字セットを使用してい る必要があります。 Adaptive Server での 暗号化カラムの使用 1 ライセンス・オプション ASE_ENCRYPTION をインストールします。詳細 については、Adaptive Server Enterprise の『インストール・ガイド』を参照 してください。 2 Adaptive Server Enterprise で暗号化を有効にします。次のコマンドを発行で きるのは、システム・セキュリティ担当者のみです。 sp_configure 'enable encrypted columns', 0|1 0 - 暗号化を無効にします。 1 - 暗号化を有効にします。 暗号化カラムを含むサーバでこのオプションを無効にした場合、それらの カラムに対するすべてのコマンドでエラー・メッセージが表示され、正常 に実行されません。 3 sp_encryption を使用して、データベースのシステム暗号化パスワードを 設定します。詳細については、 「システム暗号化パスワードの設定」(4 ペー ジ ) を参照してください。 4 カラムを暗号化するためのキーを作成します。詳細については、「暗号化 キーの作成」(4 ページ ) を参照してください。 5 暗号化するカラムを指定します。詳細については、 「新しいテーブルに対 する暗号化の指定」(9 ページ ) と 「既存テーブルのデータの暗号化」(11 ページ ) を参照してください。 6 データを参照する必要があるユーザに decrypt パーミッションを付与しま す。詳細については、 「復号化のためのパーミッション」(12 ページ ) を参 照してください。 新機能 3 2. システム暗号化パスワードの設定 Adaptive Server 15.0 での暗号化カラム 2. システム暗号化パスワードの設定 システム・セキュリティ担当者は、sp_encryption を使用してシステム暗号化 パスワードを設定できます。システム・パスワードは sp_encryption を実行し たデータベースに固有であり、その暗号化された値はそのデータベースの sysattributes システム・テーブルに格納されます。 sp_encryption system_encr_passwd, password password には、最大 64 バイトのパスワードを指定できます。指定したパスワー ドは、選択したデータベースのすべてのキーの暗号化に使用されます。システ ム暗号化パスワードを設定した後は、キーやデータにアクセスするときにこの パスワードを指定する必要がなくなります。 システム暗号化パスワードは、暗号化キーを作成したすべてのデータベースに 設定してください。すべてのキーを 1 つのデータベースに格納する場合、その データベースのみにシステム暗号化パスワードが必要です。暗号化カラムは、 キーが存在する同じデータベースにも、別のデータベースにも作成できます。 システム・セキュリティ担当者は、古いパスワードを指定して sp_encryption を 使用し、システム・パスワードを変更できます。 sp_encryption system_encr_passwd, password [ , old_password] システム・パスワードを変更すると、Adaptive Server によって、データベース 内のすべてのキーが新しいパスワードで自動的に再暗号化されます。 システム暗号化パスワードの設定を解除するには、password の引数に “null” を指 定し、old_password の値を指定します。システム・パスワードを削除するには、 そのデータベース内のすべての暗号化キーを削除しておく必要があります。 3. 暗号化キーの作成と管理 暗号化キーは、Adaptive Server によって作成され、暗号化された形式でデータ ベースに格納されます。キー所有者は、名前付きキーを使用してカラムを暗号 化するパーミッションを、テーブル所有者に付与します。 3.1 暗号化キーの作成 キーと暗号化に関連するすべての情報は、create encryption key によってカプ セル化されます。これによって、キーの名前、暗号化アルゴリズム、キー・サ イズ、キーの default プロパティ、および暗号化処理中に初期化ベクトルまた は埋め込みを使用するかどうかを指定できます。create encryption key の構文 については、この後の説明を参照してください。 Adaptive Server のカラム暗号化には、AES (Advanced Encryption Standard) 対称 キー暗号化アルゴリズムが使用されます。使用可能なキー・サイズは 128、192、 256 ビットです。ランダムキーの生成と暗号化の機能は、Security Builder Crypto API によって提供されます。 4 新機能 Adaptive Server 15.0 での暗号化カラム 3. 暗号化キーの作成と管理 暗号化カラムごとに異なるキーを作成できます。キーはカラム間で共有できま すが、1 つのカラムに設定できるキーは 1 つのみです。 システム・セキュリティ担当者は、データベースにデフォルトの暗号化キーを 設定できます。デフォルト・キーは、create table、alter table、select into に、 キーの名前を指定しないで encrypt 修飾子を指定したときに使用されます。詳 細については、 「create encryption key の構文」(6 ページ ) を参照してください。 キーの値を安全に保護するために、Adaptive Server によって、システム暗号化 パスワードを使用して 128 ビットのキー暗号化キーが生成されます。このキー 暗号化キーを使用して、新しく作成したキー ( カラム暗号化キー ) が暗号化さ れます。カラム暗号化キーは、暗号化された形式で sysencryptkeys システム・ テーブルに格納されます。 図 2: ユーザのキーの暗号化 システム暗号化 パスワード 乱数値 PasswordForAllKeys 1c2fg&H39.... IEEE キー 導出関数 128 ビット キー暗号化キー 4p69jX36bn00........ カラム暗号化キー (key) 29c4WRg89.... 対称暗号化 アルゴリズム 暗号化された カラム暗号化キー 845t710Kp9.... 新機能 5 3. 暗号化キーの作成と管理 create encryption key の構文 Adaptive Server 15.0 での暗号化カラム create encryption key の構文は次のとおりです。 create encryption key keyname [as default] for algorithm [with [keylength num_bits] [init_vector [null | random]] [pad [null | random]]] 各パラメータの意味は、次のとおりです。 • keyname - 現在のデータベース内のユーザのテーブル、ビュー、プロシー ジャ・ネーム・スペース内でユニークな名前を使用してください。 • as default - システム・セキュリティ担当者が、データベースにデフォル トの暗号化キーを作成できます。これを指定すると、テーブル作成者が、 create table、alter table、select into でキーの名前を指定しなくても暗号 化を指定できます。同じデータベースのデフォルト・キーが使用されま す。デフォルト・キーは変更できます。詳細については、 「alter encryption key」(34 ページ ) を参照してください。 • algorithm - AES (Advanced Encryption Standard) のみがサポートされます。 AES では、128、192、256 ビットのキー・サイズ、および 16 バイトのブロッ ク・サイズがサポートされています。ブロック・サイズは、暗号化ユニッ トのバイト数です。これより大きいデータは、分割して暗号化されます。 • keylength num_bits - 作成するキーのサイズです。ビット単位で指定しま す。AES の場合、有効なキー長は 128、192、256 ビットです。デフォル トの keylength は 128 ビットです。 • init_vector • random - 暗号化中に初期化ベクトルを使用するように指定します。 暗号化アルゴリズムで初期化ベクトルが使用される場合、2 つの同一 のプレーン・テキストの暗号化テキストが異なるものになります。こ れによって、データ・パターンの検出を防止できます。初期化ベクト ルを使用すると、データのセキュリティが強化されます。 ただし、初期化ベクトルを使用すると、パフォーマンスに影響が生じ る場合があります。インデックス作成によるカラムのジョインと検索 の最適化は、暗号化キーで初期化ベクトルが指定されていないカラム に対してのみ行えます。詳細については、 「パフォーマンスの考慮事 項」(19 ページ ) を参照してください。 • null - 暗号化中に初期化ベクトルを使用しません。これにより、カラ ムにインデックスを作成するのに適切な状態になります。 デフォルトでは、初期化ベクトルが使用されます。これは init_vector random です。 初期化ベクトルを使用すると、 CBC (Cipher Block Chaining) モードが暗号化に使用されます ( このモードでは、データの各ブロッ クを前のブロックと結合してから暗号化します。先頭のブロックは初 期化ベクトルと結合されます )。 6 新機能 Adaptive Server 15.0 での暗号化カラム 3. 暗号化キーの作成と管理 init_vector null を設定すると、ECB (Electronic Code Book) モードが使 用されます。このモードでは、データの各ブロックが個別に暗号化さ れます。 あるカラムは初期化ベクトルを使用して暗号化し、別のカラムは初期化 ベクトルを使用しないで暗号化するには、初期化ベクトルを指定する キーと、初期化ベクトルを指定しないキーの 2 つのキーを作成します。 • pad • null - デフォルトです。データのランダム埋め込みを行いません。 カラムでインデックスをサポートする必要がある場合は、埋め込みを 使用できません。 • create encryption key の例 random - ランダムなバイトをデータに自動的に埋め込んでから暗号 化します。初期化ベクトルの代わりに埋め込みを使用して暗号化テキ ストをランダム化することもできます。埋め込みは、プレーン・テキ ストの長さがブロック長の半分より短いカラムにのみ適切です。AES アルゴリズムの場合、ブロック長は 16 バイトです。 次の例では、“safe_key” という 256 ビットのキーをデータベースのデフォルト・ キーとして指定します。 create encryption key safe_key as default for AES with keylength 256 デフォルト・キーを作成できるのは、システム・セキュリティ担当者だけです。 次の例では、ランダム埋め込みを使用してカラムを暗号化する、“salary_key” という 128 ビットのキーが作成されます。 create encryption key salary_key for AES with init_vector null pad random 次の例では、初期化ベクトルを使用してカラムを暗号化する、“mykey” という 192 ビットのキーが作成されます。 create encryption key mykey for AES with keylength 192 init_vector random システム・セキュリティ担当者は、暗号化キーの作成のデフォルト・パーミッ ションを持ち、他のユーザにこのパーミッションを付与できます。 次に例を示します。 grant create encryption key to key_admin_role 新機能 7 3. 暗号化キーの作成と管理 Adaptive Server 15.0 での暗号化カラム 3.2 暗号化キーの使用 暗号化するカラムを指定するとき、同じデータベースまたは別のデータベース の名前付きキーを使用できます。指定のキーを使用しない場合、そのカラムは 自動的に同じデータベースのデフォルト・キーで暗号化されます。 別のデータベースのキーを使用して暗号化すると、セキュリティが強化されま す。データベース・ダンプが盗まれた場合でも、キーと暗号化されたデータ両 方へのアクセスを防止できるためです。管理者は、データベース・ダンプごと に異なるパスワードを設定して保護できます。これにより、不正アクセスがよ り困難になります。 別のデータベースのキーを使用して暗号化する場合、分散システムにおいて データとキーの整合性の問題が起こらないように注意する必要があります。 データベースのダンプとロードは注意深く調整してください。別のデータベー スの名前付きキーを使用する場合、次のようにすることをおすすめします。 • 暗号化カラムを含むデータベースをダンプするとき、キーが作成された データベースもダンプします。最後のダンプ以降に新しいキーを追加した 場合は、これを行う必要があります。 • 暗号化キーを含むデータベースをダンプするとき、そのキーで暗号化され たカラムを含むすべてのデータベースをダンプします。これによって、暗 号化データと使用可能なキーの同期が保たれます。 システム・セキュリティ担当者は、sp_encryption を使用して、特定のキーで暗 号化されたすべてのカラムを識別できます。詳細については、 「sp_encryption」 (35 ページ ) を参照してください。 3.3 キーのパーミッションの付与 キー所有者以外のユーザが create table、alter table、select into 文にキーを指 定するためには、そのキーの所有者が、そのキーの select パーミッションを付 与する必要があります。データベースのデフォルト・キーの場合、所有者はシ ステム・セキュリティ担当者です。キー所有者は、必要に応じてのみ、select パーミッションを付与してください。 次の例では、db_admin_role を持つユーザが create table、alter table、select into 文で暗号化を指定するときに、暗号化キー “safe_key” を使用できるように します。 grant select on safe_key to db_admin_role 注意 insert、update、delete、select を使用して暗号化カラムを処理するユー ザには、暗号化キーに対する select パーミッションは必要ありません。 8 新機能 Adaptive Server 15.0 での暗号化カラム 4. データの暗号化 3.4 キーの変更 情報セキュリティ・ポリシーの一環として、カラムの暗号に使用するキーを定 期的に変更してください。create encryption key を使用して新しいキーを作成 し、alter table...modify を使用して新しいキーでカラムを暗号化します。 次の例では、“creditcard” カラムが暗号化済みであると仮定します。alter table コマンドによって、customer テーブルで cc_key_new が使用されているすべて のローのクレジット・カード値が復号化され、再暗号化されます。 create encryption key cc_key_new for AES alter table customer modify creditcard encrypt with cc_key_new 詳細については、「alter table」(37 ページ ) を参照してください。 4. データの暗号化 次のデータ型を暗号化できます。 • int、smallint、tinyint • unsigned int、smallint、tinyint • float4 および float8 • decimal および numeric • char および varchar • binary および varbinary ディスク上の暗号化データの基本となるデータ型は varbinary です。varbinary データの長さの詳細については、 「暗号化カラムの長さ」(15 ページ ) を参照し てください。 null 値は暗号化されません。 4.1 新しいテーブルに対する暗号化の指定 新しいテーブルのカラムを暗号化するには、create table 文で次のカラム・オ プションを使用します。 create table. . . [encrypt [with [database.[owner].]keyname]] 新機能 9 4. データの暗号化 Adaptive Server 15.0 での暗号化カラム keyname - create encryption key を使用して作成したキーを指定します。 テーブルの作成者は、keyname に対する select パーミッションを持って いる必要があります。keyname を指定しない場合、create encryption key に as default 句を指定して作成したデフォルト・キーが検索されます。 create table の構文の詳細については、 「create table」(41 ページ ) を参照し てください。 注意 計算カラムは暗号化できません。また、暗号化カラムは、計算カラムを定 義している式には表示されません。テーブルの partition_clause には、暗号化カ ラムを指定できません。 次の例では、2 つのキーが作成されます。1 つは、init_vector、pad、keylength にデフォルト値を使用するデータベースのデフォルト・キーであり、もう 1 つ は、デフォルト以外の値をとる名前付きキー cc_key です。employee テーブル の ssn カラムはデフォルト・キーによって暗号化され、customer テーブルの creditcard カラムは cc_key によって暗号化されます。 create encryption key new_key as default for AES create encryption key cc_key for AES with keylength 256 init_vector null pad random create table employee_table (ssn char(15) encrypt) create table customer (creditcard char(20) encrypt with cc_key) 4.2 暗号化カラムのインデックスの作成 暗号化キーで初期化ベクトルまたはランダム埋め込みが指定されていない場 合、暗号化カラムにインデックスを作成できます。初期化ベクトルまたはラン ダム埋め込みが指定されている暗号化カラムに対して create index を実行す ると、エラーが発生します。暗号化カラムのインデックスは、等号および不等 号を使用する一致には役立ちますが、範囲検索や順序付けには役立ちません。 注意 機能インデックスの式には、暗号化カラムを使用できません。 次の例では、cc_key で初期化ベクトルまたは埋め込みを使用しない暗号化を 指定します。このため、cc_key によって暗号化されたカラムにインデックス を構築できます。 create encryption key cc_key for AES with init_vector null create table customer(custid int, 10 新機能 Adaptive Server 15.0 での暗号化カラム 4. データの暗号化 creditcard varchar(16) encrypt with cc_key) create index cust_idx on customer(creditcard) 4.3 既存テーブルのデータの暗号化 既存のテーブルのカラムを暗号化するには、alter table 文で modify column オ プションを使用します。 alter table table_name modify column_name [encrypt [with [database.[owner].]keyname]] keyname - create encryption key を使用して作成したキーを指定します。 テーブルの作成者は、keyname に対する select パーミッションを持って いる必要があります。keyname を指定しない場合、create encryption key に as default 句を指定して作成したデフォルト・キーが検索されます。alter table の構文の詳細については、Adaptive Server Enterprise の『リファレン ス・マニュアル』を参照してください。 注意 トリガが作成されている既存のテーブルのカラムを暗号化すると、alter table でエラーが発生し、正常に実行されません。トリガを削除し、暗号化に 関する変更をテーブルに加えてから、トリガを再作成してください。 トリガが作成されているカラムは、復号化の対象として変更できません。まず トリガを削除し、カラムを復号化してから、トリガを再作成してください。 既存の暗号化カラムや通常のカラムは、そのカラムがクラスタード・インデッ クスまたは配置インデックス内のキーである場合、暗号化や復号化の対象とし て変更したり修正したりできません。インデックスを削除し、テーブルに変更 を加えてから、インデックスを再作成してください。 カラムの暗号化プロパティは、データ型や null 入力可能性などの他の属性を変 更するときに変更できます。alter table を使用して、暗号化カラムを追加する こともできます。 次に例を示します。 alter table customer modify custid null encrypt with cc_key alter table customer add address varchar(50) encrypt with cc_key 構文の詳細については、「alter table」(40 ページ ) を参照してください。 新機能 11 5. データの復号化 Adaptive Server 15.0 での暗号化カラム 5. データの復号化 5.1 復号化のためのパーミッション 暗号化カラムからプレーン・テキスト・データを選択したり、暗号化カラムを検 索またはジョインしたりするためには、次の 2 つのパーミッションが必要です。 • カラムに対する select パーミッション • ターゲット・リスト、および where、having、order by、update などの句 に使用されているカラムに対する decrypt パーミッション テーブル所有者は、grant decrypt を使用して、テーブル内の 1 つ以上のカラム を復号化する明示的なパーミッションを他のユーザ、グループ、ロールに付与 します。decrypt パーミッションは、プロシージャまたはビューの所有者が次 のパーミッションを付与するときに、暗黙的に付与される場合があります。 • 暗号化カラムを選択するストアド・プロシージャに対する exec パーミッ ション。そのプロシージャの所有者が、その暗号化カラムを含むテーブル も所有している場合。 • 暗号化カラムを選択するビュー・カラムに対する decrypt パーミッション。 そのビューの所有者がテーブルも所有している場合。 どちらの場合も、ベース・テーブルの暗号化カラムに対する decrypt パーミッ ションを付与する必要はありません。 構文は次のとおりです。 grant decrypt on [ owner.] table[( column[{,column}])] to user | group | role decrypt パーミッションをテーブル・レベルで付与すると、そのテーブルのす べての暗号化カラムに対する decrypt パーミッションが付与されます。 customer テーブルのすべての暗号化カラムに対する decrypt パーミッション を付与するには、次のコマンドを入力します。 grant decrypt on customer to accounts_role 次の例では、ベース・テーブル “employee” の ssn カラムに対する user2 の暗 黙的な decrypt パーミッションを示します。user1 が employee テーブルと employee_view を次のように設定します。 create table employee (ssn varchar(12)encrypt, dept_id int, start_date date, salary money) create view emp_salary as select ssn, salary from employee grant select, decrypt on emp_salary to user2 12 新機能 Adaptive Server 15.0 での暗号化カラム 6. 暗号化とキーの削除 user2 は、emp_salary ビューから選択するときに、暗号化された社会保障番 号にアクセスできます。 select * from emp_salary 注意 テーブルまたはビューに対して grant all を実行しても、 decrypt パーミッショ ンは付与されません。 5.2 復号化のパーミッションの取り消し 次のコマンドを入力して、ユーザの復号化パーミッションを取り消すことがで きます。 revoke decrypt on [ owner.] table[( column[ {,column}])] from user | group | role 次に例を示します。 revoke decrypt on customer from public 6. 暗号化とキーの削除 6.1 暗号化と暗号化キーの削除 テーブル所有者は、alter table に decrypt オプションを指定して、カラムの暗 号化または暗号化キーを削除できます。 構文は次のとおりです。 drop encryption key [database.[owner].]keyname たとえば、customer テーブルの creditcard カラムの暗号化を削除するには、次 のコマンドを入力します。 alter table customer modify creditcard decrypt カラムの暗号化キーを削除するには、次のコマンドを入力します。 drop encryption key cust.dbo.cc_key 新機能 13 7. select into コマンド Adaptive Server 15.0 での暗号化カラム システム・セキュリティ担当者およびキー所有者が、キーを削除できます。該 当するキーが使用されているすべてのデータベースに暗号化カラムが存在し ない場合のみ、そのキーを削除できます。drop encryption key では、suspect の マークが付けられたデータベースやオフラインのデータベースについては、該 当するキーによって暗号化されているカラムがあるかどうかチェックされま せん。このコマンドによって、使用不可のデータベースの名前を示した警告 メッセージが発行されますが、コマンド自体は正常に実行されます。該当する データベースがオンラインになると、削除されたキーによって暗号化されてい たカラムを持つすべてのテーブルが使用不可になります。このキーをリストア するには、システム管理者が、キーが削除された時間より前の時点の、削除さ れたキーのデータベース・ダンプをロードする必要があります。 7. select into コマンド デフォルトでは、ソース・テーブルに 1 つ以上の暗号化カラムがある場合で も、暗号化されていないターゲット・テーブルが select into によって作成され ます。select into を実行するには、decrypt を含む、ソース・テーブルに対す るカラム・レベルのパーミッションが必要です。 新しいテーブルのカラムを暗号化するには、次の構文を使用します。 select [all|distinct] column_list into table_name [(colname encrypt [with [[[database.][owner].]keyname]] [, colname encrypt [with[[[database.][owner].]keyname]])] from table_name | view_name ソース・テーブルでデータが暗号化されていなくても、ターゲット・テーブル の特定のカラムを暗号化できます。ソース・テーブルのカラムが、ターゲッ ト・カ ラ ム に 指 定 す る も の と 同 じ キ ー に よ っ て 暗 号 化 さ れ て い る 場 合、 Adaptive Server によってソース・テーブルの復号化手順とターゲット・テーブ ルの暗号化手順が省略され、処理が最適化されます。 ターゲット・テーブルの暗号化規則は、次の点に関して、ソース・テーブルに 対する create table の encrypt 指定子のものと同じです。 • 暗号化するカラムに使用できるデータ型 • キーの名前が省略された場合にデータベースのデフォルト・キーを使用す ること • ターゲット・カラムの暗号化に使用されるキーに対する select パーミッショ ンが必要であること たとえば、creditcard カラムを暗号化するには、次のコマンドを入力します。 select creditcard, custid, sum(amount) into #bigspenders (creditcard encrypt with cust.dbo.new_cc_key) from daily_xacts group by creditcard having sum(amount) > $5000 14 新機能 Adaptive Server 15.0 での暗号化カラム 8. 暗号化カラムの長さ 8. 暗号化カラムの長さ create table、alter table、select into オペレーションの間に、Adaptive Server に よって暗号化カラム内の最大長が計算されます。スキーマの配置とページ・サ イズを決定するために、データベース所有者は暗号化カラムの最大長を知って おく必要があります。 AES はブロック暗号アルゴリズムです。ブロック暗号アルゴリズムでの暗号 化データの長さは、暗号化アルゴリズムのブロック・サイズの倍数です。AES の場合、ブロック・サイズは 128 ビット (16 バイト ) です。したがって、暗号 化カラムは最低 16 バイトと、次のための追加領域を使用します。 • 初期化ベクトル。初期化ベクトルを使用すると、各暗号化カラムに 16 バ イトが追加されます。デフォルトでは、暗号化処理に初期化ベクトルが使 用 さ れ ま す。初 期 化 ベ ク ト ル を 使 用 し な い よ う に す る に は、create encryption key に init_vector null を指定します。 • プレーン・テキスト・データの長さ。カラムの型が char、varchar、binary、 または varbinary である場合、暗号化前に、データの先頭に 2 バイトが追 加されます。この 2 バイトは、プレーン・テキスト・データの長さを表し ます。この追加の 2 バイトのために暗号化テキストで追加のブロックが使 用されないかぎり、暗号化カラムによって追加領域が使用されることはあ りません。 • 識別バイト。後続のゼロがデータベース・システムによってトリムされる ことを防ぐために、暗号化テキストに追加されるバイトです。 表 1: 暗号化テキストの長さ 1、2、4 初期化ベ クトルの 使用 No カラム内の型 varbinary(17) 暗号化データ の長さ 17 tinyint、smallint、int ( 符号付きまたは符号 なし ) 1、2、4 Yes varbinary(33) 33 tinyint、smallint、int ( 符号付きまたは符号 なし ) 0 (null) No varbinary(17) 0 float、float(4)、real 4 No varbinary(17) 17 float、float(4)、real 4 Yes varbinary(33) 33 float、float(4)、real 0 (null) No varbinary(17) 0 float(8)、double 8 No varbinary(17) 17 float(8)、double 8 Yes varbinary(33) 33 float(8)、double numeric(10.2) 0 (null) No varbinary(17) 0 3 No varbinary(17) 17 numeric(10,2) 3 Yes varbinary(33) 33 ユーザ指定の カラム型 入力データ の長さ tinyint、smallint、int ( 符号付きまたは符号 なし ) 新機能 15 8. 暗号化カラムの長さ Adaptive Server 15.0 での暗号化カラム ユーザ指定の カラム型 numeric(38,2) 入力データ の長さ 18 初期化ベ クトルの 使用 No カラム内の型 varbinary(33) 暗号化データ の長さ 33 numeric(38,2) 18 Yes varbinary(49) 49 numeric(38,2) 0 (null) No varbinary(33) 0 char、varchar(100) 1 No varbinary(113) 17 char、varchar(100) 14 No varbinary(113) 17 char、varchar(100) 15 No varbinary(113) 33 char、varchar(100) 15 Yes varbinary(129) 49 char、varchar(100) 31 Yes varbinary(129) 65 char、varchar(100) 0 (null) Yes varbinary(129) 0 binary、 varbinary(100) 1 No varbinary(113) 17 binary、 varbinary(100) 14 No varbinary(113) 17 binary、 varbinary(100) 15 No varbinary(113) 33 binary、 varbinary(100) 15 Yes varbinary(129) 49 binary、 varbinary(100) 31 Yes varbinary(129) 65 binary、 varbinary(100) 0 (null) Yes varbinary(129) 0 char と binary は可変長データ型として扱われ、暗号化の前にブランクとゼロ の埋め込みが削除されます。ブランクやゼロの埋め込みは、データが復号化さ れるときに適用されます。 注意 ディスク上のカラム長は、カラムの暗号化に合わせて増加しますが、こ の増加分はツールやコマンドでは認識されません。たとえば、sp_help では、 元のサイズが表示されます。 16 新機能 Adaptive Server 15.0 での暗号化カラム 9. 暗号化カラムの監査 9. 暗号化カラムの監査 暗号化キーの作成や削除などの、暗号化カラムに関連するデータ定義言語 (DDL) コマンドを監査できます。また、テーブルを作成するときに、暗号化カ ラムと、対応する暗号化キーの名前が監査レコードに含まれます。データベー ス全体の監査オプションを使用すると、暗号化カラムとキーの監査レコードを グループ化して管理できます。 9.1 監査オプション 表 2 は、既存のイベント・オプションと新しいイベント・オプションで監査で きる新しいコマンドを示します。 表 2: 監査オプション、要件および例 [ オプション ] encryption_key login_name object_name all 監査される データベース (データベース固有) オプション設定時 に使用するデータ ベース 任意のデータベース 監査されるコマンド alter encryption key create encryption key drop encryption key sp_encryption 例 pubs2 データベースで指定した上記すべてのコマンドを監査する。 sp_audit "encryption_key", "all", "pubs2", "on" 9.2 監査値 表 3 は、event カラムに表示される値を sp_audit のオプション順にリストにし たものです。 「extrainfo の出力の情報」の欄では、監査テーブルの extrainfo カ ラムに表示される情報を、表 3 で説明しているカテゴリに基づいて説明してい ます。 表 3: event カラムと extrainfo カラムの値 監査オプション alter 監査されるコマンド alter table イベント 3 extrainfo の出力の情報 キーワードまたはオプション: ADD/DROP/MODIFY COLUMNS REPLACE COLUMN ADD CONSTRAINT DROP CONSTRAINT 暗号化カラムが 1 つ以上追加される場合、キー ワードに次のものが含まれる。 ADD/DROP/MODIFY COLUMNS column1/keyname1, [,column2/keyname2] keyname はキーの完全に修飾された名前。 新機能 17 9. 暗号化カラムの監査 監査オプション create Adaptive Server 15.0 での暗号化カラム 監査されるコマンド create table イベント 10 extrainfo の出力の情報 暗号化カラムの場合、キーワードにカラムの名 前とキーの名前が含まれる。 EK column1/keyname1[,column2 keyname2] EK は、後続の情報が暗号化キーを参照してい ることを示すプレフィクス。keyname はキーの 完全に修飾された名前。 encryption_key sp_encryption 106 パスワードを初めて設定した場合は、キー ワードに ENCR_ADMIN system_encr_passwd password ******** が含まれる。パスワードを次回に変更した場 合は、ENCR_ADMIN system_encr_passwd password ******** ******** が含まれる。 create encryption key 107 キーワードに次のものが含まれる。 algorithm Name-bitlength/IV [RANDOM|NULL]/PAD [RANDOM|NULL] 次に例を示します。 AES-128/IV RANDOM/PAD NULL alter encryption key 108 キーワードに次のものが含まれる。 NOT DEFAULT - キーがデフォルト・キーではなくなった場合。 DEFAULT - キーがデフォルト・キーに設定された場合。 drop encryption key 109 9.3 新しいイベント名とイベント番号 特定の監査イベントの監査証跡を問い合わせることができます。 audit_event_name を使用し、event id をパラメータとして指定します。 audit_event_name(event_id) 表 4 は、新しいイベント名前とイベント番号を示します。 表 4: 新しいイベント番号 イベント番号 106 107 108 109 18 新機能 イベント名出力 Encrypted Column Administration Create Encryption Key Alter Encryption Key Drop Encryption Key Adaptive Server 15.0 での暗号化カラム 10. パフォーマンスの考慮事項 10. パフォーマンスの考慮事項 暗号化は CPU に処理の集中するオペレーションであり、CPU 使用率と、暗号 化カラムを使用するコマンドの実行に要する時間の面から、アプリケーション のパフォーマンスにオーバヘッドが生じる場合があります。オーバヘッドの量 は、CPU と Adaptive Server エンジンの数、システムへの負荷、暗号化データ に同時にアクセスするセッションの数、クエリで参照されている暗号化カラム の数によって異なります。暗号化キーのサイズと暗号化データの長さも関係し ます。一般的に、キー・サイズが大きくデータが長いほど、暗号化オペレー ションにおける CPU 使用率が高くなります。 経過時間は、Adaptive Server オプティマイザが暗号化カラムを使用できるかど うかで異なります。 この項では、暗号化カラムの検索によるパフォーマンスへの影響と、Adaptive Server が暗号化データの処理を最適化して暗号化オペレーションと復号化オ ペレーションの数を最小限に抑える方法について説明します。 10.1 暗号化カラムのインデックス カラムの暗号化キーで初期化ベクトルまたはランダム埋め込みが指定されて いない場合、暗号化カラムにインデックスを作成できます。初期化ベクトルま たはランダム埋め込みを使用すると、同一のデータが異なるパターンの暗号化 テキストに暗号化され、インデックスでユニーク性を強制することも、暗号化 テキストのデータに等号を使用する一致を実行することもできなくなります。 暗号化データのインデックスは、等号および不等号を使用したデータの一致に は役立ちますが、データの順序付け、範囲検索、または最小値と最大値の検索 には役立ちません。Adaptive Server は、順序が重要な検索を暗号化カラムに対 して実行している場合、インデックスを使用するルックアップを暗号化データ に対して実行できません。代わりに、各ローの暗号化カラムは復号化されてか ら検索されます。このため、データ処理が低速になります。 新機能 19 10. パフォーマンスの考慮事項 Adaptive Server 15.0 での暗号化カラム 10.2 ソート順と暗号化カラム 大文字と小文字を区別しないソート順を使用する場合、Adaptive Server では、 別のカラムとのジョインまたは定数値に基づく検索を実行するときに、暗号化 された char または varchar カラムでインデックスを使用できません。これは、 アクセント記号を区別しないソート順でも同様です。 大文字と小文字を区別しない比較を使用すると、文字列 abc は次の範囲のす べての文字列に一致します。abc、Abc、ABc、ABC、AbC、aBC、aBc、およ び abC。Adaptive Server で、abc に一致するカラム値の大文字と小文字を区別 しない検索を実行する場合、abc はこれらの範囲の値と比較される必要があり ます。一方、文字列 abc とカラム・データとの大文字と小文字を区別した比 較は、同一のカラム値 (abc を含むカラム ) のみと一致します。大文字と小文 字を区別しない検索と大文字と小文字を区別する検索の大きな違いは、大文字 と小文字を区別しない一致の場合は Adaptive Server が範囲検索を実行する必 要があり、大文字と小文字を区別する一致では等価探索を実行する必要がある ということです。 非暗号化カラムの場合、文字カラムのインデックスでは定義されたソート順に 従ってデータの順序が決まります。暗号化カラムの場合、インデックスでは暗 号化テキスト値に従ってデータの順序が決まります。暗号化テキスト値の順序 は、プレーンテキスト値の順序とは関係ありません。このため、暗号化カラム のインデックスは、等号および不等号を使用する一致にのみ役立ち、値の範囲 の検索には役立ちません。文字列 abc および Abc は異なる暗号化テキスト値 に暗号化され、インデックス内では隣接する位置に格納されません。 Adaptive Server が暗号化カラムでインデックスを使用している場合、カラム・ データは暗号化テキスト・フォームで比較されます。大文字と小文字を区別す るデータの場合、abc を Abc と一致させないようにし、等号を使用する一致 に基づく暗号化テキストのジョインまたは検索も実行されないようにする必 要があります。Adaptive Server は暗号化テキスト値に基づいてカラムをジョイ ンし、where 句の値を効率的に一致させることができます。たとえば、次の 例では、maidenname カラムが暗号化されています。 select account_id from customer where cname = 'Peter Jones' and maidenname = 'McCarthy' maidenname が初期化ベクトルを使用せずに暗号化されているため、Adaptive Server は McCarthy を暗号化して、maidenname の暗号化テキスト検索を実行 します。maidenname にインデックスがある場合、検索ではそのインデックス を利用します。 ただし、大文字と小文字を区別しない順序の場合、定数を暗号化するこの方法 は役に立ちません。Adaptive Server は mccarthy、MCCARTHY などの値の範囲 を検索する必要があり、その場合暗号化テキスト値はサーバの文字セットに 従って順序付けられないからです。Adaptive Server は、McCarthy を使用して 大文字と小文字を区別しない比較を実行する前に、名前カラムのすべてのロー を復号化する必要があります。 20 新機能 Adaptive Server 15.0 での暗号化カラム 10. パフォーマンスの考慮事項 10.3 暗号化カラムのジョイン Adaptive Server は、次の場合に、暗号化テキストを比較して 2 つの暗号化カラ ムのジョインを最適化します。 • ジョインするカラムのデータ型が同じ場合。暗号化テキストの比較の場 合、char および varchar は binary および varbinary と同じデータ型とみな されます。 • カラムで、int 型と float 型に同じ長さが指定されている場合。カラムで、 numeric 型と decimal 型に同じ精度と位取りが指定されている場合。 • ジョインするカラムが同じキーで暗号化されている場合。 • ジョインするカラムが式に使用されていない場合。たとえば、t.encr_col1 = s.encr_col1 +1 というジョインでは、暗号化テキストのジョインを実行でき ません。 • 暗号化キーが、init_vector と pad を NULL に設定して作成されている場合。 • ジョイン演算子が ‘=’ または ‘<>’ である場合。 • データにデフォルトのソート順が指定されている場合。 たとえば、次のコマンドでは、暗号化テキストのジョインのためのスキーマが 設定されます。 create encryption key new_cc_key for AES with init_vector NULL create table customer (custid int, creditcard char(16) encrypt with new_cc_key) create table daily_xacts (cust_id int, creditcard char(16) encrypt with new_cc_key, amount money........) ジョインするカラムにインデックスを設定することもできます。 create index cust_cc on customer(creditcard) create index daily_cc on daily_xacts(creditcard) Adaptive Server によって次の select 文が実行され、customer テーブルか daily_xacts テーブルの creditcard カラムを復号化しないで、ある顧客の指定の クレジット・カードに対する毎日の課金が合計されます。 select sum(d.amount) from daily_xacts d, customer c where d.creditcard = c.creditcard and c.custid = 17936 新機能 21 10. パフォーマンスの考慮事項 Adaptive Server 15.0 での暗号化カラム 10.4 定数値を使用する検索の引数と暗号化カラム 暗号化カラムと定数との等号比較および不等号比較では、テーブルの各ローの 暗号化カラムを復号化するのではなく、定数を一度暗号化することによってカ ラムのスキャンが最適化されます。 「暗号化カラムのジョイン」(21 ページ ) に 示したものと同じ制限が適用されます。 次に例を示します。 select sum(d.amount) from daily_xacts d where creditcard = '123-456-7890' Adaptive Server では、暗号化カラムに対して範囲検索を実行するときに、イン デックスを使用できません。データを比較するには、各ローを復号化する必要 があります。クエリに他の述語が含まれている場合、Adaptive Server によって 最も適切なジョイン順が選択されます。多くの場合、暗号化カラムに対する検 索は、最後に、最も小さいデータ・セットに対して行われます。 使用できるインデックスがない範囲検索をクエリに複数含める場合、暗号化カ ラムに対する範囲検索が最後に実行されるようにクエリを記述します。たとえ ば、次のクエリでは、ロード・アイランドに住む、所得が 100,000 ドルの納税 者の社会保険番号が検索されます。zipcode カラムに対する範囲検索が、調整 後総所得の暗号化カラムに対する範囲検索の前に指定されています。 select ss_num from taxpayers where zipcode like ‘02%’ and agi_enc > 100000 10.5 暗号化テキストとしての暗号化データの移動 Adaptive Server では、データを復号化して暗号化するのではなく、暗号化テキ ストをコピーすることで、暗号化データのコピーを可能なかぎり最適化しま す。これは、select into、バルク・コピー、複写にも当てはまります。 22 新機能 Adaptive Server 15.0 での暗号化カラム 11. システム・テーブル 11. システム・テーブル 11.1 syscolumns syscolumns システム・テーブルの次のカラムには、暗号化のプロパティが示 されています。 Type フィールド encrtype 値 NULL 説明 int encrlen int NULL 暗号化データの長さ。 encrkeyid int NULL キーのオブジェクト ID。 encrkeydb varchar (30) NULL 暗号化キーが存在するデータ ベースの名前。暗号化カラムと 同じデータベースにキーが存 在する場合は NULL。 encrdate datetime NULL sysobjects.crdate からコピー された作成日。 暗号化されたデータの型。 11.2 sysobjects sysobjects には、EK (Encryption Key) タイプのキーごとに 1 つのエントリがあ ります。 データベース間のキー参照では、syscolumns.encrdate は sysobjects.crdate に 一致します。 sysencryptkeys の encrkeyid は sysobjects の id カラムに一致します。 11.3 sysencryptkeys データベースに作成された、デフォルト・キーを含む各キーは、データベース 固有のシステム・カタログ sysencryptkeys 内にエントリがあります。 表 5: sysencryptkeys フィールド id Type 説明 int 暗号化キー ID。 ekalgorithm int 暗号化アルゴリズム。 type smallint キーの種類。値は EK_SYMMETRIC およ び EK_DEFAULT。 status int 内部ステータス情報。 eklen smallint ユーザが指定したキーの長さ。 value varbinary(1282) キーの暗号値。該当するキーの対称暗号化 が示される。キーを暗号化するために、 Adaptive Server は AES でシステム暗号化パ スワードの 128 ビット・キーを使用する。 新機能 23 12. 暗号化カラム用の ddlgen ユーティリティの拡張機能 Adaptive Server 15.0 での暗号化カラム フィールド uid Type 説明 int null 未使用。 eksalt varbinary(20) 暗号化キーの復号化の検証に使用する乱 数値が示される。 ekpairid int null 使用しない。 pwdate datetime null 使用しない。 expdate int null 使用しない。 ekpwdwarn int null 使用しない。 12. 暗号化カラム用の ddlgen ユーティリティの拡張機能 ddlgen は、暗号化キーに対する DDL 文の生成をサポートしています。キーを 指定するには、次の構文を使用します。 db_Name.owner.keyName 暗号化の新しいタイプである EK は、暗号化キーを作成し、そのキーにパーミッ ションを付与する DDL を生成するためのものです。ddlgen は、暗号化カラム の情報と grant decrypt 文、およびテーブルの DDL を生成します。 次の例では、ポート 1955 を使用する “HARBOR” というマシン上のデータベー ス “accounts” 内のすべての暗号化キー用に DDL を生成します。 ddlgen -Uroy -Proy123 -SHARBOR:1955 -TEK -Naccounts.dbo.% または、-D オプションを使用してデータベース名を指定することもできます。 ddlgen -Uroy -Proy134 -SHARBOR:1955 -TEK -Ndbo.% -Daccounts ----------------------------------------------------------------------------- DDL for EncryptedKey 'ssn_key' ---------------------------------------------------------------------------print 'ssn_key' create encryption key accounts.dbo.ssn_key for AES with keylength 128 init vector random go ----------------------------------------------------------------------------- DDL for EncryptedKey 'ek1' ---------------------------------------------------------------------------print 'ek1' 24 新機能 Adaptive Server 15.0 での暗号化カラム 12. 暗号化カラム用の ddlgen ユーティリティの拡張機能 create encryption key accounts.dbo.ek1 as default for AES with keylength 192 init vector NULL go use accounts go grant select on accounts.dbo.ek1 to acctmgr_role go ddlgen には、sysencryptkeys に示されているとおりのキーの暗号値を指定する、 create encryption key を生成する拡張オプションもあります。このオプション は -XOD であり、データの移動に応じてサーバ間で暗号化キーを同期化する必 要がある場合に使用できます。たとえば、“PACIFIC” サーバ上の cc_key を “ATLANTIC” サーバ上で使用できるようにするには、次のように、“PACIFIC” に対して -XOD を指定して ddlgen を実行します。 ddlgen -Sfred -Pget2work -SPACIFIC:8532 -TEK -Nsales.dbo.cc_key -XOD ddlgen の出力は次のとおりです。 ------------------------------------------------------------------------------ DDL for EncryptedKey 'cc_key' ----------------------------------------------------------------------------print 'cc_key' create encryption key sales.dbo.cc_key for AES with keylength 128 passwd 0x0000E1D8235FEBEB118901 init_vector NULL keyvalue 0xF772B99CE547D2932A12E0A83F2114848BD93F38016C068D720DDEBAC4DF8AA001 keystatus 32 go 次に、 ddlgen によって生成された create encryption key コマンドを、 “ATLANTIC” 上のターゲット・データベースを指定するように変更し、ターゲット・サーバ 上で実行します。これによって、“ATLANTIC” サーバ上で cc_key が使用できる ようになり、“PACIFIC” から “ATLANTIC” に暗号化テキストとして移動された データを復号化できるようになります。 ddlgen の構文のオプションについては、Adaptive Server Enterprise の『ユーティ リティ・ガイド』を参照してください。複写データベースに対して ddlgen を 使用する例については、 『Replication Server 管理ガイド』を参照してください。 新機能 25 13. 暗号化データの複写 Adaptive Server 15.0 での暗号化カラム 13. 暗号化データの複写 サイトでスキーマの変更が複写される場合、次の DDL 文が複写されます。 • alter encryption key • 暗号化用の拡張機能を含む create table と alter table • create encryption key • grant と revoke create encryption key • キーに対する grant と revoke select • カラムに対する grant と revoke decrypt • sp_encryption system_encr_passwd • drop encryption key キーは、暗号化された形式で複写されます。 システムで DDL が複写されない場合、複写サイトで、暗号化キーを手動で同 期化します。ddlgen は、キーの値を複写するための、特別な形式の create encryption key をサポートしています。詳細については、「暗号化カラム用の ddlgen ユーティリティの拡張機能」(24 ページ ) を参照してください。 DML の複写の場合、insert コマンドと update コマンドによって、暗号化され た形式のまま暗号化カラムを複写します。この方法では、複写されたデータ が、Replication Server によってディスク上のステーブル・キュー内で処理され る間も保護されます。 Replication Server リリース 12.6 ESD # 5 以降では、暗号化カラムがサポートさ れています。 複写中に暗号化を使用する詳細については、 『Replication Server 管理ガイド』を 参照してください。 26 新機能 Adaptive Server 15.0 での暗号化カラム 14. バルク・コピー (bcp) 14. バルク・コピー (bcp) bcp を実行すると、暗号化データがプレーン・テキストまたは暗号化テキスト のいずれかの形式でデータベースの内外に転送されます。デフォルトでは、bcp を実行するとプレーン・テキスト・データがコピーされます。bcp ではプレー ン・テキスト・データ・ファイルが次のように処理されます。 • bcp in を実行すると、Adaptive Server によって挿入前にデータが自動的に 暗号化されます。低速 bcp が使用されます。ユーザはすべてのカラムに対 する insert および select パーミッションを持っている必要があります。 • bcp out を実行すると、Adaptive Server によってデータが自動的に復号化 されます。すべてのカラムに対する select パーミッションに加えて、暗号 化カラムに対する decrypt パーミッションが必要です。 次の例では、“customer” テーブルがプレーン・テキスト・データとしてネイ ティブ・マシン形式でコピーされます。 bcp uksales.dbo.customer out uk_customers -n -Uroy -Proy123 bcp に -C オプションを使用すると、データが暗号化テキストとしてコピーさ れます。暗号化テキストをコピーするとき、異なるオペレーティング・システ ム間でデータをコピーする場合があります。文字データを暗号化テキストとし てコピーする場合、両方のプラットフォームで同じ文字セットがサポートされ ている必要があります。 bcp に -C オプションを使用すると、管理者は、データに対する decrypt パー ミッションを持っていなくても bcp を実行できます。-C オプションを使用し て bcp を実行すると、データが次のとおり処理されます。 • bcp in の実行時にデータが暗号化テキスト形式とみなされるため、Adaptive Server は暗号化を実行しません。bcp in に -C オプションを使用するのは、 Adaptive Server にコピーするファイルが、bcp out に -C オプションを使用 して作成された場合のみです。暗号化テキストは、まったく同じカラム属 性を持ち、データのコピー先のカラムと同じキーで暗号化されたカラムか らコピーされている必要があります。高速 bcp が使用されます。ユーザは テーブルに対する insert および select パーミッションを持っている必要が あります。 • bcp out を実行すると、データが復号化されずに Adaptive Server からコピー されます。暗号化テキスト・データは 16 進形式です。ユーザはすべてのカ ラムに対する select パーミッションを持っている必要があります。暗号化 テキストのコピーでは、暗号化カラムに対する decrypt は不要です。 新機能 27 15. コンポーネント統合サービス (CIS) • Adaptive Server 15.0 での暗号化カラム 暗号化された char または varchar データは、暗号化時に Adaptive Server によって使用された文字セットを保持します。データを暗号化テキスト形 式で別のサーバにコピーする場合、ターゲット・サーバで使用されている 文字セットが、ソースからコピーする暗号化データの文字セットと一致す る必要があります。暗号化時にソース・サーバ上のデータに関連付けられ た文字セットは、暗号化データとともに格納されず、ターゲット・サーバ で認識されないか、または変換されます。 -C オプションを使用せずに bcp を実行して、文字セットの問題を回避す ることもできます。 文字セット変換用の -J オプションを -C オプションとともに使用すること はできません。 次の例では、“customer” テーブルがコピーされます。cc_card カラムは、人間 が判読できる暗号化テキストとしてコピーされます。その他のカラムは文字 フォーマットでコピーされます。ユーザ “roy” には、customer cc_card に対す る decrypt パーミッションは不要です。 bcp uksales.dbo.customer out uk_customers -C -c -Uroy -Proy123 15. コンポーネント統合サービス (CIS) デフォルトでは、暗号化および復号化はリモート Adaptive Server によって処理 されます。CIS では、リモート Adaptive Server 上に暗号化カラムがないかどう かが一括チェックされます。リモート Adaptive Server が暗号化をサポートして いる場合、CIS によって、暗号化カラムに関連するメタデータでローカルの syscolumns カタログが更新されます。 28 • create proxy_table を実行すると、リモート・テーブルのすべての暗号化 カラムの情報で syscolumns が自動的に更新されます。 • create existing table を実行すると、リモート・テーブルのすべての暗号化 カ ラ ム の メ タ データで syscolumns が自動的に更新されます。create existing table では、columnlist に暗号化キーワードを使用できません。CIS でリモート・テーブルに暗号化カラムが検出された場合、そのカラムに自 動的に暗号化のマークが付けられます。 • create table は、暗号化カラムが含まれる場所には使用できません。 • alter table は、プロキシ・テーブルの暗号化カラムには使用できません。 • select into existing を実行すると、コピー元のプレーン・テキストがコピー 先テーブルに挿入されます。その後、ローカル Adaptive Server が、暗号化 カラムに挿入する前にプレーン・テキストを暗号化します。 新機能 Adaptive Server 15.0 での暗号化カラム 16. load database と dump database 次のカラムが、リモート・サーバの syscolumns カタログから更新されます。 • encrtype - ディスク上のデータのタイプ • encrlen - 暗号化データの長さ • status2 - カラムが暗号化されていることを示すステータス・ビット 16. load database と dump database dump と load は暗号化カラムの暗号化テキストに対して機能します。この動 作によって、暗号化カラムのデータがディスク上でも暗号化されたままになり ます。dump と load はデータベース全体に関連します。デフォルト・キーお よび同じデータベース内で作成されたキーは、関連するデータとともにダンプ およびロードされます。 ロードしているデータベースに他のデータベースで使用されている暗号化 キーが含まれる場合、新しい構文である with override を使用しないかぎり load は正常に実行されません。 load database key_db from "/tmp/key_db.dat" with override キーが、暗号化したカラムとは別のデータベースにある場合、次のようにする ことをおすすめします。 • 暗号化カラムを含むデータベースをダンプするとき、キーが作成された データベースもダンプします。最後のダンプ以降に新しいキーを追加した 場合は、これを行う必要があります。 • 暗号化キーを含むデータベースをダンプするとき、そのキーで暗号化され たカラムを含むすべてのデータベースをダンプします。これにより暗号化 データと使用可能なキーの同期が保たれます。 • 暗号化キーを含むデータベースおよび暗号化カラムを含むデータベース をロードした後、両方のデータベースを同時にオンラインにします。 キーを含むデータベースを名前が異なるデータベースにロードした場合、別の データベースの暗号化カラムにアクセスすると、エラーが発生します。キーの データベースの名前を変更するには、次の手順に従います。 • 暗号化カラムを含むデータベースをダンプする前に、alter table を使用し てデータを復号化します。 • キーおよび暗号化カラムを含むデータベースをダンプします。 新機能 29 17. unmount database Adaptive Server 15.0 での暗号化カラム • データベースをロードした後、alter table を使用して、新しい名前のデー タベースのキーでデータを再暗号化します。 警告! 暗号化キーと暗号化カラムの間の一貫性の問題は、データベース間の 参照整合性の問題に似ています。Adaptive Server Enterprise の『システム管理ガ イド 第 1 巻』の第 12 章にある「データベース間の制約とデータベースのロー ド」を参照してください。 17. unmount database カラムが他のデータベースのキーで暗号化されている場合、関連するすべての データベースをセットとしてマウント解除します。暗号化カラムを含むデータ ベースとキーを含むデータベースの依存関係は、参照整合性を使用するデータ ベースの依存関係に似ています。 別のデータベースのキーで暗号化されたカラムを含むデータベースには、 unmount に override オプションを使用します。 次のコマンドでは、key_db で作成された暗号化キーを使用して、col_db のカ ラムを暗号化しています。これらのコマンドによって、指定したデータベース が正常にマウント解除されます。 unmount database key_db, col_db unmount database key_db with override unmount database col_db with override with override オプションを含めた場合、Adaptive Server が警告メッセージを発 行しますが、操作は成功します。 override を使用しない場合、次のコマンドは正常に実行されず、エラー・メッ セージが返されます。 unmount database key_db unmount database col_db 30 新機能 Adaptive Server 15.0 での暗号化カラム 18. quiesce database 18. quiesce database 暗号化カラムを含むデータベースに暗号化キーも含まれる場合、quiesce database を使用できます。 別のデータベースで使用されているキーで暗号化されたカラムを含むデータ ベースの場合、quiesce に with override を使用する必要があります。 quiesce database key_db, col_db は有効です。ここで、key_db は暗号化キーを 含むデータベースであり、col_db は key_db のキーで暗号化されたカラムを持 つテーブルを含むデータベースです。 たとえば、次のコマンドは正常に実行されます。ここで、key_db は、col_db のカラムの暗号化に使用された暗号化キーを含んでいます。 quiesce database key_tag hold key_db for external dump to “/tmp/keydb.dat” quiesce database encr_tag hold col_db for external dump to “/tmp/col.dat” with override quiesce database col_tag hold key_db, col_db for external dump to “/tmp/col.dat” 19. drop database データベースに他のデータベースのカラムの暗号化に現在使用されているキー が含まれる場合、キーが誤って失われないようにするために、drop database が 失敗します。暗号化キーを含むデータベースを削除する前に、まず alter table を 使用してカラムの暗号化を削除し、次に暗号化カラムを含むテーブルまたは データベースを削除します。 次の例で、key_db は暗号化キーが存在するデータベースであり、col_db は暗 号化カラムを含むデータベースです。 drop database key_db, col_db Adaptive Server によってエラーが返され、key_db の削除は正常に実行されま せん。col_db の削除は正常に実行されます。両方のデータベースを削除する には、最初に col_db を削除します。 drop database col_db, key_db 新機能 31 20. sybmigrate Adaptive Server 15.0 での暗号化カラム 20. sybmigrate sybmigrate は、あるサーバから別のサーバへのデータのマイグレートに使用 するマイグレーション・ツールです。 デフォルトでは、sybmigrate を実行すると暗号化カラムが暗号化テキスト形 式でマイグレートされます。これによって、ソースでのデータの復号化とター ゲットでのデータの暗号化のオーバーヘッドが回避されます。ソースでデータ を復号化してターゲットでデータを暗号化する reencrypt 方法のマイグレー ションが sybmigrate で選択される場合もあります。 暗号化カラムを含むデータベースの場合、sybmigrate によって次の項目がマ イグレートされます。 1 システム暗号化パスワードがマイグレートされます。システム暗号化パス ワードをマイグレートしないように指定した場合、sybmigrate では暗号 化テキストを直接マイグレートする方法ではなく、reencrypt 方法を使用 して暗号化カラムがマイグレートされます。 2 暗号化キーがマイグレートされます。マイグレートするキーを選択できま す。sybmigrate を実行すると、現在のデータベースのカラムの暗号化に 使用されたキーが自動的に選択されます。システム暗号化パスワードのマ イグレートを選択した場合、sybmigrate では実際の値を使用して暗号化 キーがマイグレートされます。sysencryptkeys システム・テーブルのキー 値はシステム暗号化パスワードを使用して暗号化されており、これらの値 がマイグレートされます。システム暗号化パスワードをマイグレートして いない場合、ターゲットで正しく復号化されないキーがマイグレートされ ないように、sybmigrate ではキーが名前でマイグレートされます。キー を名前でマイグレートすると、ターゲットで、ソースのキーとは異なる キー値でキーが作成されます。 3 データがマイグレートされます。デフォルトでは、データは暗号化テキス ト形式で転送されます。暗号化テキスト・データは、異なるオペレーティ ング・システムにマイグレートできます。文字データには、ターゲット・ サーバと送信元サーバで同じ文字セットを使用する必要があります。 sybmigrate は、データベースを作業単位として動作します。送信元サーバ上 のデータベースのデータが別のデータベースのキーで暗号化されている場合、 そのキーのデータベースを最初にマイグレートします。 sybmigrate では、次の場合に、マイグレートされたデータの再暗号化が選択 されます。 • 32 現在のデータベースのいずれのキーもマイグレートするように選択され ていないか、またはターゲット・サーバにすでに存在している場合。ター ゲットのキーが送信元のキーと同一である保証はないため、マイグレート するデータは再暗号化する必要があります。 新機能 Adaptive Server 15.0 での暗号化カラム 21. 参照整合性制約 • システム・パスワードのマイグレートが選択されていない場合。ターゲッ トのシステム・パスワードが送信元のシステム・パスワードと異なる場 合、キーを値でマイグレートすることはできません。同様に、データは暗 号化テキストとしてマイグレートできません。 • ユーザが次のフラグを使用している場合。 sybmigrate -T 'ALWAYS_REENCRYPT' データの再暗号化によって、パフォーマンスが低下する可能性があります。マ イグレーションを再暗号化モードで実行すると、この効果に対するメッセージ がマイグレーション・ログ・ファイルに書き込まれます。 暗号化カラムをマイグレートするには、sa_role と sso_role の両方を有効にし ておく必要があります。 21. 参照整合性制約 次の場合、2 つの暗号化カラム間で、参照整合性制約を定義できます。 • 参照元カラムと参照先カラムの両方が暗号化されている。 • 参照先カラムと参照元カラムが同じキーで暗号化されている。 • カラムの暗号化に使用されたキーで init_vector NULL および random pad NULL が指定されている。 参照整合性チェックは暗号化テキスト値に実行されるため、効率的です。 22. 新しいコマンド この項では、暗号化カラムに関連する新しい Adaptive Server コマンドについて 説明します。 22.1 create encryption key キーと暗号化に関連するすべての情報は create encryption key によってカプ セル化されます。これによって、暗号化アルゴリズム、キー・サイズ、キーの default プロパティ、および暗号化処理中に初期化ベクトルまたは埋め込みを 使用するかどうかを指定できます。 システム・セキュリティ担当者は、暗号化キーの作成のデフォルト・パーミッ ションを持ち、他のユーザにこのパーミッションを付与できます。 詳細については、「create encryption key の構文」(6 ページ ) を参照。 新機能 33 22. 新しいコマンド Adaptive Server 15.0 での暗号化カラム 22.2 alter encryption key デフォルトの暗号化キーを変更するには、次のコマンドを入力します。 alter encryption key key1 as default デフォルト・キーがすでに存在している場合、そのキーは default プロパティ を失います。key1 がデフォルト・キーになります。 key1 がデフォルト・キーである場合、次のコマンドを使用して key1 のデフォ ルト指定を削除できます。 alter encryption key key1 as not default key1 がデフォルト・キーでない場合、このコマンドを実行するとエラーが返さ れます。 alter encryption key as default または alter encryption key as not default はシス テム・セキュリティ担当者のみが実行でき、他のユーザにパーミッションを付 与することはできません。 22.3 drop encryption key キー所有者およびシステム・セキュリティ担当者が、暗号化キーを削除できま す。そのキーを使用して暗号化されているデータベースのカラムがある場合、 このコマンドは正常に実行されません。 構文 drop encryption key [database.[owner].]keyname 22.4 grant create encryption key システム・セキュリティ担当者が、暗号化キーを作成するパーミッションを付 与できます。 構文 grant create encryption key to user | role| group 22.5 revoke create encryption key システム・セキュリティ担当者が、他のユーザ、グループおよびロールから暗 号化キーの作成のパーミッションを取り消すことができます。 構文 34 revoke create encryption key from user | role | group 新機能 Adaptive Server 15.0 での暗号化カラム 23. 新しいシステム・ストアド・プロシージャ 22.6 grant decrypt テーブル所有者またはシステム・セキュリティ担当者が、テーブルまたはテー ブルのカラムのリストに対する decrypt パーミッションを付与できます。 grant decrypt on [ owner.]tablename[(columnname [{,columname}])] to user | group | role 構文 注意 テーブルまたはカラムに対して grant all を実行しても decrypt パーミッ ションは付与されません。 22.7 revoke decrypt テーブル所有者またはシステム・セキュリティ担当者が、テーブルまたはテー ブルのカラムのリストに対する decrypt パーミッションを取り消すことがで きます。 revoke decrypt on [owner.] tablename[(columnname [{,columname}])] from user | group | role 構文 23. 新しいシステム・ストアド・プロシージャ 23.1 sp_encryption システム・セキュリティ担当者は、sp_encryption を使用してシステム暗号化 パスワードを設定できます。システム・パスワードは sp_encryption を実行し たデータベースに固有であり、その暗号化された値はそのデータベースの sysattributes システム・テーブルに格納されます。 sp_encryption system_encr_passwd, ‘password’ sp_encryption を使用すると、長さが 64 バイトのパスワードを指定できます。 指定したパスワードは、Adaptive Server によってそのデータベース内のすべて のキーの暗号化に使用されます。キーまたはデータにアクセスするためにこの パスワードを指定する必要はありません。 システム暗号化パスワードは、暗号化キーを作成したすべてのデータベースに 設定する必要があります。 システム・セキュリティ担当者は、sp_encryption に古いパスワードを指定し て、システム・パスワードを変更することができます。 sp_encryption system_encr_passwd, ‘password’ [ , ‘old_password’] システム・パスワードを変更すると、Adaptive Server によって、データベース 内のすべてのキーが新しいパスワードで自動的に再暗号化されます。 新機能 35 24. コマンドおよびシステム・プロシージャの変更点 Adaptive Server 15.0 での暗号化カラム sp_encryption help を実行すると、キーの名前、所有者、サイズ、暗号化アル ゴリズムが表示されます。また、キーがデータベースのデフォルト・キーとし て指定されているかどうか、およびこのキーでの暗号化にランダム埋め込みま たは初期化ベクトルが使用されているかどうかも示されます。 sp_encryption help [, keyname [, display_cols]] sso_role を持つユーザが sp_encryption help を実行すると、データベース内の すべてのキーのキー・プロパティが表示されます。sso_role を持たないユーザ がこのコマンドを実行すると、そのデータベース内でユーザが select パーミッ ションを持つキーのキー・プロパティのみが表示されます。 sp_encryption help、keyname を実行すると、keyname に指定したキーのプロ パティが表示されます。sso_role を持たないユーザがこのコマンドを実行する 場合、ユーザにはそのキーに対する select パーミッションが必要です。 sp_encryption help、keyname、display_cols は、sso_role を持つユーザのみが 実行できます。このコマンドでは、keyname に指定したキーで暗号化されたカ ラムがリストされます。 24. コマンドおよびシステム・プロシージャの変更点 この項のコマンドは、暗号化カラム機能が変更されているか、または構文が追 加されています。 24.1 sp_helprotect sp_helprotect を実行すると、暗号化キーのパーミッションがレポートされます。 24.2 sp_configure “enable encrypted columns” Adaptive Server のこのバージョンでは、sp_configure "enable encrypted columns" が静的パラメータから動的設定オプションに変更されています。つまり、パラ メータを有効にするために Adaptive Server を再起動する必要はありません。 36 新機能 Adaptive Server 15.0 での暗号化カラム 24. コマンドおよびシステム・プロシージャの変更点 24.3 alter table alter table を使用して、既存のデータを暗号化または復号化したり、暗号化カ ラムをテーブルに追加したりできます。 構文 カラムの暗号化 : alter table tablename add column_name encrypt [with [database.[owner].]keyname 既存のカラムの復号化 : [decrypt [with [database.[owner].]keyname]] keyname - create encryption key を使用して作成したキーを指定します。テー ブルの作成者は、keyname に対する select パーミッションを持っている必要 があります。keyname が指定されていない場合、Adaptive Server は create encryption key as default または alter encryption key as default を使用して作成さ れたデフォルト・キーを検索します。 例 暗号化キーを作成し、既存の “employee” テーブルの ssn カラムを暗号化します。 alter table employee modify ssn encrypt with ssn_key grant decrypt on employee(ssn) to hr_manager_role, hr_director_role 使用法 • alter table を使用して暗号化キーを変更します。すでに暗号化されている カラムに encrypt 修飾子が使用されている場合、Adaptive Server がそのカ ラムを復号化し、新しいキーで再暗号化します。テーブルに多くのローが あると、この操作に長い時間がかかることがあります。 • alter table を使用してクラスタード・インデックスまたは配置インデック スに属するカラムを暗号化または復号化することはできません。このよう なカラムを暗号化または復号化するには、次の手順に従います。 • • a インデックスを削除します。 b カラムを変更します。 c インデックスを再作成します。 テーブルにトリガが定義されている場合、alter table を使用してカラムを 暗号化または復号化することはできません。カラムを変更するには、次の 手順に従います。 a トリガを削除します。 b カラムを変更します。 c トリガを再作成します。 alter table を使用して暗号化カラムのデータ型を bigint、unsigned bigint、 date、money、text、datetime、time に変更すると、エラー・メッセージ が表示されます。 新機能 37 24. コマンドおよびシステム・プロシージャの変更点 Adaptive Server 15.0 での暗号化カラム • alter table を使用して bigint、unsigned bigint、date、money、text、datetime、 time のいずれかのカラムを暗号化カラムに変更すると、エラー・メッセー ジが表示されます。 • alter table を使用して次の操作を行うと、エラー・メッセージが表示され ます。 • 計算カラムを暗号化カラムに変更する。 • 計算カラムで使用された式で参照されているカラムを暗号化するよ うに変更する。 • 暗号化カラムを計算カラムに変更する。 • カラムを、式で暗号化カラムを参照している計算カラムに変更する。 • ファンクション・インデックスのメンバであるカラムを暗号化する。 • 暗号化カラムをパーティション・キーとして指定する。 • パーティション・キーとして使用されているカラムを暗号化するよう に変更する。 24.4 create index create index で、暗号化カラムを参照している式を使用してファンクション・ インデックスを作成すると、エラー・メッセージが表示されます。 24.5 create table テーブル・カラムの暗号化を設定するには encrypt 修飾子を使用します。 構文 create table tablename (colname datatype [default_clause] [encrypt [with [database.[owner].]keyname]]) keyname - create encryption key を使用して作成したキーを指定します。テー ブルの作成者は、keyname に対する select パーミッションを持っている必要 があります。keyname が指定されていない場合、Adaptive Server は create encryption key または alter encryption key に as default 句を使用して作成され たデフォルト・キーを検索します。 例 暗号化カラムを含む employee テーブルを作成します。 create table employee_table (ssn char(15) null encrypt) 38 新機能 Adaptive Server 15.0 での暗号化カラム 使用法 24. コマンドおよびシステム・プロシージャの変更点 • create table で bigint、unsigned bigint、date、money、text、datetime、time のいずれかのカラムを暗号化するように指定した場合、エラー・メッセー ジが表示されます。 • create table で次の操作を行うと、エラー・メッセージが表示されます。 • • 1 つ以上の暗号化カラムを参照している式に基づいて計算カラムを指 定する。 • encrypt および compute パラメータを同じカラムに使用する。 create table で暗号化カラムをパーティション・キーとして指定すると、エ ラー・メッセージが表示されます。 24.6 enable encrypted columns 設定パラメータ 暗号化機能を使用するには、設定パラメータ enable encrypted columns を 1 に 設定する必要があります。暗号化カラムを含むサーバでこの設定オプションを 無効にした場合、それらのカラムに対するすべてのコマンドでエラーが発生 し、正常に実行されません。設定パラメータとライセンス・オプションの両方 で暗号化を有効に設定してください。 sp_configure ‘enable encrypted columns’, 1 24.7 load database ロードしているデータベースに他のデータベースで使用されている暗号化 キーが含まれる場合、with override を使用しないかぎり load は正常に実行され ません。 load database key_db from "/tmp/key_db.dat" with override 24.8 select into select into を実行するには、decrypt を含む、ソース・テーブルに対するカラ ム・レベルのパーミッションが必要です。 構文 次の構文を使用して新しいテーブルのカラムを暗号化します。 select [all|distinct] column_list into target_table [(colname encrypt [with [database.[owner].]keyname] [,colname encrypt [with [database.[owner].]keyname]])] from tabname | viewname 注意 ターゲット・テーブルで暗号化が指定されている partition_clause 内のカ ラムは参照できません。 新機能 39 25. コマンドの完全な構文 例 Adaptive Server 15.0 での暗号化カラム bigspenders テーブルの creditcard カラムを暗号化します。 select creditcard, custid, sum(amount) into #bigspenders (creditcard encrypt with cust.database.new_cc_key) from daily_xacts group by creditcard having sum(amount) > $5000 24.9 dbcc dbcc checkcatalog では、次の追加の一貫性チェックが行われます。 • sysobjects の暗号化キー・ローごとに、そのキーを定義しているローの存 在が sysencryptkeys でチェックされます。 • 暗号化のマークが付けられた syscolumns のカラムごとに、sysobjects お よび sysencryptkeys でキーの存在がチェックされます。 25. コマンドの完全な構文 この項では、このマニュアルで使用するコマンドの完全な構文を示します。 25.1 alter encryption key alter encryption key key1 as default | not default 25.2 alter table alter table [database.[owner]].table_name { add column_name datatype [default {constant_expression | user | null}] {identity | null | not null} [off row | in row] [ [constraint constraint_name] { { unique | primary key } [clustered | nonclustered] [ asc | desc ] [with { fillfactor = pct, max_rows_per_page = num_rows, reservepagegap = num_pages } ] [on segment_name] | references [[database.]owner.]ref_table [(ref_column)] [match full] | check (search_condition) ] ... } [encrypt [with [[database .] owner ] .]keyname]] [, next_column]... | add {[constraint constraint_name] { unique | primary key} [clustered | nonclustered] (column_name [asc | desc] [, column_name [asc | desc]...]) 40 新機能 Adaptive Server 15.0 での暗号化カラム 25. コマンドの完全な構文 [with { fillfactor = pct, max_rows_per_page = num_rows, reservepagegap = num_pages}] [on segment_name] | foreign key (column_name [{, column_name}...]) references [[database.]owner.]ref_table [(ref_column [{, ref_column}...])] [match full] | check (search_condition)} | drop {column_name [, column_name]... | constraint constraint_name } | modify column_name datatype [null | not null] [encrypt [with [[database.]owner].keyname]] |decrypt [, next_column]... | replace column_name default { constant_expression | user | null} | partition number_of_partitions | unpartition| { enable | disable } trigger | lock {allpages | datarows | datapages } } | with exp_row_size=num_bytes | [ alter_partition_clause ] [ partition_clause ] 25.3 create table create table [database .[owner ].]table_name (column_name datatype) [default {constant_expression | user | null}] {[{identity | null | not null}] [off row | [ in row [ (size_in_bytes) ] ] [[constraint constraint_name ] {{unique | primary key} [clustered | nonclustered] [asc | desc] [with { fillfactor = pct, max_rows_per_page = num_rows, } reservepagegap = num_pages }] [on segment_name] | references [[database .]owner .]ref_table [(ref_column )] [match full] | check (search_condition)}]} [match full]... [encrypt [with [[ database.] owner].] keyname]] | [constraint constraint_name] {{unique | primary key} [clustered | nonclustered] (column_name [asc | desc] [{, column_name [asc | desc]}...]) [with { fillfactor = pct max_rows_per_page = num_rows , reservepagegap = num_pages } ] [on segment_name] |foreign key (column_name [{,column_name}...]) references [[database.]owner.]ref_table [(ref_column [{, ref_column}...])] [match full] | check (search_condition) ... } [{, {next_column | next_constraint}}...]) [lock {datarows | datapages | allpages }] [with { max_rows_per_page = num_rows, exp_row_size = num_bytes, reservepagegap = num_pages, 新機能 41 26. ダウングレード手順 Adaptive Server 15.0 での暗号化カラム identity_gap = value } ] [ table_lob_clause ] [ on segment_name ] [ [ external table ] at pathname ] [ partition_clause ] 25.4 select into_clause ::= into [ [ database.] owner.]table_name [(colname encrypt [with [[database.]owner].]keyname] [, colname encrypt [with [[database.]owner] . ] keyname]])] [ { [ external table at ] ‘server_name.[database].[owner].object_name’ | external directory at ‘pathname’ | external file at ‘pathname’ [column deliminter ‘string’ ] } ] [ on segment_name ] [ partition_clause ] [ lock { datarows | datapages | allpages } ] [ with [, into_option[, into_option] ...] ] ] | into existing table table_name 26. ダウングレード手順 この項では、暗号化オプション付きの Adaptive Server 15.0 (Adaptive Server 15.0 EC) から暗号化オプションなしの Adaptive Server 15.0 の以前のバージョンにダ ウングレードする方法について説明します。 Adaptive Server に一度も暗号化カラムを設定していない場合、ダウングレード の準備は不要です。 暗号化カラムを使用するように Adaptive Server を設定している場合、暗号化カ ラム内のデータを削除または復号化してから、Adaptive Server 15.0 GA または Adaptive Server 15.0 ESD #1 に再ロードします。これを行わない場合、エラー が発生するか、または Adaptive Server 15.0 の以前のバージョンで暗号化データ を処理しようとしたときにデータが破損します。 サーバのダウングレードの準備では、影響を受けるすべてのテーブルの暗号化 を削除します。 1 データベースから暗号化を削除する間に他のユーザが暗号化カラムを処 理できないように、Adaptive Server をシングル・ユーザ・モードで起動し ます。 2 sp_configure "enable encrypted columns" で実行値が 1 になっていること を確認します。 3 キーが作成されている各データベースでこのコマンドを実行し、すべての 暗号化キーをリストします。 sp_encryption help 42 新機能 Adaptive Server 15.0 での暗号化カラム 4 26. ダウングレード手順 手順 3 でリストした各キーに対して、sp_encryption help、key_name、 display_cols を実行し、このキーで暗号化されたすべてのカラムのリス トを生成します。このコマンドを実行するには、sso_role が必要です。 結果セットには、key_name で暗号化された各カラムのデータベース名、テー ブル名、カラム名が含まれます。 または、各データベースの各テーブルに sp_help table_name を実行しま す。カラムの説明で、どのカラムが暗号化されているかが示されます。 5 暗号化カラムが含まれるテーブルを削除するか、または alter table を使用 してデータを復号化します。たとえば、customer テーブルの cc_no カラ ムを復号化するには、次のコマンドを入力します。 alter table customer modify cc_no decrypt 6 ( オプション ) すべての暗号化キーを削除します。すべてのキーを削除す ると、データベースからすべての暗号化が確実に削除されます。既存の暗 号化カラムに関連付けられたキーを削除しようとすると、Adaptive Server がエラー・メッセージを返します。 7 sp_encryption システム・プロシージャを削除します。 8 enable encrypted columns 設定オプションを無効にします。 sp_configure "enable encrypted columns", 0 9 Adaptive Server を停止します。 10 RUN_SERVER ファイルを以前の Adaptive Server 15.0 のリリース領域の $SYBASE/ASE-15_0/install にコピーし、このリリース領域の dataserver バ イナリを使用するようにファイルを変更します。 11 変更した RUN_SERVER ファイルを使用してサーバを再起動します。 12 Adaptive Server 15.0 の以前のリリースに含まれる次のスクリプトを実行し ます。 • installmaster - システム・プロシージャを元のバージョンに戻す場合。 • installsecurity - 監査を有効にした場合。 • instmsgs.ebf - Adaptive Server メッセージが適切なレベルであること を確認する場合。 • installhasvss - 高可用性機能を有効にして使用していた場合。 • installmsgsvss - Adaptive Server メッセージ機能を有効にして使用して いた場合。 注意 暗号化カラムを含む Adaptive Server 15.0 EC データベースまたはトランザ クションのダンプは、Adaptive Server 15.0 の以前のバージョンにロードできま せん。 新機能 43 26. ダウングレード手順 ダウングレードに伴う 複写の問題 Adaptive Server 15.0 での暗号化カラム ダウングレードするサーバの、暗号化データが含まれるデータベースに対して 複写が有効化されている場合は、ダウングレード手順を開始する前に次のいず れかを実行する必要があります。 • プライマリ・データベースのトランザクション・ログ内のすべての複写 データが、スタンバイ・データベースまたは複写データベースに正常に転 送されていることを確認します。これを行うプロセスは、使用しているア プリケーションによって異なります。詳細については、アプリケーション のマニュアルを参照してください。 • 次のコマンドを使用して、プライマリ・データベースのトランザクション・ ログをトランケートし、RS ロケータを 0 に設定します。 sp_stop_rep_agent primary_dbname dbcc settrunc ('ltm', 'ignore') dump tran primary_dbname with truncate_only dbcc settruc ('ltm', 'valid') Replication Server を停止します。Replication Server システム・データベー ス (RSSD) で次のコマンドを実行します。 rs_zeroltm primary_servername, primary_dbname 44 新機能
© Copyright 2024 Paperzz