diff --git a/docs/entities.md b/docs/entities.md index df9f4897b3..1627c6aea9 100644 --- a/docs/entities.md +++ b/docs/entities.md @@ -23,13 +23,13 @@ This page documents various entities that can be managed in Apache Polaris (Incu A catalog is a top-level entity in Polaris that may contain other entities like [namespaces](#namespace) and [tables](#table). These map directly to [Apache Iceberg catalogs](https://iceberg.apache.org/concepts/catalog/). -For information on managing catalogs with the REST API or for more information on what data can be associated with a catalog, see [the API docs](../regtests/client/python/docs/CreateCatalogRequest.md). +For information on managing catalogs with the REST API or for more information on what data can be associated with a catalog, see [the API docs](https://github.com/apache/polaris/blob/main/regtests/client/python/docs/CreateCatalogRequest.md). ### Storage Type All catalogs in Polaris are associated with a _storage type_. Valid Storage Types are `S3`, `Azure`, and `GCS`. The `FILE` type is also additionally available for testing. Each of these types relates to a different storage provider where data within the catalog may reside. Depending on the storage type, various other configurations may be set for a catalog including credentials to be used when accessing data inside the catalog. -For details on how to use Storage Types in the REST API, see [the API docs](../regtests/client/python/docs/StorageConfigInfo.md). +For details on how to use Storage Types in the REST API, see [the API docs](https://github.com/apache/polaris/blob/main/regtests/client/python/docs/StorageConfigInfo.md). ## Namespace @@ -37,32 +37,32 @@ A namespace is a logical entity that resides within a [catalog](#catalog) and ca In Polaris, namespaces can be nested. For example, `a.b.c.d.e.f.g` is a valid namespace. `b` is said to reside within `a`, and so on. -For information on managing namespaces with the REST API or for more information on what data can be associated with a namespace, see [the API docs](../regtests/client/python/docs/CreateNamespaceRequest.md). +For information on managing namespaces with the REST API or for more information on what data can be associated with a namespace, see [the API docs](https://github.com/apache/polaris/blob/main/regtests/client/python/docs/CreateNamespaceRequest.md). ## Table Polaris tables are entities that map to [Apache Iceberg tables](https://iceberg.apache.org/docs/nightly/configuration/). -For information on managing tables with the REST API or for more information on what data can be associated with a table, see [the API docs](../regtests/client/python/docs/CreateTableRequest.md). +For information on managing tables with the REST API or for more information on what data can be associated with a table, see [the API docs](https://github.com/apache/polaris/blob/main/regtests/client/python/docs/CreateTableRequest.md). ## View Polaris views are entities that map to [Apache Iceberg views](https://iceberg.apache.org/view-spec/). -For information on managing views with the REST API or for more information on what data can be associated with a view, see [the API docs](../regtests/client/python/docs/CreateViewRequest.md). +For information on managing views with the REST API or for more information on what data can be associated with a view, see [the API docs](https://github.com/apache/polaris/blob/main/regtests/client/python/docs/CreateViewRequest.md). ## Principal Polaris principals are unique identities that can be used to represent users or services. Each principal may have one or more [principal roles](#principal-role) assigned to it for the purpose of accessing catalogs and the entities within them. -For information on managing principals with the REST API or for more information on what data can be associated with a principal, see [the API docs](../regtests/client/python/docs/CreatePrincipalRequest.md). +For information on managing principals with the REST API or for more information on what data can be associated with a principal, see [the API docs](https://github.com/apache/polaris/blob/main/regtests/client/python/docs/CreatePrincipalRequest.md). ## Principal Role Polaris principal roles are labels that may be granted to [principals](#principal). Each principal may have one or more principal roles, and the same principal role may be granted to multiple principals. Principal roles may be assigned based on the persona or responsibilities of a given principal, or on how that principal will need to access different entities within Polaris. -For information on managing principal roles with the REST API or for more information on what data can be associated with a principal role, see [the API docs](../regtests/client/python/docs/CreatePrincipalRoleRequest.md). +For information on managing principal roles with the REST API or for more information on what data can be associated with a principal role, see [the API docs](https://github.com/apache/polaris/blob/main/regtests/client/python/docs/CreatePrincipalRoleRequest.md). ## Catalog Role @@ -78,7 +78,7 @@ Polaris privileges are granted to [catalog roles](#catalog-role) in order to gra A privilege can be scoped to any entity inside a catalog, including the catalog itself. For a list of supported privileges for each privilege class, see the API docs: -* [Table Privileges](../regtests/client/python/docs/TablePrivilege.md) -* [View Privileges](../regtests/client/python/docs/ViewPrivilege.md) -* [Namespace Privileges](../regtests/client/python/docs/NamespacePrivilege.md) -* [Catalog Privileges](../regtests/client/python/docs/CatalogPrivilege.md) +* [Table Privileges](https://github.com/apache/polaris/blob/main/regtests/client/python/docs/TablePrivilege.md) +* [View Privileges](https://github.com/apache/polaris/blob/main/regtests/client/python/docs/ViewPrivilege.md) +* [Namespace Privileges](https://github.com/apache/polaris/blob/main/regtests/client/python/docs/NamespacePrivilege.md) +* [Catalog Privileges](https://github.com/apache/polaris/blob/main/regtests/client/python/docs/CatalogPrivilege.md) diff --git a/docs/index.html b/docs/index.html index bc2da3046b..5272d33cc6 100644 --- a/docs/index.html +++ b/docs/index.html @@ -592,7 +592,7 @@
At this point, Polaris is running.
-For this tutorial, we'll launch an instance of Polaris that stores entities only in-memory. This means that any entities that you define will be destroyed when Polaris is shut down. It also means that Polaris will automatically bootstrap itself with root credentials. For more information on how to configure Polaris for production usage, see the docs.
+">For this tutorial, we'll launch an instance of Polaris that stores entities only in-memory. This means that any entities that you define will be destroyed when Polaris is shut down. It also means that Polaris will automatically bootstrap itself with root credentials. For more information on how to configure Polaris for production usage, see the docs.
When Polaris is launched using in-memory mode the root principal credentials can be found in stdout on initial startup. For example:
realm: default-realm root principal credentials: <client-id>:<client-secret>
@@ -608,7 +608,7 @@ export CLIENT_ID=<client-id>
export CLIENT_SECRET=<client-secret>
-In Polaris, the catalog is the top-level entity that objects like tables and views are organized under. With a Polaris service running, you can create a catalog like so:
+">In Polaris, the catalog is the top-level entity that objects like tables and views are organized under. With a Polaris service running, you can create a catalog like so:
cd ~/polaris
./polaris \
@@ -703,10 +703,10 @@ Building Polaris
This will create a new catalog called quickstart_catalog.
The DEFAULT_BASE_LOCATION you provide will be the default location that objects in this catalog should be stored in, and the ROLE_ARN you provide should be a Role ARN with access to read and write data in that location. These credentials will be provided to engines reading data from the catalog once they have authenticated with Polaris using credentials that have access to those resources.
If you’re using a storage type other than S3, such as Azure, you’ll provide a different type of credential than a Role ARN. For more details on supported storage types, see the docs.
-Additionally, if Polaris is running somewhere other than localhost:8181, you can specify the correct hostname and port by providing --host and --port flags. For the full set of options supported by the CLI, please refer to the docs.
If you’re using a storage type other than S3, such as Azure, you’ll provide a different type of credential than a Role ARN. For more details on supported storage types, see the docs.
+Additionally, if Polaris is running somewhere other than localhost:8181, you can specify the correct hostname and port by providing --host and --port flags. For the full set of options supported by the CLI, please refer to the docs.
With a catalog created, we can create a principal that has access to manage that catalog. For details on how to configure the Polaris CLI, see the section above or refer to the docs.
+With a catalog created, we can create a principal that has access to manage that catalog. For details on how to configure the Polaris CLI, see the section above or refer to the docs.
./polaris \
--client-id ${CLIENT_ID} \
--client-secret ${CLIENT_SECRET} \
@@ -734,7 +734,7 @@ Creating a Principal a
./polaris ... principals create example
{"clientId": "XXXX", "clientSecret": "YYYY"}
-
Now, we grant the principal the principal role we created, and grant the catalog role the principal role we created. For more information on these entities, please refer to the linked documentation.
+Now, we grant the principal the principal role we created, and grant the catalog role the principal role we created. For more information on these entities, please refer to the linked documentation.
./polaris \
--client-id ${CLIENT_ID} \
--client-secret ${CLIENT_SECRET} \
@@ -754,7 +754,7 @@ Creating a Principal a
Now, we’ve linked our principal to the catalog via roles like so:

-In order to give this principal the ability to interact with the catalog, we must assign some privileges. For the time being, we will give this principal the ability to fully manage content in our new catalog. We can do this with the CLI like so:
+In order to give this principal the ability to interact with the catalog, we must assign some privileges. For the time being, we will give this principal the ability to fully manage content in our new catalog. We can do this with the CLI like so:
./polaris \
--client-id ${CLIENT_ID} \
--client-secret ${CLIENT_SECRET} \
@@ -765,7 +765,7 @@ Creating a Principal a
--catalog-role quickstart_catalog_role \
CATALOG_MANAGE_CONTENT
-This grants the catalog privileges CATALOG_MANAGE_CONTENT to our catalog role, linking everything together like so:
+This grants the catalog privileges CATALOG_MANAGE_CONTENT to our catalog role, linking everything together like so:

CATALOG_MANAGE_CONTENT has create/list/read/write privileges on all entities within the catalog. The same privilege could be granted to a namespace, in which case the principal could create/list/read/write any entity under that namespace.
With Polaris, you can provide centralized, secure read and write access to your Iceberg tables across different REST-compatible query engines.
This section introduces key concepts associated with using Apache Polaris (Incubating).
-In the following diagram, a sample Apache Polaris (Incubating) structure with nested namespaces is shown for Catalog1. No tables +
In the following diagram, a sample Apache Polaris (Incubating) structure with nested namespaces is shown for Catalog1. No tables or namespaces have been created yet for Catalog2 or Catalog3.
A service connection represents a REST-compatible engine (such as Apache Spark™, Apache Flink®, or Trino) that can read from and write to Polaris Catalog. When creating a new service connection, the Polaris administrator grants the service principal that is created with the new service connection either a new or existing principal role. A principal role is a resource in Polaris that you can use to logically group Polaris -service principals together and grant privileges on securable objects. For more information, see Principal role. Polaris uses a role-based access control (RBAC) model to grant service principals access to resources. For more information, -see Access control. For a diagram of this model, see RBAC model.
+service principals together and grant privileges on securable objects. For more information, see Principal role. Polaris uses a role-based access control (RBAC) model to grant service principals access to resources. For more information, +see Access control. For a diagram of this model, see RBAC model.If the Polaris administrator grants the service principal for the new service connection a new principal role, the service principal doesn't have any privileges granted to it yet. When securing the catalog that the new service connection will connect to, the Polaris administrator grants privileges to catalog roles and then grants these catalog roles to the new principal role. As a result, the service -principal for the new service connection has these privileges. For more information about catalog roles, see Catalog role.
+principal for the new service connection has these privileges. For more information about catalog roles, see Catalog role.If the Polaris administrator grants an existing principal role to the service principal for the new service connection, the service principal has the same privileges granted to the catalog roles that are granted to the existing principal role. If needed, the Polaris administrator can grant additional catalog roles to the existing principal role or remove catalog roles from it to adjust the privileges -bestowed to the service principal. For an example of how RBAC works in Polaris, see RBAC example.
+bestowed to the service principal. For an example of how RBAC works in Polaris, see RBAC example.A storage configuration stores a generated identity and access management (IAM) entity for your external cloud storage and is created when you create a catalog. The storage configuration is used to set the values to connect Polaris to your cloud storage. During the @@ -1246,7 +1246,7 @@
This section describes security and access control.
To secure interactions with service connections, Polaris vends temporary storage credentials to the query engine during query @@ -1271,7 +1271,7 @@
For more information, see Access control.
+For more information, see Access control.
Apache®, Apache Iceberg™, Apache Spark™, Apache Flink®, and Flink® are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries.
This page documents various entities that can be managed in Apache Polaris (Incubating).
A catalog is a top-level entity in Polaris that may contain other entities like namespaces and tables. These map directly to Apache Iceberg catalogs.
-For information on managing catalogs with the REST API or for more information on what data can be associated with a catalog, see the API docs.
+For information on managing catalogs with the REST API or for more information on what data can be associated with a catalog, see the API docs.
All catalogs in Polaris are associated with a storage type. Valid Storage Types are S3, Azure, and GCS. The FILE type is also additionally available for testing. Each of these types relates to a different storage provider where data within the catalog may reside. Depending on the storage type, various other configurations may be set for a catalog including credentials to be used when accessing data inside the catalog.
For details on how to use Storage Types in the REST API, see the API docs.
+For details on how to use Storage Types in the REST API, see the API docs.
A namespace is a logical entity that resides within a catalog and can contain other entities such as tables or views. Some other systems may refer to namespaces as schemas or databases.
In Polaris, namespaces can be nested. For example, a.b.c.d.e.f.g is a valid namespace. b is said to reside within a, and so on.
For information on managing namespaces with the REST API or for more information on what data can be associated with a namespace, see the API docs.
+For information on managing namespaces with the REST API or for more information on what data can be associated with a namespace, see the API docs.
Polaris tables are entities that map to Apache Iceberg tables.
-For information on managing tables with the REST API or for more information on what data can be associated with a table, see the API docs.
+For information on managing tables with the REST API or for more information on what data can be associated with a table, see the API docs.
Polaris views are entities that map to Apache Iceberg views.
-For information on managing views with the REST API or for more information on what data can be associated with a view, see the API docs.
+For information on managing views with the REST API or for more information on what data can be associated with a view, see the API docs.
Polaris principals are unique identities that can be used to represent users or services. Each principal may have one or more principal roles assigned to it for the purpose of accessing catalogs and the entities within them.
-For information on managing principals with the REST API or for more information on what data can be associated with a principal, see the API docs.
+For information on managing principals with the REST API or for more information on what data can be associated with a principal, see the API docs.
Polaris principal roles are labels that may be granted to principals. Each principal may have one or more principal roles, and the same principal role may be granted to multiple principals. Principal roles may be assigned based on the persona or responsibilities of a given principal, or on how that principal will need to access different entities within Polaris.
-For information on managing principal roles with the REST API or for more information on what data can be associated with a principal role, see the API docs.
+For information on managing principal roles with the REST API or for more information on what data can be associated with a principal role, see the API docs.
Polaris catalog roles are labels that may be granted to catalogs. Each catalog may have one or more catalog roles, and the same catalog role may be granted to multiple catalogs. Catalog roles may be assigned based on the nature of data that will reside in a catalog, or by the groups of users and services that might need to access that data.
@@ -1354,19 +1354,19 @@Polaris privileges are granted to catalog roles in order to grant principals with a given principal role some degree of access to catalogs with a given catalog role. When a privilege is granted to a catalog role, any principal roles granted that catalog role receive the privilege. In turn, any principals who are granted that principal role receive it.
A privilege can be scoped to any entity inside a catalog, including the catalog itself.
For a list of supported privileges for each privilege class, see the API docs:
{- "source": {
- "namespace": [
- "accounting",
- "tax"
], - "name": "paid-view"
}, - "destination": {
- "namespace": [
- "accounting",
- "tax"
], - "name": "owed-view"
}
}{- "error": {
- "message": "Malformed request",
- "type": "BadRequestException",
- "code": 400
}
}