3.2.3.5.4 Control Access to Datastores
With the ore.grant
and ore.revoke
functions you can grant or revoke access to an OML4R datastore.
With the ore.grant
and ore.revoke
functions, you can control access to datastores. You can grant read access to a specified user to a datastore that you own or revoke the access privilege. The functions ore.save
, ore.load
, ore.datastore
, and ore.datastoreSummary
have arguments related to the accessibility of datastores.
Note:
If you use ore.create
to create a persistent database table and its proxy ore.frame
object, then save the proxy ore.frame
object in a grantable datastore, and then use ore.grant
to grant read privilege access to the datastore, the access applies only to the ore.frame
object. The read access does not extend to the persistent database table. To grant read permission to the table itself, you must run an appropriate SQL command.
Example 3-19 Granting and Revoking Access to a Datastore
This example pushes the airquality data set from the local R session to the Oracle database, where it exists as the ore.frame
object AIRQUALITY
and as a temporary database table with the same name. The example then saves the AIRQUALITY
object to the datastore ds3
and specifies that access to the datastore can be granted to other users. It calls function ore.datastore
with type = grantable
to display all of the datastores to which read access has been granted. It grants the read privilege for the ds3
datastore to SCOTT. It then calls ore.datastore
with type = grant
to display the datastores to which read access has been granted. It revokes the read privilege for SCOTT, and again displays the datastores to which access has been granted.
AIRQUALITY <- ore.push(airquality)
ore.save(AIRQUALITY, name = "ds3",
description = "My datastore 3", grantable = TRUE)
ore.datastore(type = "grantable")
ore.datastore(type = "grant")
ore.grant("ds3", type = "datastore", user = "SCOTT")
ore.datastore(type = "grant")
ore.revoke("ds3", type = "datastore", user = "SCOTT")
ore.datastore(type = "grant")
Listing for This Example
R> AIRQUALITY <- ore.push(airquality)
R> ore.save(AIRQUALITY, name = "ds3",
+ description = "My datastore 3", grantable = TRUE)
R> ore.datastore(type = "grantable")
datastore.name object.count size creation.date description
1 ds3 1 1451 2015-11-30 18:48:25 My datastore 3
R> ore.datastore(type = "grant")
[1] datastore.name grantee
<0 rows> (or 0-length row.names)
R> ore.grant("ds3", type = "datastore", user = "SCOTT")
R> ore.datastore(type = "grant")
datastore.name grantee
1 ds3 SCOTT
R> ore.revoke("ds3", type = "datastore", user = "SCOTT")
R> ore.datastore(type = "grant")
[1] datastore.name grantee
<0 rows> (or 0-length row.names)
Parent topic: Save and Manage R Objects in the Database