Skip to content

Commit

Permalink
[ch3934] finish Role; add datasource credentials to Datasource
Browse files Browse the repository at this point in the history
  • Loading branch information
pmaher-mamori-io committed Oct 25, 2021
1 parent bdf691d commit cfeb56a
Show file tree
Hide file tree
Showing 39 changed files with 879 additions and 939 deletions.
178 changes: 91 additions & 87 deletions examples/application_proxy/setup_demo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,109 +6,113 @@
* mamori.io reserves all rights to this software and no rights and/or licenses are granted to any party
* unless a separate, written license is agreed to and signed by mamori.io.
*/
import { ExampleWrapper } from '../example_wrapper' ;
import { ParsedArgs } from 'minimist';

import { DMService } from '../../dist/api';
import { Role } from '../../dist/role';
import { ParsedArgs } from 'minimist';
import { Runnable } from '../../dist/runnable' ;

let mgrRoleName = "appp_manager";
let userRoleName = "appp_user";
let endorseRoleName = "appp_endorser";
let filterName = "appp_customers";
let accessName = "appp_access";

let eg = async function (dm: DMService, args: ParsedArgs) {
//
// appp roles
//
let mgrRole = await new Role(mgrRoleName) ;
if (await mgrRole.get(dm)) {
console.info("Endorser role: ", mgrRole.name);
}
else {
await mgrRole.create(dm) ;
console.info("Created role: ", mgrRole.name);
await mgrRole.grant(dm, ['REQUEST'], "*", false) ;
}
class ApplicationDemo extends Runnable {

async run(dm: DMService, _args: ParsedArgs): Promise<void> {
//
// appp roles
//
let mgrRole = await new Role(mgrRoleName) ;
if (await mgrRole.get(dm)) {
console.info("Endorser role: ", mgrRole.name);
}
else {
await mgrRole.create(dm) ;
console.info("Created role: ", mgrRole.name);
await mgrRole.grant(dm, ['REQUEST'], "*", false) ;
}

let userRole = await new Role(userRoleName) ;
if (await userRole.get(dm)) {
console.info("User role: ", userRole.name);
}
else {
await userRole.create(dm) ;
console.info("Created role: ", userRole.name);
}
let userRole = await new Role(userRoleName) ;
if (await userRole.get(dm)) {
console.info("User role: ", userRole.name);
}
else {
await userRole.create(dm) ;
console.info("Created role: ", userRole.name);
}

let endorseRole = await new Role(endorseRoleName) ;
if (await endorseRole.get(dm)) {
console.info("Endorser role: ", endorseRole.name);
}
else {
await endorseRole.create(dm) ;
console.info("Created role: ", endorseRole.name);
await endorseRole.grant(dm, ['REQUEST'], "*", false) ;
}
let endorseRole = await new Role(endorseRoleName) ;
if (await endorseRole.get(dm)) {
console.info("Endorser role: ", endorseRole.name);
}
else {
await endorseRole.create(dm) ;
console.info("Created role: ", endorseRole.name);
await endorseRole.grant(dm, ['REQUEST'], "*", false) ;
}

//
// apppsense filter
//
//
// apppsense filter
//

// Teardown existing
//
var filterResult = await dm.get_http_apifilters([["name", "=", filterName]]);
if (filterResult.data && filterResult.data.length > 0) {
await dm.delete_http_apifilter(filterResult.data[0].id);
console.info("Deleted filter: ", filterName);
}
await dm.policies_drop_procedure(accessName);
console.info("Deleted procedure: ", accessName);
// Teardown existing
//
var filterResult = await dm.get_http_apifilters([["name", "=", filterName]]);
if (filterResult.data && filterResult.data.length > 0) {
await dm.delete_http_apifilter(filterResult.data[0].id);
console.info("Deleted filter: ", filterName);
}
await dm.policies_drop_procedure(accessName);
console.info("Deleted procedure: ", accessName);

// Setup anew
//
await dm.add_http_apifilter({
name: filterName,
system: "appp",
type: "appp",
path: "Customer Detail",
method: "",
queryparameters: "",
headers: "",
body: "",
owner: args._[0],
transformations:
'[{"name":"default","priority":1,"function":"MASK HASH","elementSpec":"Customer Name","functionArgs":"MD5"},' +
'{"name":"default","priority":1,"function":"MASK FULL","elementSpec":"Customer Gender"},' +
'{"name":"default","priority":1,"function":"MASK FULL","elementSpec":"Sales Revenue (Current Year)","functionArgs":"9|$,"},' +
'{"name":"appp_manager","priority":1,"function":"REVEAL","elementSpec":"*"}]',
});
console.info("Created appp filter: ", filterName);
// Setup anew
//
await dm.add_http_apifilter({
name: filterName,
system: "appp",
type: "appp",
path: "Customer Detail",
method: "",
queryparameters: "",
headers: "",
body: "",
owner: args._[0],
transformations:
'[{"name":"default","priority":1,"function":"MASK HASH","elementSpec":"Customer Name","functionArgs":"MD5"},' +
'{"name":"default","priority":1,"function":"MASK FULL","elementSpec":"Customer Gender"},' +
'{"name":"default","priority":1,"function":"MASK FULL","elementSpec":"Sales Revenue (Current Year)","functionArgs":"9|$,"},' +
'{"name":"appp_manager","priority":1,"function":"REVEAL","elementSpec":"*"}]',
});
console.info("Created appp filter: ", filterName);

await dm.policies_create_procedure(accessName,
{a: {name: "time", description: "Duration of access", default_value: "30"}},
endorseRoleName,
"policy",
"Grant access to appp data",
userRoleName,
"",
"",
"",
"",
"1",
"",
"true",
"",
"BEGIN; GRANT " + mgrRoleName + " TO :applicant VALID FOR :time seconds; END");
console.info("Created access policy: ", accessName);
await dm.policies_create_procedure(accessName,
{a: {name: "time", description: "Duration of access", default_value: "30"}},
endorseRoleName,
"policy",
"Grant access to appp data",
userRoleName,
"",
"",
"",
"",
"1",
"",
"true",
"",
"BEGIN; GRANT " + mgrRoleName + " TO :applicant VALID FOR :time seconds; END");
console.info("Created access policy: ", accessName);

var filterResult = await dm.get_http_apifilters({ filter: ["name", "=", filterName] });
if (filterResult) {
await dm.activate_http_apifilter(filterResult.data[0].id);
console.info("Activeted filter: ", filterName);
var filterResult = await dm.get_http_apifilters({ filter: ["name", "=", filterName] });
if (filterResult) {
await dm.activate_http_apifilter(filterResult.data[0].id);
console.info("Activeted filter: ", filterName);
}
}
}

let rapt = new ExampleWrapper(eg, process.argv) ;
rapt.execute()
.catch((e: any) => console.error("ERROR: ", e.response == undefined ? e : e.response.data))
.finally(() => process.exit(0));
new ApplicationDemo()
.execute()
.catch((e: any) => console.error("ERROR: ", e.response == undefined ? e : e.response.data))
.finally(() => process.exit(0));
55 changes: 31 additions & 24 deletions examples/create_column_mask.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,14 @@
* mamori.io reserves all rights to this software and no rights and/or licenses are granted to any party
* unless a separate, written license is agreed to and signed by mamori.io.
*/
import { ExampleWrapper } from './example_wrapper' ;
import { DMService } from '../dist/api';
import { ParsedArgs } from 'minimist';

import { DMService } from '../dist/api';
import { Runnable } from '../dist/runnable' ;

let usage =
"Usage:\n" +
" yarn ts-node <example script> [--help] --url <url> <user> <password> <policy> <table> <column> <transform> [<type>]\n" +
" yarn ts-node examples/create_column_mask.ts [--help] --url <url> <user> <password> <policy> <table> <column> <transform> [<type>]\n" +
"where:\n" +
" url Default: localhost:443\n" +
" user mamori server user\n" +
Expand All @@ -23,29 +24,35 @@ let usage =
" transform The transformation the policy will apply, e.g. \"MASKED BY phone()\" or REVEALED.\n" +
" type Optionally either table or resultset. Default: table" ;

let eg = async function (dm: DMService, args: ParsedArgs) {
let policy_name = args._[2] ;
let table = args._[3] ;
let column = args._[4] ;
let transform = args._[5] ;
let type = "table" ;
if (args.length > 6) {
type = args._[6] ;
class Example extends Runnable {

constructor() {
super(usage) ;
}

await dm.policies_set_policy_projection(table, column, transform, policy_name, type) ;
console.info("Created policy: ", policy_name, " for: ", table, ".", column);

var offResult = await dm.policies_get_policy_projections([["policy", "=", policy_name]]);
if (offResult.data) {
for(var i in offResult.data) {
console.info(policy_name, " policy: ", offResult.data[i]);

async run(dm: DMService, args: ParsedArgs): Promise<void> {
let policy_name = args._[2] ;
let table = args._[3] ;
let column = args._[4] ;
let transform = args._[5] ;
let type = "table" ;
if (args.length > 6) {
type = args._[6] ;
}

await dm.policies_set_policy_projection(table, column, transform, policy_name, type) ;
console.info("Created policy: ", policy_name, " for: ", table, ".", column);

var offResult = await dm.policies_get_policy_projections([["policy", "=", policy_name]]);
if (offResult.data) {
for(var i in offResult.data) {
console.info(policy_name, " policy: ", offResult.data[i]);
}
}
}
}

let rapt = new ExampleWrapper(eg, process.argv) ;
rapt.usage = usage ;
rapt.execute()
.catch((e: any) => console.error("ERROR: ", e.response == undefined ? e : e.response.data))
.finally(() => process.exit(0));
new Example()
.execute()
.catch((e: any) => console.error("ERROR: ", e.response == undefined ? e : e.response.data))
.finally(() => process.exit(0));
93 changes: 48 additions & 45 deletions examples/create_datasource.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,56 +6,59 @@
* mamori.io reserves all rights to this software and no rights and/or licenses are granted to any party
* unless a separate, written license is agreed to and signed by mamori.io.
*/
import { ExampleWrapper } from './example_wrapper' ;
import { ParsedArgs } from 'minimist';

import { DMService } from '../dist/api';
import { Datasource } from '../dist/datasource';
import { ParsedArgs } from 'minimist';
import { Runnable } from '../dist/runnable' ;

let eg = async function (dm: DMService, _args: ParsedArgs) {
let egSystem = new Datasource("test_system") ;
try {
await egSystem.delete(dm);
console.info("Delete system: ", egSystem.name);
}
catch (e) {
console.info("Delete system ", egSystem.name, ": ", (e as Error).message);
}
class CreateDatasourceExample extends Runnable {

async run(dm: DMService, _args: ParsedArgs): Promise<void> {
let egSystem = new Datasource("test_system") ;
try {
await egSystem.delete(dm);
console.info("Delete system: ", egSystem.name);
}
catch (e) {
console.info("Delete system ", egSystem.name, ": ", (e as Error).message);
}

egSystem.ofType("POSTGRESQL", 'postgres')
.at("10.1.1.209", 5432)
.withCredentials('postgres', 'postgres')
.withTempDatabase('mamori')
.withDatabase('mamori')
.withConnectionProperties('allowEncodingChanges=true;defaultNchar=true');
await egSystem.create(dm) ;
console.info("Created ", egSystem);
egSystem.ofType("POSTGRESQL", 'postgres')
.at("10.1.1.209", 5432)
.withCredentials('postgres', 'postgres')
.withTempDatabase('mamori')
.withDatabase('mamori')
.withConnectionProperties('allowEncodingChanges=true;defaultNchar=true');
await egSystem.create(dm) ;
console.info("Created ", egSystem);


// Alternative
try {
await Datasource.build({name: "test2_system"}).delete(dm);
console.info("Delete system: test2_system");
}
catch (e) {
console.info("Delete system test2_system: ", (e as Error).message);
}
// Alternative
try {
await Datasource.build({name: "test2_system"}).delete(dm);
console.info("Delete system: test2_system");
}
catch (e) {
console.info("Delete system test2_system: ", (e as Error).message);
}

await Datasource.build({
name: "test2_system",
type: "POSTGRESQL",
driver: "postgres",
host: "10.1.1.209",
port: 5432,
user: "postgres",
password: "postgres",
tempDatabase: "mamori",
database: "mamori",
urlProperties: 'allowEncodingChanges=true;defaultNchar=true'
}).create(dm) ;
console.info("Created system: test2_system");
await Datasource.build({
name: "test2_system",
type: "POSTGRESQL",
driver: "postgres",
host: "10.1.1.209",
port: 5432,
user: "postgres",
password: "postgres",
tempDatabase: "mamori",
database: "mamori",
urlProperties: 'allowEncodingChanges=true;defaultNchar=true'
}).create(dm) ;
console.info("Created system: test2_system");
}
}

let rapt = new ExampleWrapper(eg, process.argv) ;
rapt.execute()
.catch((e: any) => console.error("ERROR: ", e.response == undefined ? e : e.response.data))
.finally(() => process.exit(0));
new CreateDatasourceExample()
.execute()
.catch((e: any) => console.error("ERROR: ", e.response == undefined ? e : e.response.data))
.finally(() => process.exit(0));
Loading

0 comments on commit cfeb56a

Please sign in to comment.