OracleEBSによる透過的なデータ暗号化
このブログでは、Oracle®E-BusinessSuite®(EBS)R12環境での透過的データ暗号化(TDE)列レベルの暗号化の設定について説明します。ユーザーの要件に応じて、単一列または複数列のテーブルに列レベルの暗号化を設定できます。
TDE列暗号化機能を使用して、テーブルの選択された列を暗号化できます。暗号化は透過的であるため、アプリケーションコードを書き直す必要はなく、既存のコードを使用できます。 透明という用語 また、データベースセッションが問題なく暗号化されたデータを読み取ることができることも意味します。
このブログの手順を実行した後、EBSR12環境でTDE列レベルの暗号化をセットアップできます。
TDEの影響
TDE暗号化の実装は、アプリケーションの次の側面に影響を与える可能性があります。
-
パフォーマンス:TDEの実装における特定の制限は、AdvanceSecurityGuideに記載されています。 TDEを実装する前に、これを確認する必要があります。また、暗号化する列を慎重に選択する必要があります。これは、データ操作言語(DML)や、暗号化された列を使用するその他のクエリのパフォーマンスに影響するためです。
-
パッチ適用:利用可能なEBSパッチ、特に列に変更を適用し、TDEを使用して暗号化されるパッチに注意する必要があります。これには、暗号化された列へのインデックスの追加などの変更が含まれます。
TDEの制限
TDE列の暗号化は、論理スタンバイ・モードのStreamsやDataGuardなどのOracleLogMinerベースのテクノロジーではサポートされていません。これらのテクノロジを使用している場合、暗号化された列を複製することはできません。ただし、DataGuardを物理スタンバイ・モードで使用する場合は、TDE暗号化がサポートされます。この場合、次の図に示すように、マスターキーを含むウォレットをプライマリサーバーから物理スタンバイサーバーにコピーする必要があります。
画像ソース:https://docs.oracle.com/cd/E11882_01/network.112/e40393/ asotrans.htm#ASOAG9567
TDEを実装する手順
TDEを実装するには、次の手順を実行します。
-
暗号化する必要のある列とテーブルのリストを取得します。
-
次のコマンドを実行して、必要な場所にウォレットフォルダを作成します。
$ mkdir TDEWallet
-
sqlnet.ora
に必要なエントリを作成します またはsqlnet_ifile.ora
次の行に似ています:[oratactp@odbprod1 tactprd_odbprod1]$ cat sqlnet_ifile.ora
-
Master Key
を設定します 次のコマンドを使用して、前の手順で指定したウォレットの場所にウォレットファイルを作成します。$ Sqlplus '/as sysdba' SQL> ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "*****"; System altered.
-
パッチをダウンロードして適用する
7337863
まだ適用されていない場合。 -
aftdeval.sql
を実行します$FND_TOP/sql
のAppsTierで 次の例に示すように、暗号化する必要のあるテーブルまたは列に対して:SQL> @aftdeval.sql IBY IBY_CREDITCARD CCNUMBER E
-
aftdeval.sql
によって生成されたすべての暗号化コマンドを実行します 。 -
次のコマンドを使用して、暗号化されている列を確認します。
SQL> SELECT * FROM DBA_ENCRYPTED_COLUMNS; OWNER TABLE_NAME COLUMN_NAME ENCRYPTION_ALG SAL INTEGRITY_AL ---------- ------------------------- -------------------- -------------------- --- ------------ IBY IBY_CREDITCARD CCNUMBER AES 192 bits key NO SHA-1
-
次のコマンドを使用して、ウォレットを開いたり閉じたりできます。
SQL> ALTER SYSTEM SET ENCRYPTION WALLET CLOSE IDENTIFIED BY "****"; SQL> SELECT * FROM v$encryption_wallet; SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "****";
-
自動ログインを設定できます 次のコマンドを使用してウォレットの場合:
$ orapki wallet create -wallet <wallet_location> -auto_login
TDE実装の制約
次の制約がTDEの実装に適用されます。
-
暗号化できるのは特定のデータ型のみです。
-
暗号化できるのは、3932バイト未満の長さとして定義された列のみです。
-
列が外部キーの一部であるか、別のデータベース制約で使用されている場合、暗号化できません。
-
列に関数ベースのインデックスがある場合、暗号化することはできません。
-
列にインデックスが付けられ、その列に対して範囲スキャンが実行された場合、列が暗号化された後、インデックスは使用されなくなります。代わりに、完全なテーブルスキャンが実行されます。
-
テーブルがパーティション化され、パーティションまたはサブパーティションが交換される場合、すべてのテーブルパーティションを同様に暗号化する必要があります。現在、次の表がこの基準に適合しています。
-
EGO_MTL_SY_ITEMS_EXT_B
-
EGO_MTL_SY_ITEMS_EXT_TL
-
WF_LOCAL_ROLES
-
WF_LOCAL_ROLES_STAGE
-
WF_USER_ROLE_ASSIGNMENTS
-
WF_UR_ASSIGNMENTS_STAGE
-
WF_LOCAL_USER_ROLES
-
WF_LOCAL_USER_ROLES_STAGE
-
WF_LOCAL_ROLES_TL
-
WF_LOCAL_ROLES_TL_STAGE
列の暗号化が不要な場合は、バックアウトプランとして次のコマンドを実行します。
SQL> ALTER TABLE IBY.IBY_CREDITCARD modify (CCNUMBER decrypt); << repeat this for all columns/tables which were encrypted.
Comment ENCRYPTION_WALLET_LOCATION from sqlnet_ifile.ora
上記のコマンドを実行した後、環境を再起動し、完全な健全性テストを実行します。
列レベルでTDEを実装することにより、クレジットカード番号やHuman Resourcesdataなど、列に保存されている機密データがユーザーに表示されないようにすることができます。暗号化後にアプリケーションコードを書き直す必要はありません。既存のコードを使用でき、データベースセッションで暗号化されたデータを問題なく処理できます。
[フィードバック]タブを使用して、コメントを書き込んだり、質問したりします。
データベースサービスの詳細をご覧ください。
-
透過的なデータ暗号化
Oracle®は、セキュリティの目的でOracle 12Cに透過的データ暗号化(TDE)機能を導入し、ユーザーが機密データのテーブルスペースおよび列レベルの暗号化を有効にできるようにしました。 はじめに データを暗号化すると、許可されたユーザーまたはアプリケーションのみがデータにアクセスできます。 Oracleは、ツールとプロセスを使用してデータベースを認証、承認、監査しますが、データを格納するOSデータファイルは使用しません。 Oracle Database Advanced Security Guide(ASOAG)によると、「TDEはデータファイルに保存されている機密データを暗号化し
-
MongoDBを使用したスケーリング:シャーディングインフラストラクチャのセットアップ
最近のブログ投稿で、MongoDBをスケーリングする必要がある場合について説明しました。この投稿では、MongoDBをスケーリングする方法に焦点を当てています。 MongoDBバージョン3.0では、デフォルトのストレージエンジンとしてWiredTigerが導入されました。それ以来、MongoDBは、スケーラビリティに関して2つのアプローチを提供できるようになりました。 Mongoは、水平方向だけでなく垂直方向にも拡張できるようになりました。どちらのアプローチも詳細を確認する必要があります。 垂直方向のスケーリング 垂直方向にスケーリングすると、CPUの数や種類、RAMやディスク容