- 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