五月 24, 2010

Quick guide on using Oracle Database Audit Trail

Posted in Database, Development tagged , 於 9:16 下午 由 Wing

This post just to provide a quick guide on using Oracle 10g Database Audit Trail~

In this post:
1. Basic Configuration
2. Standard Audit Trail
3. Fine-Grained Auditing
4. Using Triggers
5. System logs
6. Oracle Audit Vault

Basic Configuration:

1. To configure audit trail option, you have to connect to an instance as administrator privilege user, e.g. sysdba, sysoper
conn sys as sysdba
2. Check current audit parameters with command:
show parameter audit
3. Define the audit log file location (if you choose to keep the audit log record in physical file):
ALTER SYSTEM SET AUDIT_FILE_DEST = '/oracle/audit_log' DEFERRED;
4. Be reminded to restart database instance after applied the configuration:
shutdown IMMEDIATE;
startup;

5. Normally, the audit log records is growing fast that remember to archive the records, following is some methods for reference:
– perform table copy from the audit log table/view to new table and then perform deletion.
Here is the example of archive SYS.AUD$ into new table:
CREATE TABLE TMP_AUD AS SELECT * FROM SYS.AUD$;
TRUNCATE table sys.aud$;

– perform table export to file by using command exp and then perform deletion.
– move the existing audit log into a new tablespace.
6. Three main views for auditing records are:
– DBA_AUDIT_TRAIL (AUD$): Standard auditing records.
– DBA_FGA_AUDIT_TRAIL (FGA_LOG$): Fine-grained auditing records.
– DBA_COMMON_AUDIT_TRAIL: For both standard and fine-grained auditing records.

Standard Audit Trail:

1. The options of Audit Trail record storage methods are: OS, DB, DB + Extended, XML, XML + Extended, and NONE.
2. You can apply following script to set the audit trail method, e.g. I am using XML that also capture the SQL text that user applied:
ALTER SYSTEM SET audit_trail=XML,EXTENDED SCOPE=SPFILE;
3. To define what kind of audit information required to capture for the particular user:
For DDL operations:
AUDIT ALL BY <username> BY ACCESS;
For DML operations:
AUDIT SELECT TABLE, UPDATE TABLE, INSERT TABLE, DELETE TABLE, EXECUTE PROCEDURE BY <username> BY ACCESS;
4. To disable audit trail:
NOAUDIT ALL BY ;
NOAUDIT SELECT TABLE, UPDATE TABLE, INSERT TABLE, DELETE TABLE, EXECUTE PROCEDURE BY ;
5. If you choose to use DB to capture the audit trail record:
– Retrieve audit records by selecting the table SYS.AUD$
– Purge audit trail record by delete/truncate records in SYS.AUD$.
6. If you choose to use OS or XML to capture the audit trail record:
– Retrieve audit records by selecting the view DBA_COMMON_AUDIT_TRAIL or from the physical files
– Each audit log file will capture all concerned operation within a session of a database user.
– Purge audit trail record by physically delete/move the audit log files. FYI, as the view DBA_COMMON_AUDIT_TRAIL will read from the physical file data, after removed the audit log files, the records in the view will also disappeared.

Fine-Grained Auditing:

1. FGA allows you to define your own criteria of for auditing.
2. Check the availability of FGA:
select * from v$option
where parameter like 'Fine-grained%';

3. Add FGA policy:
EXEC DBMS_FGA.add_policy(object_schema=>'username',object_name=>'table_name',policy_name=>'policy_name',audit_condition=>NULL,audit_column=>NULL,statement_types=>'SELECT,INSERT,UPDATE,DELETE');
4. Drop FGA policy:
EXEC DBMS_FGA.DROP_POLICY(object_schema=>'username',object_name=>'table_name',policy_name=>'policy_name');
5. Audit trail records can be retrieved in the table SYS.FGA_LOG$, DBA_COMMON_AUDIT_TRAIL, DBA_FGA_AUDIT_TRAIL
6. To Purge audit trail record, delete records in SYS.FGA_LOG$, DBA_FGA_AUDIT_TRAIL.

Using Triggers

1. By using triggers, you can define your own criteria and audit log logging logic, which is more flexible to capture the audit log and even the data.
2. Following is the trigger sample:
CREATE TRIGGER audit_tmp_table
AFTER INSERT OR DELETE OR UPDATE ON tmp_table
for each row
begin
if (:new.field_name = 'A')
then
insert into tmp_table_audit values (
:tmp_field,
:old.field_name,
:new.field_name,
user,
sysdate ) ;
endif;
end;

3. Retrieve/Purge audit trail record according to the trigger logic.

System logs

1. syslog is independence with audit log, it mainly used to audit the operation of privileged users, such as SYS, in order to prevent the privileged users to modify the audit log records.
2. To enable the syslog:
– Alter the system parameter
AUDIT_TRAIL=OS
AUDIT_SYSLOG_LEVEL=facility.level
– Set the log file location to the syslog configure file:
facility.level /var/log/audit.log
– Restart the database instance

Oracle Audit Vault

1. DBMS_AUDIT_MGMT PL/SQL Package is available in Oracle Audit Vault, which provides subprograms to manage audit trail records.
2. Oracle Audit Vault supported from Oracle 10g Release 2 and bundled with Oracle 11i, which means you need to install the Oracle Audit Vault package for 10g. Although it is free to download, it required license to run on production environment.

Reference:

Auditing in XML
http://www.oracle.com/technology/oramag/oracle/06-jan/o16security.html

Configuring and Administering Auditing
http://download.oracle.com/docs/cd/B19306_01/network.102/b14266/cfgaudit.htm#BABCBJHG

DBMS_AUDIT_MGMT PL/SQL Package
http://download.oracle.com/docs/cd/E11062_01/admin.1023/e11059/avadm_app_d_audit_mgmt.htm

