th0x4c 備忘録

[Oracle] 暗号化された表領域の作成

目的

暗号化された表領域を作成する。
“透過的データ暗号化”という機能で、表の列もしくは表領域全体を暗号化できるが、今回は表領域の暗号化を行う。

環境

  • OS: Oracle Enterprise Linux 5.8
  • DB: Oracle Database 11g Release 2 (11.2.0.3)

マニュアル

作成

“透過的データ暗号化”を使用して表領域を暗号化するためには以下の手順が必要。

  1. ウォレット(マスター暗号化キーが格納される)を DB 外の OS 上のファイルとして作成
  2. ウォレットを開く(データの暗号化が開始される)
  3. 表領域の作成

以下、マニュアルの手順に従い作成する。

  • ウォレットを格納するディレクトリを作成

OS 上でディレクトリ作成

$ mkdir /home/oracle/ORA_WALLETS
  • sqlnet.ora ファイルにウォレットを格納するディレクトリを指定

sqlnet.ora ファイルを編集

$ vi $ORACLE_HOME/network/admin/sqlnet.ora
$ cat $ORACLE_HOME/network/admin/sqlnet.ora
ENCRYPTION_WALLET_LOCATION=
 (SOURCE=
  (METHOD=file)
   (METHOD_DATA=
    (DIRECTORY=/home/oracle/ORA_WALLETS)))
  • (ここで compatible 初期化バラメータの値が 10.2 より小さい場合は DB 再起動が必要)

  • ウォレットを作成

パスワード(以下の例では "oracle")を指定する。このとき、パスワードは二重引用府(“)で囲む必要がある。 これでウォレット格納ディレクトリにウォレットの OS ファイルができる。

$ sqlplus '/as sysdba'
SQL> ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "oracle";

System altered.

$ ls /home/oracle/ORA_WALLETS
ewallet.p12
  • ウォレットを開く

以下の ALTER SYSTEM によりウォレットを開く。この場合もパスワードは二重引用符で囲む必要がある。 ちなみにウォレット作成直後は開かれた状態となっている。

SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "oracle";

System altered.
  • 暗号化された表領域の作成

以下のように、デフォルトの暗号化アルゴリズムを使用して暗号化された表領域を作成。暗号化アルゴリズムを指定する場合は ENCRYPTION USING 'AES256' などとする。

SQL> CREATE TABLESPACE securespace
     DATAFILE '/u01/app/oracle/oradata/PROD1/secure01.dbf' SIZE 100M
     ENCRYPTION
     DEFAULT STORAGE(ENCRYPT);

Tablespace created.

確認方法

  • ウォレットが開いているか閉じているかのチェック

V$ENCRYPTION_VIEW ビューを問い合わせる。

SQL> SELECT * FROM V$ENCRYPTION_WALLET;

WRL_TYPE   WRL_PARAMETER                  STATUS
---------- ------------------------------ ----------
file       /home/oracle/ORA_WALLETS       OPEN
  • 表領域が暗号化されているかのチェック

DBA_TABLESPACES.ENCRYPTED 列を確認する。

SQL> SELECT TABLESPACE_NAME, ENCRYPTED FROM DBA_TABLESPACES;

TABLESPACE_NAME      ENCRYPTED
-------------------- ----------
SYSTEM               NO
SYSAUX               NO
UNDOTBS1             NO
TEMP                 NO
USERS                NO
EXAMPLE              NO
SECURESPACE          YES

[Oracle] ネットワーク構成

目的

Oracle DB にネットワーク接続できるように構成する。

環境

  • OS: Oracle Enterprise Linux 5.8
  • DB: Oracle Database 11g Release 2 (11.2.0.3)

サーバー側のネットワーク構成

netca により構成する。

  • netca を起動

    $ netca

  • “リスナー構成” を選択

  • “追加”

  • リスナー名の設定。今回はリスナー名はデフォルトの”LISTENER”のまま。

  • プロトコルの選択

  • ポート番号の指定。今回は標準ポート 1521 を使用。

  • “いいえ”

  • “次へ”

  • “完了”

これでリスナーの設定ファイル $ORACLE_HOME/network/admin/listener.ora が作成される。

$ cat $ORACLE_HOME/network/admin/listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = sv1.local)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle

クライアント側のネットワーク構成

同じく netca により構成する。

  • netca を起動

    $ netca

  • “ローカル・ネット・サービス名構成” を選択

  • “追加”

  • サービス名を設定。通常は DB のグローバル・データベース名(db_name.db_domain)を入力。

  • プロトコルの選択

  • ホスト名, ポート番号を設定

  • 接続テスト。今回は行わない。

  • ネット・サービス名の設定。

  • “いいえ”

  • “次へ”

  • “完了”

これでクライアントのネットワーク設定ファイル $ORACLE_HOME/network/admin/tnsnames.ora が作成される。

$ cat $ORACLE_HOME/network/admin/tnsnames.ora 
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

PROD1 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = sv1.local)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = PROD1.local)
    )
  )

接続テスト

クライアントから DB にネットワーク接続できるか確認する。

  • リスナーの起動

lsnrctl start を実行

$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 05-SEP-2012 23:02:48

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Starting /u01/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.3.0 - Production
System parameter file is /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/sv1/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sv1.local)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=sv1.local)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date                05-SEP-2012 23:02:48
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/sv1/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sv1.local)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully
  • DB インスタンスの起動

sqlplus からインスタンスの起動

$ sqlplus '/as sysdba'
SQL> startup
  • インスタンスがリスナーに登録されていることを確認

lsnrctl status でサービスが登録されていることを確認する。

$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 05-SEP-2012 23:05:17

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=sv1.local)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date                05-SEP-2012 23:02:48
Uptime                    0 days 0 hr. 2 min. 28 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/sv1/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sv1.local)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "PROD1.local" has 1 instance(s).
  Instance "PROD1", status READY, has 1 handler(s) for this service...
