- All Superinterfaces:
- MetadataObject
- All Known Implementing Classes:
- SecurableObjectDTO
@Unstable
public interface SecurableObject
extends MetadataObject
The securable object is the entity which access can be granted. Unless allowed by a grant, access
is denied. Apache Gravitino organizes the securable objects using tree structure.
There are three fields in the securable object: parent, name, and type.
The types include 6 kinds: CATALOG,SCHEMA,TABLE,FILESET,TOPIC and METALAKE.
You can use the helper class `SecurableObjects` to create the securable object which you need.
You can use full name and type of the securable object in the RESTFUL API.
For example,
If you want to use a catalog named `catalog1`, you can use the code
`SecurableObjects.ofCatalog("catalog1")` to create the securable object, or you can use full name
`catalog1` and type `CATALOG` in the RESTFUL API.
If you want to use a schema named `schema1` in the catalog named `catalog1`, you can use the code
`SecurableObjects.ofSchema(catalog, "schema1")` to create the securable object, or you can use
full name `catalog1.schema1` and type `SCHEMA` in the RESTFUL API.
If you want to use a table named `table1` in the schema named `schema1`, you can use the code
`SecurableObjects.ofTable(schema, "table1")` to create the securable object, or you can use full
name `catalog1.schema1.table1` and type `TABLE` in the RESTFUL API.
If you want to use a topic named `topic1` in the schema named `schema1`, you can use the code
`SecurableObjects.ofTopic(schema, "topic1")` to create the securable object, or you can use full
name `catalog1.schema1.topic1` and type `TOPIC` in the RESTFUL API.
If you want to use a fileset named `fileset1` in the schema named `schema1`, you can use the code
`SecurableObjects.ofFileset(schema, "fileset1)` to create the securable object, or you can use
full name `catalog1.schema1.fileset1` and type `FILESET` in the RESTFUL API.
If you want to use a metalake named `metalake1`, you can use the code
`SecurableObjects.ofMetalake("metalake1")` to create the securable object, or you can use full
name `metalake1` and type `METALAKE` in the RESTFUL API.
If you want to use all the catalogs, you use the metalake to represent them. Likely, you can use
their common parent to represent all securable objects.
For example if you want to have read table privileges of all tables of `catalog1.schema1`, " you
can use add `read table` privilege for `catalog1.schema1` directly