Oracle Audit Vault Downloads
http://www.oracle.com/technology/software/products/auditvault/index.html

Oracle Audit Vault Server Installation Guide
http://download.oracle.com/docs/cd/E14472_01/doc.102/e14458/toc.htm

* Please ensure you have applied the latest patch set for Audit Vault
http://updates.oracle.com/download/9087650.html (as of May 2010)

一月 16, 2010

Android Development

Posted in computer, Development tagged , , , 於 9:57 下午 由 Wing

This is my development notes on Android~

Development Environment:

Mac OS
Android 1.6 SDK
Eclipse 3.5 Galileo


Basic elements:

1. Installation
2. Emulator
3. Android 1.6 NDK
4. SQLite databases


1. Installation:

1.1. Install Android 1.6 SDK
1.2. Install Eclipse 3.5 Galileo http://www.eclipse.org/downloads/
1.3. Install Android Development Tools (ADT) Plugin for Eclipse
http://developer.android.com/sdk/1.6_r1/installing.html


2. Emulator:

To list Available Android targets, go to the sdk tools directory (e.g. /Applications/android-sdk-mac_x86-1.6_r1/tools) and then issue following command:
$ ./android list targets
Available Android targets:

id: 1
Name: Android 1.5
Type: Platform
API level: 3
Revision: 1
Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
id: 2
Name: Android 1.6
Type: Platform
API level: 4
Revision: 1
Skins: HVGA (default), QVGA, WVGA800, WVGA854
id: 3
Name: Google APIs
Type: Add-On
Vendor: Google Inc.
Revision: 3
Description: Android + Google APIs
Based on Android 1.5 (API level 3)
Libraries:
* com.google.android.maps (maps.jar)
API for Google Maps
Skins: QVGA-P, HVGA-L, HVGA (default), QVGA-L, HVGA-P
id: 4
Name: Google APIs
Type: Add-On
Vendor: Google Inc.
Revision: 1
Description: Android + Google APIs
Based on Android 1.6 (API level 4)
Libraries:
* com.google.android.maps (maps.jar)
API for Google Maps
Skins: WVGA854, HVGA (default), WVGA800, QVGA

Note:
VGA (Video Graphics Array) is 640×480
HVGA (Half Video Graphics Array) is 640×240
QVGA (Quarter Video Graphics Array) is 320×240
WVGA (Wide Video Graphics Array) is 800×480

To create emulator:
$ ./android create avd --target 1 --name cupcake
Android 1.5 is a basic Android platform.
Do you wish to create a custom hardware profile [no]
Created AVD ‘cupcake’ based on Android 1.5
$ ./android create avd --target 2 --name donut
Android 1.6 is a basic Android platform.
Do you wish to create a custom hardware profile [no]
Created AVD ‘donut’ based on Android 1.6, with the following hardware config:
hw.lcd.density=160

To list the created emulator:
$ ./android list avd
Available Android Virtual Devices:
Name: cupcake
Path: /Users/wing/.android/avd/cupcake.avd
Target: Android 1.5 (API level 3)
Skin: HVGA
———
Name: donut
Path: /Users/wing/.android/avd/donut.avd
Target: Android 1.6 (API level 4)
Skin: HVGA

To delete emulator:
$ ./android delete avd --name donut
Deleting file /Users/wing/.android/avd/donut.ini
Deleting folder /Users/wing/.android/avd/donut.avd
AVD ‘donut’ deleted.

To start emulator:
$ ./emulator -avd cupcake


3. Android 1.6 NDK:

Seems it can reuse existing native code.
http://developer.android.com/sdk/ndk/1.6_r1/index.html


4. SQLite Databases:

4.1. Start emulator
$ ./emulator -avd cupcake

4.2. Start adb shell
$ ./adb shell

4.3. Go to application directory and create database
#cd data/data/<application_dir>
#mkdir databases
#chmod 777 databases
#sqlite3 <db_name>.db
sqlite>


Reference:

http://developer.android.com/index.html

一月 10, 2010

如何除去礙眼的路人

Posted in photo tagged , 於 5:51 下午 由 Wing

當拍風景照的時候,尤其是比較熱門的景點,總是有很多路人走來走去!
最簡單的方法當然是等待及捉緊時機拍下,但是當人多的時候總少不免地拍到一個半個路人的…
其實有一個比較有趣的方法可以除去礙眼的路人,就是使用長時間曝光
首先要用腳架設定好你的拍攝位置,之後便可以大約30秒的快門(甚或使用 BULB 自定等候時間),再相對地調整較細的光圈(e.g. f/22)。當然要做到完全除去礙眼的路人,先決條件是路人不會在同一地點停留很久,要不然會影到很多殘影的說…

以下是我在夜間拍下的照片,由於人流太多,也有一點殘影呢~
長時間曝光
曝光: 30
Aperture: f/22.0
焦距: 24 mm
ISO 速度: 100

長時間曝光也可做出各種不同的效果,例如以下便是拉長了的船~
拉長了的船
曝光: 30
Aperture: f/22.0
焦距: 22 mm
ISO 速度: 100

另外有沒有發現當長時間曝光時,光點都是星形的呢?當然我沒有用到 filter 啦,這其實是由細光圈加上鏡頭葉片結構所造成的呀~
(Reference: http://forum.photosharp.com.tw/FORUM/ArticleList.aspx?ForumId=129&TopicId=134729)

話說影煙花的時候也可使用長時間曝光再配合黑色卡紙,而黑色卡紙用於拍照的時候把不必要入鏡的東西都蓋上以免影響構圖!例如在沒有煙花出現的時候如果太大煙可用黑色卡紙蓋上。說實在的影煙花的技巧我也只是聽說,還未有機會試呢 😛