product readiness 10.1a fcs training - · pdf fileauditing in openedge® product readiness...
TRANSCRIPT
Joe Genovese
Auditing in OpenEdge®
Product Readiness 10.1A FCS Training
Direct End-User Pre-Sales March 2008
© 2006 Progress Software Corporation2Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Agenda
OverviewGetting startedAudit Policy MaintenanceAuthenticationDatabase EventsApplication EventsInternal Events
© 2006 Progress Software Corporation3Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Provide an auditing framework that can supply an uninterrupted trail of an application client’s access to its operations and data.
Mission Statement:
Auditing Overview
© 2006 Progress Software Corporation4Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Auditing
Regulatory compliance• Sarbanes-Oxley Act, CFR Part 11, HIPAA,
European Union’s Annex 11, European Union Data Protection Directive, etc
Non-repudiation of Audit dataConsistency• 4GL, SQL, database utilities
Immediacy of Audit data
Driving factors
© 2006 Progress Software Corporation5Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Auditing
Provide an audit trail of• Application operations• Context• Data
Performance, scalability, storage sizeSecure, tamper-resistantGeneral purpose audit logging• Code coverage, debugging / tracing, event
analysis
Key features
© 2006 Progress Software Corporation6Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Auditing Capabilities
Database Auditing• Record level events
– Create, update, delete (CUD) operationsApplication Auditing• Contextual, event groups, operations
Internal auditing• Tools, utilities, connections, schema changes
© 2006 Progress Software Corporation7Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Authentication
Audit trails can tell you who did what, when, where and howMust reflect the verifiable identity of the real application userMust be complete, accurate and non-refutable• Prove audit policy and data has not been
tampered with
Secure Auditing is key to compliance
© 2006 Progress Software Corporation8Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Security of Audit Data
Separation of duty• Audit administrator• Application audit event inserter• Audit data archiver• Audit data reporter
No updates to audit data – EVER!No deletion of defined eventsAudit data is sealed to prevent tampering• Within and outside of the database
© 2006 Progress Software Corporation9Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Auditing
Common built-in auditing for both SQL/4GL clientsFlexible audit policy managementSecure audit data, policy and utilities• Separation of duty• Purposed audit permissions• Verified user identity• Secure utilities and sealed data
Internal audit events (utilities, schema changes, etc.)Performance, performance, performanceHigh performance archivingMulti-database, multi-platform, multi-application
Why use it in place of your own solution?
© 2006 Progress Software Corporation10Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Agenda
OverviewGetting startedAudit Policy MaintenanceAuthenticationDatabase EventsApplication EventsInternal Events
© 2006 Progress Software Corporation11Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Before You Start
Consider your reporting needs• Database operations• Application operations
How much information to record• Table and field level• Contextual information
Which fields constitute unique identifierWhat changes cause event to be recorded
Decide what to audit
© 2006 Progress Software Corporation12Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Auditing - Getting Started
Disabled by defaultUpgrade client & database to 10.1ACreate storage area(s) for audit data• Must be Type II storage area
Enable auditingProutil dbname –C enableauditing area Data_Area [indexareaIndex_Area] [deactivateidx]
Enabling auditing
© 2006 Progress Software Corporation13Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Defining Auditing Storage Areas
d "Audit_Data":20,32;512 . f 40960d "Audit_Data":20,32;512 . #d "Audit_Index":21,1;64 . f 5120d "Audit_Index":21,1;64 .
Example structure file
Prostrct add dbname <structurefile.st>
© 2006 Progress Software Corporation14Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Auditing - Getting Started
Connect to database as the DBASet up database security key via Data Administration toolEdit audit permissions for users• Not tied to _User
Optionally load / enable shipped policiesCreate your own events and policies
Policies
© 2006 Progress Software Corporation15Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Create Audit Users
Separation of Duty
User Description
Audit Administrator Manage audit policiesGrant auditing privileges
Audit Event Inserter Can generate application audit events
Audit Data Archiver Can archive & load audit data
Audit Data Reporter Query and report on audit data
© 2006 Progress Software Corporation16Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Manage Audit Permissions
Admin -> Security -> Edit Audit Permissions…
© 2006 Progress Software Corporation17Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Auditing – Getting Started
Disabling auditing
Does not remove anything• Policies, data, schema all remain
Must be audit admin to disable• Event is audited
Proutil dbname –C disableauditing
Disabling auditing
© 2006 Progress Software Corporation18Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Getting Started – Lab 1.
© 2006 Progress Software Corporation19Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Agenda
OverviewGetting startedAudit Policy MaintenanceAuthenticationDatabase EventsApplication EventsInternal Events
© 2006 Progress Software Corporation20Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Audit Policies
An Audit Policy is• A named collection of audit configuration
settings• Required for all audit operations
– Database, application and internal• Applied at run time
Multiple audit policies are supportedActivate/deactivate required policiesManage event records
Definition
© 2006 Progress Software Corporation21Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
includes
includes
includes
record reads onrecord deletes on
record updates onrecord creates on
is controlled by
_aud-audit-policy_Audit-policy-guid
_Audit-policy-name (AK1.1)_Audit-policy-description (IE1.1)_Audit-data-security-level_Audit-custom-detail-level_Audit-policy-active (IE2.1)
_aud-file-policy_Audit-policy-guid (FK)_File-Name (IE1.1)_Owner (IE1.2)
_Audit-create-level_Audit-create-criteria_Audit-update-level_Audit-update-criteria_Audit-delete-level_Audit-delete-criteria_Audit-read-level_Audit-read-criteria_Create-event-id (FK) (IE2.1)_Update-event-id (FK) (IE3.1)_Delete-event-id (FK) (IE4.1)_Read-event-id (FK) (IE5.1)
_aud-field-policy_Audit-policy-guid (FK)_File-Name (FK) (IE1.1)_Owner (FK) (IE1.2)_Field-Name (IE1.3)
_Audit-create-level_Audit-update-level_Audit-delete-level_Audit-read-level_Audit-identifying-field
_aud-event-policy_Audit-policy-guid (FK)_Event-id (FK) (IE1.1)
_Event-level_Event-criteria
_aud-event_Event-id
_Event-type (IE1.1)_Event-name (IE1.2)_Event-description (IE2.1)
Audit Policy MetaSchema
AuditPolicy
FilePolicy Field
Policy
EventPolicy
AuditEvent
© 2006 Progress Software Corporation22Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
includes
includes
includes
record reads onrecord deletes on
record updates onrecord creates on
is controlled by
_aud-audit-policy_Audit-policy-guid
_Audit-policy-name (AK1.1)_Audit-policy-description (IE1.1)_Audit-data-security-level_Audit-custom-detail-level_Audit-policy-active (IE2.1)
_aud-file-policy_Audit-policy-guid (FK)_File-Name (IE1.1)_Owner (IE1.2)
_Audit-create-level_Audit-create-criteria_Audit-update-level_Audit-update-criteria_Audit-delete-level_Audit-delete-criteria_Audit-read-level_Audit-read-criteria_Create-event-id (FK) (IE2.1)_Update-event-id (FK) (IE3.1)_Delete-event-id (FK) (IE4.1)_Read-event-id (FK) (IE5.1)
_aud-field-policy_Audit-policy-guid (FK)_File-Name (FK) (IE1.1)_Owner (FK) (IE1.2)_Field-Name (IE1.3)
_Audit-create-level_Audit-update-level_Audit-delete-level_Audit-read-level_Audit-identifying-field
_aud-event-policy_Audit-policy-guid (FK)_Event-id (FK) (IE1.1)
_Event-level_Event-criteria
_aud-event_Event-id
_Event-type (IE1.1)_Event-name (IE1.2)_Event-description (IE2.1)
Multiple active policies
Audit Policy MetaSchema
FilePolicy Field
Policy
EventPolicy
AuditEvent
© 2006 Progress Software Corporation23Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
includes
includes
includes
record reads onrecord deletes on
record updates onrecord creates on
is controlled by
_aud-audit-policy_Audit-policy-guid
_Audit-policy-name (AK1.1)_Audit-policy-description (IE1.1)_Audit-data-security-level_Audit-custom-detail-level_Audit-policy-active (IE2.1)
_aud-file-policy_Audit-policy-guid (FK)_File-Name (IE1.1)_Owner (IE1.2)
_Audit-create-level_Audit-create-criteria_Audit-update-level_Audit-update-criteria_Audit-delete-level_Audit-delete-criteria_Audit-read-level_Audit-read-criteria_Create-event-id (FK) (IE2.1)_Update-event-id (FK) (IE3.1)_Delete-event-id (FK) (IE4.1)_Read-event-id (FK) (IE5.1)
_aud-field-policy_Audit-policy-guid (FK)_File-Name (FK) (IE1.1)_Owner (FK) (IE1.2)_Field-Name (IE1.3)
_Audit-create-level_Audit-update-level_Audit-delete-level_Audit-read-level_Audit-identifying-field
_aud-event-policy_Audit-policy-guid (FK)_Event-id (FK) (IE1.1)
_Event-level_Event-criteria
_aud-event_Event-id
_Event-type (IE1.1)_Event-name (IE1.2)_Event-description (IE2.1)
Multiple active policies
Control by table / CUD operation
Audit Policy MetaSchema
FieldPolicy
EventPolicy
AuditEvent
© 2006 Progress Software Corporation24Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
includes
includes
includes
record reads onrecord deletes on
record updates onrecord creates on
is controlled by
_aud-audit-policy_Audit-policy-guid
_Audit-policy-name (AK1.1)_Audit-policy-description (IE1.1)_Audit-data-security-level_Audit-custom-detail-level_Audit-policy-active (IE2.1)
_aud-file-policy_Audit-policy-guid (FK)_File-Name (IE1.1)_Owner (IE1.2)
_Audit-create-level_Audit-create-criteria_Audit-update-level_Audit-update-criteria_Audit-delete-level_Audit-delete-criteria_Audit-read-level_Audit-read-criteria_Create-event-id (FK) (IE2.1)_Update-event-id (FK) (IE3.1)_Delete-event-id (FK) (IE4.1)_Read-event-id (FK) (IE5.1)
_aud-field-policy_Audit-policy-guid (FK)_File-Name (FK) (IE1.1)_Owner (FK) (IE1.2)_Field-Name (IE1.3)
_Audit-create-level_Audit-update-level_Audit-delete-level_Audit-read-level_Audit-identifying-field
_aud-event-policy_Audit-policy-guid (FK)_Event-id (FK) (IE1.1)
_Event-level_Event-criteria
_aud-event_Event-id
_Event-type (IE1.1)_Event-name (IE1.2)_Event-description (IE2.1)
Multiple active policies
Control by table / CUD operation
Audit Policy MetaSchema
Override individual fields
EventPolicy
AuditEvent
© 2006 Progress Software Corporation25Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
includes
includes
includes
record reads onrecord deletes on
record updates onrecord creates on
is controlled by
_aud-audit-policy_Audit-policy-guid
_Audit-policy-name (AK1.1)_Audit-policy-description (IE1.1)_Audit-data-security-level_Audit-custom-detail-level_Audit-policy-active (IE2.1)
_aud-file-policy_Audit-policy-guid (FK)_File-Name (IE1.1)_Owner (IE1.2)
_Audit-create-level_Audit-create-criteria_Audit-update-level_Audit-update-criteria_Audit-delete-level_Audit-delete-criteria_Audit-read-level_Audit-read-criteria_Create-event-id (FK) (IE2.1)_Update-event-id (FK) (IE3.1)_Delete-event-id (FK) (IE4.1)_Read-event-id (FK) (IE5.1)
_aud-field-policy_Audit-policy-guid (FK)_File-Name (FK) (IE1.1)_Owner (FK) (IE1.2)_Field-Name (IE1.3)
_Audit-create-level_Audit-update-level_Audit-delete-level_Audit-read-level_Audit-identifying-field
_aud-event-policy_Audit-policy-guid (FK)_Event-id (FK) (IE1.1)
_Event-level_Event-criteria
_aud-event_Event-id
_Event-type (IE1.1)_Event-name (IE1.2)_Event-description (IE2.1)
Multiple active policies
Control by table / CUD operation
Audit Policy MetaSchema
Override individual fieldsAudit events
EventPolicy
© 2006 Progress Software Corporation26Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
includes
includes
includes
record reads onrecord deletes on
record updates onrecord creates on
is controlled by
_aud-audit-policy_Audit-policy-guid
_Audit-policy-name (AK1.1)_Audit-policy-description (IE1.1)_Audit-data-security-level_Audit-custom-detail-level_Audit-policy-active (IE2.1)
_aud-file-policy_Audit-policy-guid (FK)_File-Name (IE1.1)_Owner (IE1.2)
_Audit-create-level_Audit-create-criteria_Audit-update-level_Audit-update-criteria_Audit-delete-level_Audit-delete-criteria_Audit-read-level_Audit-read-criteria_Create-event-id (FK) (IE2.1)_Update-event-id (FK) (IE3.1)_Delete-event-id (FK) (IE4.1)_Read-event-id (FK) (IE5.1)
_aud-field-policy_Audit-policy-guid (FK)_File-Name (FK) (IE1.1)_Owner (FK) (IE1.2)_Field-Name (IE1.3)
_Audit-create-level_Audit-update-level_Audit-delete-level_Audit-read-level_Audit-identifying-field
_aud-event-policy_Audit-policy-guid (FK)_Event-id (FK) (IE1.1)
_Event-level_Event-criteria
_aud-event_Event-id
_Event-type (IE1.1)_Event-name (IE1.2)_Event-description (IE2.1)
Multiple active policies
Control by table / CUD operation
Audit Policy MetaSchema
Override individual fields
Control by event Id
Audit events
© 2006 Progress Software Corporation27Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Audit Policy Maintenance
Provides basic functionalityA starting point to build your own• Source code is provided • Re-write as required• APIs provided
Not translated Located in “DLC/auditing” directoryIndependent of other OpenEdge tools
Primarily a developers tool
© 2006 Progress Software Corporation28Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Audit Policy Maintenance
Connected Databases
Audit Policy Browse
Single Toolbar
Policy Tabs
© 2006 Progress Software Corporation29Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Audit Policy Maintenance - Policy Tab
Create, update, delete policy
Audit Policy Name
Description
Data Security Level
Custom Level
Activate / deactivate
© 2006 Progress Software Corporation30Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Audit Policy Maintenance - Audit Tables Tab
View, configure auditing for tables
Table to audit
SQL owner
CUD audit levelsAudit Level
Event IDs Streaming settings
© 2006 Progress Software Corporation31Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Audit Policy Maintenance - Audit Fields Tab
Table to audit
Field to audit
CUD audit levelsIdentifying field
Field level auditing – overrides table settings
Streaming values
© 2006 Progress Software Corporation32Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Audit Policy Maintenance - Audit Events
Event level auditing
Event ID
Event name
Event Level
Criteria – futures
© 2006 Progress Software Corporation33Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Audit Policy Maintenance Events MaintenanceFile -> Events Maintenance…
Cannot be deletedCan be renamedCopy allowedChanges committed on SaveCannot edit events below 32000
© 2006 Progress Software Corporation34Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Audit Policy Maintenance
Import / export policies• As XML or dump files
Import / export events• User defined events
Also available from Data Admin tool• Supports multi-selection
Use Audit Policy Maintenance API’s to automate
Additional features
© 2006 Progress Software Corporation35Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Conflict Reporting
Policy -> Report Conflicts
© 2006 Progress Software Corporation36Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Report Effective Settings
Policy -> Report Effective Settings
© 2006 Progress Software Corporation37Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Policy Updates At Runtime
Audit policies are cached in memoryUpdates cause a rebuild• Database is stalled until rebuild complete
© 2006 Progress Software Corporation38Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Audit Policy Maintenance – Demo. Lab 2.
© 2006 Progress Software Corporation39Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Agenda
OverviewGetting startedAudit Policy MaintenanceAuthenticationDatabase EventsApplication EventsInternal Events
© 2006 Progress Software Corporation40Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
The OpenEdge User Identity Challenge
_User table is the only trusted user-id sourceAlmost no 4GL applications use the _User table• No way for 4GL application to tell OpenEdge
that it is a trusted authentication source• No way for OpenEdge to validate that a user-
id came from a trusted 4GL application source Solution: allow a 4GL application to become a trusted source of user authentication
Prior to 10.1A
© 2006 Progress Software Corporation41Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
10.1A - What Has Not Changed…
Can still connect to OpenEdge database using –U –P• OpenEdge will require the _User table **
SETUSERID() **• Authenticate and set the user-id for a
database connectionOpenEdge SQL requires using the _User table
** Audited by OpenEdge auditing service
© 2006 Progress Software Corporation42Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
ProcessControl
Authentication and Authorization Process
Principal
AuthenticationSystem
UserAccounts
Authenticate
AuthenticationSystem
UserAccounts
AuthenticationSystem
User Accounts
Account Check
Get Account Data
Application ResourcesAccessControl
Data
AuthorizationManager
LoginCredentials
AppServer Agent
Client
AuthenticationManager
© 2006 Progress Software Corporation43Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
The Principal
CLIENT-PRINCIPALDomain: LDAPState: LoginUser-ID: JayneLogin-token: BW3G1&2G1836D872Login-date: 3/12/05 08:15:33.12Login-expires: 3/12/05 19:30.00.00Roles: AccountantApp-data: Company=Acme
...Seal: AC63Galx98wBwuuw2
AuthenticationSystem Data
User Account Information
User Account Restrictions
Application Defined Data
Data Integrity Seal
Login-SessionID
© 2006 Progress Software Corporation44Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
New OpenEdge 10.1A Features
4GL-session can have a default user-idCLIENT-PRINCIPAL 4GL objectSecure client identity validation and auditing optionsTrusted Authentication Registry 4GL Language extensionsAUDIT-CONTROL 4GL session handleAUDIT-POLICY 4GL session handle
© 2006 Progress Software Corporation45Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
4GL CLIENT-PRINCIPAL Object
Created and managed by 4GL application• After user account has been authenticated
Represents a single user login sessionCan be shared for single sign-on purposes• Between application servers• Between application server agents• Transport cross-platform binary value
Set the current user-id for• The 4GL application [ & all database connections]• Individual OpenEdge database connection
Automatically audits login-logout operationsCLIENT-PRINCIPAL’s user-id can be used for run-time permission checking
© 2006 Progress Software Corporation46Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Trusted Authentication System Registry
Used to validate CLIENT-PRINCIPAL object• Originating from trusted 4GL user authentication module• Checks integrity of user identity data• Validation uses symmetric key cryptography and HMAC
technologiesContents loaded from• Application code using SECURITY-POLICY object• OpenEdge database tables
– _sec-authentication-system– _sec-authentication-domain
© 2006 Progress Software Corporation47Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
User Identity Configuration Options
Stored in _db-option table Used by 10.1A+ 4GL OpenEdge clientsManaged via Data Administration tool
Database options
© 2006 Progress Software Corporation48Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
4GL Language Extensions
SECURITY-POLICY object extensions• SET-CLIENT (hClientPrincipal).• LOAD-DOMAINS (dbAlias).• REGISTER-DOMAIN (“domain-name”, … ).
– LOCK-REGISTRATION ().
© 2006 Progress Software Corporation49Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Auditing User-id Strategies
Custom application design & implementationOpenEdge auditing service• Use SETUSERID() to built-in _User table
No changes needed if already in useCan use AUDIT-CONTROL objectNo extra configuration and deployment setupNo user login-logout or session informationReplicate _User table for multiple databases
• Use 10.1A CLIENT-PRINCIPAL identity extensionsUse existing 4GL authentication modulesUser login-logout and session informationSingle sign-on between 4GL productsRequires code additionsExtra configuration and deployment setup
© 2006 Progress Software Corporation50Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
User Identity Strategies
Define and deploy application supported user authentication system types and domains• _sec-authentication-system table
Ex: 4GL procedure, LDAP, Kerberos, …• _sec-authentication-domain table
Ex: Built-in, Default-LDAP, Default-Kerberos, …Configure/enable domains at production site Define and deploy user identity and validation options • Data Administration
Steps
© 2006 Progress Software Corporation51Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Load / Register Domains
FOR EACH trusted-reg NO-LOCK:SECURITY-POLICY:REGISTER-DOMAIN(trusted-reg.cDomainName, trusted-reg.cDomainKey, trusted-reg.cDomainDescr,trusted-reg.cDomainType).
END.SECURITY-POLICY:LOCK-REGISTRATION.
LOAD-DOMAINS (“Sports2000”).
Example
© 2006 Progress Software Corporation52Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Creating a CLIENT-PRINCIPAL Object
CREATE CLIENT-PRINCIPAL hCp.hCp:USER-ID = cUserId.hCp:DOMAIN-NAME = cDomainName.IF (SESSION:REMOTE) THEN DO:
IF (SESSION:SERVER-OPERATING-MODE = "State-free") THEN DO:cSessionID = BASE64-ENCODE(GENERATE-UUID).hCp:SESSION-ID = SUBSTRING(cSessionID, 1, 22).
END. ELSE DO:hCp:SESSION-ID = SESSION:SERVER-CONNECTION-ID.
END.END. ELSE DO:
cSessionID = BASE64-ENCODE(GENERATE-UUID).hCp:SESSION-ID = SUBSTRING(cSessionID, 1, 22).
END.END.hCp:AUDIT-EVENT-CONTEXT = cUserId + “@” + cDomainName.hCp:CLIENT-TTY = SESSION:CLIENT-TYPE + "." +
SESSION:DISPLAY-TYPE.
Insert user & domain
Insert login session ID
Insert Audit-Event context
Insert optional information
© 2006 Progress Software Corporation53Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Successful user authentication
Unsuccessful user authentication
Ending the user’s login session
Validating the CLIENT-PRINCIPAL
Managing a CLIENT-PRINCIPAL Object
lRetValue = p_hCP:VALIDATE-SEAL (“Gy23800xxYzthslie4yyslzekeylqql”).
m_hCP:AUTHENTICATION-FAILED(“User account not found”).
m_hCP:LOGOUT.DELETE OBJECT m_hCP.
lRetValue = p_hCP:SEAL(“Gy23800xxYzthslie4yyslzekeylqql”).
© 2006 Progress Software Corporation54Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Moving the CLIENT-PRINCIPAL
Exporting for storage or transport
m_hCP:IMPORT-PRINCIPAL(UsrCtxDB.rawClientPrincipal).
UsrCtxDB.rawClientPrincipal = m_hCP:EXPORT-PRINCIPAL.
Importing from storage or transport
Import and Export
© 2006 Progress Software Corporation55Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
ContextData
AppServer Client
Client
Process
Login Credentials Create CLIENT-PRINCIPAL
EXPORT
Context-id
Context-idRetrieve
CLIENT-PRINCIPAL IMPORT
ContextSub-system
Set User identity
Logout requestContext-id
Retrieve CLIENT-PRINCIPAL
hCp:LOGOUTIMPORT
AppServer shutdown Purge
AppServer Identity Management Tasks
© 2006 Progress Software Corporation56Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Authentication – Demo. Lab3
© 2006 Progress Software Corporation57Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Agenda
OverviewGetting startedAudit Policy MaintenanceAuthenticationDatabase EventsApplication EventsInternal Events
© 2006 Progress Software Corporation58Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Database events
Record level events• Create• Update• Delete
Controlled through file / field policyOld/New values• Stored as character• American format dates and numeric values
What gets Audited?
© 2006 Progress Software Corporation59Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Audit Data Schema
is the group for
supplies context to
consists of
has
created
resulted in
has
_aud-audit-data_Audit-data-guid
_Database-connection-id (IE1.1)_Client-session-uuid (FK) (IE1.2)_User-id (IE2.1)_Audit-date-time (IE5.1)_Audit-event-group (FK) (IE3.1)_Db-guid (FK) (IE3.2)_Transaction-id (IE3.3)_Transaction-sequence (IE3.4)_Event-id (FK) (IE4.1)_Event-context (IE6.1)_Application-context-id (FK) (IE7.1)_Event-detail_Audit-custom-detail_Audit-data-security-level_Data-seal
_aud-audit-data-value_Audit-data-guid (FK)_Field-name (IE1.1)_Continuation-sequence
_Data-type-code_Old-string-value_New-string-value_Old-blob-value_New-blob-value_Old-clob-value_New-clob-value_Audit-data-security-level_Data-seal
_aud-event_Event-id
_Event-type (IE1.1)_Event-name (IE1.2)_Event-description (IE2.1)
_client-session_Client-session-uuid
_Client-name_User-id (IE1.1)_Authentication-date-time (IE2.1)_Server-uuid_Authentication-domain-type_Authentication-domain-name_Db-guid (FK) (IE3.1)_Session-custom-detail_Audit-data-security-level_Data-seal
_db-detail_Db-guid
_Db-description_Db-mac-key_Db-custom-detail
consists of
Record client session information
Configurable automated audit data with optional
context & grouping
Optional old/new value recording
Standard database tables
for simplified querying
© 2006 Progress Software Corporation60Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Overridden Audit Fields
File level policy is the default for fields• Set according to majority of fields
Individual fields may be overriddenWhen explicitly auditing fields• Consider schema changes
© 2006 Progress Software Corporation61Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Field Value Recording
One record per field• Easy to report on individual field changes• Resource intensive
Streamed• Pack as many field values into a single audit
record• Reduced number of database writes
Performance vs. field reporting
© 2006 Progress Software Corporation62Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Streamed Field Values
Values stored in _aud-audit-data• _Event-detail field
Character format
• chr(8) delimits array elementsMust be enough space for field value• Otherwise written to _aud-audit-data-value
Order of fields is arbitrary
field-name + chr(6) + data-type + chr(6) + [old-value] + chr(6) + new-value + chr(7)[…]
© 2006 Progress Software Corporation63Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Reporting on Streamed Field Values
Unlikely to be able to use SQL reports• Unless specifically coded for OpenEdge
auditing records4GL reports must deal with streamed data• Arbitrary order
Use a ProDataSet for queries and parse streamed field values
© 2006 Progress Software Corporation64Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Streamed Values
Store large CHARACTER and RAW fields individually• Maximizes smaller fields being compressed
Reporting requirements• Individual fields
Consider
© 2006 Progress Software Corporation65Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Old/New Field Values
No old/new value support in 10.1A for LOBsThere may be continuation records• Where _continuation-sequence > 0
Arrays• Changed elements saved in same field• Each element is identified by “E[n]:”• Separator is chr(7)
chr(7)E[8]:AugustE[11]:November
© 2006 Progress Software Corporation66Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Identifying Fields
Primary way of locating application audit data for specific record level events• E.g. for Customer number 10
Default is primary indexAvoid changing format over time• Makes it difficult to find records
Stored in _aud-audit-data._event-contextFormat is
Event context field _aud-audit-data._event-context
<owner>.<table>chr(6)<id-fld-val>[chr(7)<id-fld-val>.. ]
© 2006 Progress Software Corporation67Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Agenda
OverviewGetting startedAudit Policy MaintenanceAuthenticationDatabase EventsApplication EventsInternal Events
© 2006 Progress Software Corporation68Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Application Defined Events
Events with no corresponding database operationContext describes why the data was audited• Gives meaning to record level auditing• Event ID >= 32000
Fully control granularity and detail• Example: 1 audit record for dispatch of an
order Group into ranges to simplify reporting
© 2006 Progress Software Corporation69Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Application Context
Provides contextual information• When, where and why of changes
Types of contextual information• Database transactions and sequence• Client login sessions• Application Context• Application Event Groups (AEG)
© 2006 Progress Software Corporation70Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Types of Scope and Auditing Context
Audit-event-record
…
Audit-event-record
Audit-event-record
…
Audit-event-record
Audit-event-record
…
Audit-event-record
Audit-event-record
…
Audit-event-record
Audit-event-record
…
Audit-event-record
Database
Transaction
…
Audit
Event
Group
…
Application
Context
…
Client
Login
Session
…
© 2006 Progress Software Corporation71Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Log an Audit Event
Creates an application defined event• In all audit-enabled databases with the event
enabledA supporting active policy must existCan write directly to the long-term storageCan be used for read auditing
AUDIT-CONTROL:LOG-AUDIT-EVENT method
© 2006 Progress Software Corporation72Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Log Audit Event - Example
…Ctx-id = AUDIT-CONTROL:LOG-AUDIT-EVENT
(32530, "Starting Procedure: " + PROGRAM-NAME(1), cDetail, cUserData).
…/* READ auditing */Ctx-id = AUDIT-CONTROL:LOG-AUDIT-EVENT
(32003, "Customer Enquiry",{&FIELDS-IN-FRAME-{&FRAME-NAME}}).
…
© 2006 Progress Software Corporation73Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Set Application Context
Sets application context• Sent to all audit-enabled databases
UUID used as context ID• Recorded with all subsequent audit events
– _aud-audit-data. _application-context-idEvent context cannot be unknown valueApplication context does not support nesting
AUDIT-CONTROL:SET-APPL-CONTEXT method
© 2006 Progress Software Corporation74Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Clearing Application Context
Clears an application context event-id• For all audit enabled databases• No context-id written in subsequent records
No audit event generated
AUDIT-CONTROL:CLEAR-APPL-CONTEXT
© 2006 Progress Software Corporation75Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Application Context - Example
DEF VAR ctx-id as CHAR.
…ctx-id = AUDIT-CONTROL:SET-APPL-CONTEXT
(PROGRAM-NAME(1) + " Context", "Start Customer Enquiry Context").
…
AUDIT-CONTROL:CLEAR-APPL-CONTEXT.
© 2006 Progress Software Corporation76Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Reporting on Event Context
Application context record (parent)• Event ID = 31998• Unique guid in _Audit-data-guid
Audit data records within context• Secondary read required• _Application-context-id = guid of parent
Recursive join on _aud-audit-data
AUDIT-CONTROL:SET-APPL-CONTEXT
© 2006 Progress Software Corporation77Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Audit Event Groups
Indicates beginning of a sequence of ‘batched’ operations• Sent to all audit-enabled databases • Can group multi-database transaction events
UUID used as context ID• Recorded with all subsequent audit events
– _aud-audit-data. _audit-event-groupCannot be nestedEvent context argument cannot be unknown value
AUDIT-CONTROL:BEGIN-EVENT-GROUP method
© 2006 Progress Software Corporation78Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
End The Event Group
Ends an application event group• Sent to all audit-enabled databases
Does not generate an event
AUDIT-CONTROL:END-EVENT-GROUP method
Ctx-id = AUDIT-CONTROL:BEGIN-EVENT-GROUP("Save Order Details-EVENT GROUP", "Data-set SAVE-ROW-CHANGES", cUserData).…AUDIT-CONTROL:END-EVENT-GROUP.
© 2006 Progress Software Corporation79Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Reporting on Event Groups
Event group record (parent)• Event ID = 31999• Unique guid in _Audit-data-guid
Audit data records within context• Secondary read required• _Audit-event-group = guid of parent
Recursive join on _aud-audit-data
AUDIT-CONTROL:BEGIN-EVENT-GROUP
© 2006 Progress Software Corporation80Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
OpenEdge SQL Application Auditing
Log audit events
Set context and begin groups
AUDIT INSERT ( event_id, [ event_context | NULL ], [ event_detail | NULL ]);
AUDIT SET APPLICATION_CONTEXT | EVENT_GROUP[ Context | NULL ];
© 2006 Progress Software Corporation81Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
AUDIT-CONTROL System Handle
APPL-CONTEXT-ID• Returns UUID of current context
EVENT-GROUP-ID• Returns UUID of current event group
Attributes
Ctx-id = AUDIT-CONTROL:APPL-CONTEXT-ID.
Grp-id = AUDIT-CONTROL:EVENT-GROUP-ID.
© 2006 Progress Software Corporation82Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Functions – AUDIT-ENABLED
Queries audit-enabled status
• Returns YES if any connected db is audit enabled
• Returns YES if logical-dbname is audit enabled
logEnabled = AUDIT-ENABLED.
logEnabled = AUDIT-ENABLED (logical-dbname).
© 2006 Progress Software Corporation83Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Functions – GENERATE-UUID
Generates a Universal Unique Identifier
DEFINE VARIABLE rawUUID AS RAW NO-UNDO.DEFINE VARIABLE cBase64UUID AS CHAR NO-UNDO.
DO WHILE TRUE:ASSIGN rawUUID = GENERATE-UUID
cBase64UUID = BASE64-ENCODE(rawUUID).DISPLAY cBase64UUID.
END.
© 2006 Progress Software Corporation84Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Functions - GUID
Formats a 16byte raw UUID• XXXXXXXX—XXXX—XXXX—XXXX—XXXXXXXXXXXX
DEFINE VARIABLE MyUUID AS RAW NO-UNDO.DEFINE VARIABLE vGUID AS CHARACTER NO-UNDO.DEFINE VARIABLE vGUID2 AS CHARACTER NO-UNDO.
ASSIGN MyUUID = GENERATE-UUIDvGUID = GUID (MyUUID)vGUID2 = GUID. /* Calls GENERATE-UUID */
© 2006 Progress Software Corporation85Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Application Events and Context – Demo. Lab4
© 2006 Progress Software Corporation86Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Agenda
OverviewGetting startedAudit Policy MaintenanceAuthenticationDatabase EventsApplication EventsInternal Events
© 2006 Progress Software Corporation87Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
What gets Audited?
Authentication (login)Database connectionsSchema changesAudit policy administrationSecurity administrationDatabase utilitiesAudit archiving
Internal events
© 2006 Progress Software Corporation88Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
What is NOT Audited?
Non record based utilities• Prolog, prostrct, …
Probkup, prorest, procopyProutil• Idxcheck, idxfix, index deactivate
Database utilities
© 2006 Progress Software Corporation89Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Audit Archival Utility
Internal events
Audit Archiver
Audit Archive
DB
Short Term StoragePurposed,
Long Term Storage
ApplicationDB
_proutil dbname –C auditarchive _proutil dbname –C auditload
Audit Data
.abd fileReporting
AuditArchive
Audit ArchiveLoader
© 2006 Progress Software Corporation90Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Audit Data Archival Utility
Must have Audit Archive privilege to run May be scheduled, e.g. CRONFast binary dump / load using .abd fileOptional delete of source audit data on dumpSupports• Multiple simultaneous invocation online• Online operation
Is an auditable event
Archiving audit data
© 2006 Progress Software Corporation91Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Audit Data Archival Utility
Date range format• “MM-DD-YYYY HH:MM:SS.SSS+HH:MM”• Must be quoted
Records deleted num-recs at a time
_proutil <dbname> -C auditarchive[date-range [date-range2]] [-recs num-recs][–nodelete] [-directory directory | /dev/null ][-userid userid –password password][-checkseal]
Audit Archive - command line syntax
© 2006 Progress Software Corporation92Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Archive Load Operation
_proutil <dbname> -C auditloadaudit-archive-file-name [-recs num-recs][-userid userid –password password][-checkseal]
Records loaded num-recs at a timeDuplicates are ignored
Loading audit data - command line syntax
© 2006 Progress Software Corporation93Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Auditing - Summary
10.1A provides uninterrupted trail of audit events• Database, application, internal
Secure, tamper resistant audit data and policiesFlexible and scalableBuilt-in auditing for 4GL and SQL clientsHigh performance
© 2006 Progress Software Corporation94Product Readiness 10.1A FCS Training - INTERNAL USE ONLY
Documentation and Education
OpenEdge Getting Started: Core Business ServicesWebpapersEducationWhat’s New 10.1 – Auditing
© 2006 Progress Software Corporation95Product Readiness 10.1A FCS Training - INTERNAL USE ONLY