Service "PROD1XDB.local" has 1 instance(s).
  Instance "PROD1", status READY, has 1 handler(s) for this service...
The command completed successfully
  • クライアントからネットワーク接続できることを確認

クライアント側のネットワーク構成で指定したネット・サービス名で接続できることを確認する。

$ sqlplus scott/tiger@PROD1

SQL*Plus: Release 11.2.0.3.0 Production on Wed Sep 5 23:07:13 2012

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> 

Octopress をセットアップ

Jekyll + Octopress を使って Github Pages にブログを開設してみた。 OctopressDocumentation のページ に従えばよい。 ruby 1.9.3 が必要だが、今回は JRuby を使用した。

使用マシン

  • MacBook Pro Retina ディスプレイモデル(Mid 2012)
  • Mountain Lion (OS X 10.8.1)

JRuby のインストール

~/local 配下に zip を解凍してインストール

$ cd ~/local/
$ curl -O http://jruby.org.s3.amazonaws.com/downloads/1.7.0.preview2/jruby-bin-1.7.0.preview2.zip
$ unzip jruby-bin-1.7.0.preview2.zip
$ cd ~/local/bin/
$ ln -s ../jruby-1.7.0.preview2/bin/jruby .

Octopress のセットアップ

Octopress のセットアップ手順 に従う。

$ cd ~/Documents/
$ git clone git://github.com/imathis/octopress.git octopress
$ cd octopress/
$ jruby -S gem install bundler
expr: syntax error
Fetching gem metadata from http://rubygems.org/.......
Using rake (0.9.2.2)
Using RedCloth (4.2.9)
Installing posix-spawn (0.3.6) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /Users/hashi/local/bin/../jruby-1.7.0.preview2/bin/jruby extconf.rb
NotImplementedError: C extension support is not enabled. Pass -Xcext.enabled=true to JRuby or set JRUBY_OPTS or modify .jrubyrc to enable.

   (root) at /Users/hashi/local/bin/../jruby-1.7.0.preview2/lib/ruby/shared/mkmf.rb:8
  require at org/jruby/RubyKernel.java:1024
   (root) at /Users/hashi/local/bin/../jruby-1.7.0.preview2/lib/ruby/shared/rubygems/custom_require.rb:1
   (root) at extconf.rb:1


Gem files will remain installed in /Users/hashi/local/jruby-1.7.0.preview2/lib/ruby/gems/shared/gems/posix-spawn-0.3.6 for inspection.
Results logged to /Users/hashi/local/jruby-1.7.0.preview2/lib/ruby/gems/shared/gems/posix-spawn-0.3.6/ext/gem_make.out
An error occurred while installing posix-spawn (0.3.6), and Bundler cannot continue.
Make sure that `gem install posix-spawn -v '0.3.6'` succeeds before bundling.

なんかエラーとなったので、エラーメッセージの指示通りに JRUBY_OPTS を設定したらうまくいった。

$ export JRUBY_OPTS="-Xcext.enabled=true"
$ jruby -S bundle install
$ jruby -S rake install

追加でインストールされたコマンドが使用できるようにシンボリックリンクを作成。 (もちろん、JRuby を解凍したフォルダ配下の bin ディレクトリに PATH が通ってれば不要。)

$ cd ~/local/bin
$ ln -s ../jruby-1.7.0.preview2/bin/jekyll .
$ ln -s ../jruby-1.7.0.preview2/bin/compass .
$ ln -s ../jruby-1.7.0.preview2/bin/rackup .

Github Pages の設定

引き続き Octopress の Github Pages へのデプロイ手順 に従う。 まず、username.github.com というレポジトリを新規で作成する。 ここで、次の rake setup_github_pagesRepository url: で HTTPS での指定(https://github.com/username/username.github.com.git)ができなかったため、レポジトリに SSH key でのアクセス設定した上で、git@github.com:username/username.github.com.git を指定する必要があった。

$ cd ~/Documents/octopress
$ jruby -S rake setup_github_pages
expr: syntax error
Enter the read/write url for your repository
(For example, 'git@github.com:your_username/your_username.github.com)
Repository url: git@github.com:th0x4c/th0x4c.github.com.git
...

これで次のことが行われるとのこと。

  1. Ask you for your Github Pages repository url.
  2. Rename the remote pointing to imathis/octopress from ‘origin’ to ‘octopress’
  3. Add your Github Pages repository as the default origin remote.
  4. Switch the active branch from master to source.
  5. Configure your blog’s url according to your repository.
  6. Setup a master branch in the _deploy directory for deployment.

最後に以下を実行すれば _deploy/ ディレクトリにファイルが生成され、Github のレポジトリに push され、Github Pages に反映される。

$ jruby -S rake generate
$ jruby -S rake deploy

あとは、Octopress の以下のページを参照のこと。

とりあえず、_config.ymltitle:, author: ぐらいを変更した。

ブログ発行

Start blogging with Octopressを参照。

基本的に rake new_post["Zombie Ninjas Attack: A survivor's retrospective"] (Zombie ...はタイトル)を実行して、source/_posts 配下のファイルを編集すればよい。

rake previewhttp://localhost:4000 でプレビューを確認して、rake gen_deploy で Github Pages にデプロイ。

$ jruby -S rake new_post["Setup Octopress"]
$ emacs -nw source/_posts/2012-09-04-setup-octopress.markdown
$ jruby -S rake preview
$ jruby -S gen_deploy

source ディレクトリも Github に push するためには Deploying to Github Pages に従い、以下を実行

$ git add .
$ git commit -m 'your message'
$ git push origin source

これで Github 上の source ブランチに push される。