This is an automated email from the ASF dual-hosted git repository.

yuqi1129 pushed a commit to branch branch-1.3
in repository https://gitbox.apache.org/repos/asf/gravitino.git


The following commit(s) were added to refs/heads/branch-1.3 by this push:
     new 8f9400bcd8 [Cherry-pick to branch-1.3] [MINOR] docs: Reorganize 
Iceberg REST service documentation (#11516) (#11595)
8f9400bcd8 is described below

commit 8f9400bcd8d5e8f7d2b9ce56854f361741db0261
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Thu Jun 11 17:07:40 2026 +0800

    [Cherry-pick to branch-1.3] [MINOR] docs: Reorganize Iceberg REST service 
documentation (#11516) (#11595)
    
    **Cherry-pick Information:**
    - Original commit: 0059250ab9016e093b1ef14c7cb50f6d2b12c9f7
    - Target branch: `branch-1.3`
    - Status: ✅ Clean cherry-pick (no conflicts)
    
    Co-authored-by: roryqi <[email protected]>
---
 docs/iceberg-rest-service.md        | 244 +++++++++++++++++++++---------------
 docs/lakehouse-iceberg-catalog.md   |   2 +-
 docs/security/credential-vending.md |   2 +-
 3 files changed, 147 insertions(+), 101 deletions(-)

diff --git a/docs/iceberg-rest-service.md b/docs/iceberg-rest-service.md
index 511b0ead3f..1a3689092e 100644
--- a/docs/iceberg-rest-service.md
+++ b/docs/iceberg-rest-service.md
@@ -6,43 +6,69 @@ keywords:
 license: "This software is licensed under the Apache License version 2."
 ---
 
-## Background
+## Overview
 
-The Apache Gravitino Iceberg REST Server follows the [Apache Iceberg REST API 
specification](https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml)
 and acts as an Iceberg REST catalog server, you could access the Iceberg REST 
endpoint with the uri `http://$ip:$port/iceberg/`.
+The Apache Gravitino Iceberg REST server implements the [Apache Iceberg REST 
API 
specification](https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml).
+Access the Iceberg REST endpoint at `http://$ip:$port/iceberg/`.
 
-There are some key difference between Gravitino Iceberg REST server and 
Gravitino server.
+The Iceberg REST server and the main Gravitino server expose different 
interfaces and manage different table types:
 
-| Items              | Gravitino Iceberg REST server                           
                                                 | Gravitino server             
                                                                        | 
+| Item               | Gravitino Iceberg REST server                           
                                                 | Gravitino server             
                                                                        |
 
|--------------------|----------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|
 | Interfaces         | [Iceberg REST API 
spec](https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml)
 | [Gravitino unified 
interfaces](https://gravitino.apache.org/docs/latest/api/rest/gravitino-rest-api)
 |
 | Managed table type | Iceberg table only                                      
                                                 | JDBC, Hive, Iceberg, Hudi, 
Paimon, etc                                                               |
 
 ### Capabilities
 
-- Supports the Apache Iceberg REST API defined in Iceberg 1.11, and supports 
most namespace, table and view interfaces. The following interfaces are not 
implemented yet:
-  - multi table transaction
-  - pagination
-  - register view
-- Supports hierarchical (multi-level) namespaces.
-- Works as a catalog proxy, supporting `Hive` and `JDBC` as catalog backend.
-- Supports credential vending for `S3`、`GCS`、`OSS` and `ADLS`.
-- Supports different storages like `S3`, `HDFS`, `OSS`, `GCS`, `ADLS` and 
provides the capability to support other storages.
-- Supports event listener.
-- Supports Audit log.
-- Supports OAuth2 and HTTPS.
-- Supports access control (when running as an auxiliary service).
-- Provides a pluggable metrics store interface to store and delete Iceberg 
metrics.
-- Supports table metadata cache.
-- Supports scan plan cache.
-
-## Server Management
-
-There are three deployment scenarios for Gravitino Iceberg REST server:
-- A standalone server in a standalone Gravitino Iceberg REST server package, 
the classpath is `libs`.
-- A standalone server in the Gravitino server package, the classpath is 
`iceberg-rest-server/libs`.
-- An auxiliary service embedded in the Gravitino server, the classpath is 
`iceberg-rest-server/libs`.
-
-For detailed instructions on how to build and install the Gravitino server 
package, refer to [How to build](./how-to-build.md) and [How to 
install](./how-to-install.md). To build the Gravitino Iceberg REST server 
package, use the command `./gradlew compileIcebergRESTServer -x test`. 
Alternatively, to create the corresponding compressed package in the 
distribution directory, use `./gradlew assembleIcebergRESTServer -x test`. The 
Gravitino Iceberg REST server package includes the following files:
+The Iceberg REST server provides:
+
+- Apache Iceberg 1.11 REST API support for most namespace, table, and view 
operations.
+- Hierarchical namespaces.
+- Hive, JDBC, and REST catalog backends.
+- Credential vending for S3, GCS, OSS, and ADLS.
+- S3, HDFS, OSS, GCS, ADLS, and custom storage support.
+- Event listeners and audit logging.
+- OAuth2 and HTTPS.
+- Access control in auxiliary mode.
+- Pluggable metrics storage.
+- Table metadata and scan plan caches.
+
+The following Iceberg REST API features are not implemented:
+
+- Multi-table transactions.
+- View registration.
+
+## Deployment
+
+### Deployment Modes
+
+Choose one of these deployment modes:
+
+| Mode              | Package                               | Classpath        
          | Access control |
+|-------------------|---------------------------------------|----------------------------|----------------|
+| Standalone server | Gravitino Iceberg REST server package | `libs`           
          | No             |
+| Standalone server | Gravitino server package              | 
`iceberg-rest-server/libs` | No             |
+| Auxiliary service | Gravitino server package              | 
`iceberg-rest-server/libs` | Yes            |
+
+### Package Build
+
+For instructions on building and installing the Gravitino server package, see 
[Build Gravitino](./how-to-build.md) and [Install 
Gravitino](./how-to-install.md).
+
+Build the standalone Iceberg REST server package:
+
+```shell
+./gradlew compileIcebergRESTServer -x test
+```
+
+Create the compressed package in the distribution directory:
+
+```shell
+./gradlew assembleIcebergRESTServer -x test
+```
+
+### Package Layout
+
+The standalone Iceberg REST server package has the following layout:
 
 ```text
 |── ...
@@ -58,22 +84,31 @@ For detailed instructions on how to build and install the 
Gravitino server packa
     |── logs/                                   # Gravitino Iceberg REST 
server logs. Automatically created after the server starts.
 ```
 
-## Iceberg REST Server Configuration
+## Configuration
 
-There are distinct configuration files for standalone and auxiliary server: 
`gravitino-iceberg-rest-server.conf` is used for the standalone server, while 
`gravitino.conf` is for the auxiliary server. Although the configuration files 
differ, the configuration items remain the same.
+Standalone and auxiliary deployments use different configuration files:
 
-Starting with version `0.6.0-incubating`, the prefix 
`gravitino.auxService.iceberg-rest.` for auxiliary server configurations has 
been deprecated. If both `gravitino.auxService.iceberg-rest.key` and 
`gravitino.iceberg-rest.key` are present, the latter will take precedence. The 
configurations listed below use the `gravitino.iceberg-rest.` prefix.
+- Standalone server: `gravitino-iceberg-rest-server.conf`.
+- Auxiliary service: `gravitino.conf`.
 
-### Enable Iceberg REST Service
+Both files use the same Iceberg REST configuration items.
+The `gravitino.auxService.iceberg-rest.` prefix has been deprecated since 
`0.6.0-incubating`.
+If both `gravitino.auxService.iceberg-rest.key` and 
`gravitino.iceberg-rest.key` are present, `gravitino.iceberg-rest.key` takes 
precedence.
+The following sections use the `gravitino.iceberg-rest.` prefix.
+
+### Service Configuration
+
+#### Auxiliary Service
 
 | Configuration item                 | Description                             
                                                                                
                                                                                
                               | Default value | Required | Since Version |
 
|------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------|----------|---------------|
 | `gravitino.auxService.names`       | The auxiliary service name of the 
Gravitino Iceberg REST catalog service. Use **`iceberg-rest`**.                 
                                                                                
                                     | (none)        | Yes      | 0.2.0         
|
 | `gravitino.iceberg-rest.classpath` | The classpath of the Gravitino Iceberg 
REST catalog service; includes the directory containing jars and configuration. 
It supports both absolute and relative paths, for example, 
`iceberg-rest-server/libs, iceberg-rest-server/conf` | (none)        | Yes      
| 0.2.0         |
 
-Please note that, it only takes affect in `gravitino.conf`, you don't need to 
specify the above configurations if start as a standalone server.
+These settings apply only to `gravitino.conf`.
+Do not add them to the standalone server configuration.
 
-### HTTP Server Configuration
+#### HTTP Server
 
 | Configuration item                               | Description               
                                                                                
                                                                                
                                                           | Default value      
                                                          | Required | Since 
Version |
 
|--------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------|----------|---------------|
@@ -91,7 +126,7 @@ Please note that, it only takes affect in `gravitino.conf`, 
you don't need to sp
 The filter in `customFilters` should be a standard javax servlet filter.
 Specify filter parameters by setting configuration entries in the style 
`gravitino.iceberg-rest.<class name of filter>.param.<param name>=<value>`.
 
-### Asynchronous Table Purge
+#### Asynchronous Table Purge
 
 By default, dropping a table with `purgeRequested=true` is synchronous: the 
catalog entry and the table files are removed before the `DELETE` returns.
 
@@ -203,7 +238,7 @@ If IRC2 does not enforce authorization, keeping 
`gravitino.iceberg-rest.disable-
 
 If you want to use a custom Iceberg Catalog as `catalog-backend`, you can add 
a corresponding jar file to the classpath and load a custom Iceberg Catalog 
implementation by specifying the `catalog-backend-impl` property.
 
-### Multiple Catalog Backend Support
+### Multi-Catalog Configuration
 
 The Gravitino Iceberg REST server supports multiple catalog backend, and you 
could use `catalog-config-provider` to control the behavior about how to manage 
catalog backend configurations.
 
@@ -266,7 +301,7 @@ gravitino.iceberg-rest.gravitino-metalake = test
 
 Suppose there are two Iceberg catalogs `hive_catalog` and `jdbc_catalog` in 
Gravitino server, `dynamic-config-provider` will poll the catalog properties 
internally and register `hive_catalog` and `jdbc_catalog` in Iceberg REST 
server side. Dynamic config provider will get all catalog properties, for the 
properties that start with `gravitino.bypass.` prefix, it will remove the 
prefix and use the rest part as the catalog property key.
 
-#### Access the Specific Catalog
+#### Client Catalog Selection
 
 Access different catalogs by setting the `warehouse` to the specific catalog 
name in the Iceberg REST client configuration. The default catalog will be used 
if you do not specify a `warehouse`. For instance, suppose there are three 
catalog backends: default catalog, `hive_catalog` and `jdbc_catalog`, consider 
the case of SparkSQL:
 
@@ -288,7 +323,7 @@ Access different catalogs by setting the `warehouse` to the 
specific catalog nam
 
 In the Spark SQL side, you could use `default_rest_catalog` to access the 
default catalog backend, and use `hive_backend_rest_catalog` and 
`jdbc_backend_rest_catalog` to access the `hive_backend` and `jdbc_backend` 
catalog backend respectively.
 
-### Security
+### Security and Access Control
 
 #### OAuth2
 
@@ -345,7 +380,7 @@ Please refer the following configuration If you are using 
Spark to access Iceber
 --conf 
spark.sql.catalog.rest.oauth2-server-uri=http://localhost:8177/oauth2/token
 ```
 
-##### OAuth 2.0 token refresh for Iceberg REST clients
+##### OAuth 2.0 Token Refresh for Iceberg REST Clients
 
 OAuth 2.0 token refresh challenges may arise in certain query engines when 
accessing the Gravitino Iceberg REST Catalog (IRC).
 These are often linked to identity providers without full token exchange 
support, or to authentication models in which child sessions inherit the 
expiration policies of their parent sessions.
@@ -356,7 +391,7 @@ The following Apache Iceberg change is relevant to this 
behavior:
 
|-----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
 | Iceberg 1.11.0+ | Supports disabling token exchange, renewing tokens with 
client credentials, and ensuring that child `AuthSession` instances use their 
own expiration instead of inheriting the parent session expiration. |
 
-###### Apache Iceberg OAuth 2.0 configuration
+**Apache Iceberg OAuth 2.0 configuration**
 
 **Spark**
 
@@ -404,13 +439,13 @@ The detailed configuration items are as follows:
 | `gravitino.iceberg-rest.authentication.kerberos.check-interval-sec`       | 
The check interval of Kerberos credential for Iceberg catalog.                  
                                                                                
                                                                                
       | 60            | No                                                     
                                                                                
               [...]
 | `gravitino.iceberg-rest.authentication.kerberos.keytab-fetch-timeout-sec` | 
The fetch timeout of retrieving Kerberos keytab from 
`authentication.kerberos.keytab-uri`.                                           
                                                                                
                                  | 60            | No                          
                                                                                
                                          [...]
 
-### Credential Vending
+#### Credential Vending
 
 Refer to [Credential vending](./security/credential-vending.md) for more 
details.
 
-### Access Control
+#### Access Control
 
-#### Prerequisites
+##### Prerequisites
 
 To use access control with the Iceberg REST service:
 
@@ -426,7 +461,7 @@ When running as an auxiliary service, the 
`gravitino.iceberg-rest.gravitino-uri`
 
 Refer to [Access Control](./security/access-control.md) for details on how to 
configure authorization, create roles, and grant privileges in Gravitino.
 
-#### Access Control Flow
+##### Access Control Flow
 
 When access control is enabled:
 
@@ -482,7 +517,7 @@ For other Iceberg OSS properties not managed by Gravitino 
like `client.security-
 
 Refer to [OSS credentials](./security/credential-vending.md#oss-credentials) 
for credential related configurations.
 
-Download the [Gravitino Iceberg Aliyun bundle 
jar](https://mvnrepository.com/artifact/org.apache.gravitino/gravitino-iceberg-aliyun-bundle)
 and place it in the classpath of the Iceberg REST server. For classpath 
details, refer to [server management](#server-management).
+Download the [Gravitino Iceberg Aliyun bundle 
jar](https://mvnrepository.com/artifact/org.apache.gravitino/gravitino-iceberg-aliyun-bundle)
 and place it in the classpath of the Iceberg REST server. For classpath 
details, see [Package Layout](#package-layout).
 
 :::info
 Please set the `gravitino.iceberg-rest.warehouse` parameter to 
`oss://{bucket_name}/${prefix_name}`.
@@ -544,7 +579,9 @@ To pass custom properties such as `security-token` to your 
custom `FileIO`, conf
 Please set the `gravitino.iceberg-rest.warehouse` parameter to 
`{storage_prefix}://{bucket_name}/${prefix_name}`. Additionally, download 
corresponding jars in the classpath of Iceberg REST server, 
`iceberg-rest-server/libs` for the auxiliary server, `libs` for the standalone 
server.
 :::
 
-### Views
+### Feature Configuration
+
+#### Views
 
 View operations are supported when using the JDBC catalog backend with schema 
version `V1`. The default schema version is now `V1`, so view support is 
enabled out of the box. Iceberg will automatically migrate the database schema 
on the first restart and detect the migration on all subsequent restarts.
 
@@ -552,7 +589,7 @@ View operations are supported when using the JDBC catalog 
backend with schema ve
 
|----------------------------------------------|----------------------------------------------------------------------------------------------------------------------|---------------|----------|---------------|
 | `gravitino.iceberg-rest.jdbc-schema-version` | The schema version of the 
JDBC catalog backend. Defaults to `V1` to enable view operations. Set to `V0` 
to opt out.  | `V1`          | No       | 1.2.0         |
 
-### Other Iceberg Catalog Properties
+#### Additional Iceberg Catalog Properties
 
 Add other properties defined in [Iceberg catalog 
properties](https://iceberg.apache.org/docs/1.10.0/configuration/#catalog-properties).
 The `clients` property for example:
@@ -565,15 +602,15 @@ The `clients` property for example:
 `catalog-impl` has no effect.
 :::
 
-### Event Listener
+#### Event Listeners
 
 Gravitino generates pre-event and post-event for table operations and provide 
a pluggable event listener to allow you to inject custom logic. For more 
details, refer to [Event listener 
configuration](gravitino-server-config.md#event-listener-configuration).
 
-### Audit Log
+#### Audit Logging
 
 Gravitino provides a pluggable audit log mechanism, refer to [Audit log 
configuration](gravitino-server-config.md#audit-log-configuration).
 
-### Apache Iceberg Metrics Store Configuration
+#### Metrics Store
 
 Gravitino provides a pluggable metrics store interface to store and delete 
Iceberg metrics. Develop a class that implements 
`org.apache.gravitino.iceberg.service.metrics.IcebergMetricsStore` and add the 
corresponding jar file to the Iceberg REST service classpath directory.
 
@@ -594,7 +631,7 @@ Download the corresponding JDBC driver to the 
`iceberg-rest-server/libs` directo
 | `gravitino.iceberg-rest.jdbc-metrics.jdbc-password` | The password of the 
JDBC connection.                                                                
                                                | (none)        | No       | 
1.1.0         |
 | `gravitino.iceberg-rest.jdbc-metrics.jdbc-driver`   | 
`com.mysql.jdbc.Driver` or `com.mysql.cj.jdbc.Driver` for MySQL, 
`org.postgresql.Driver` for PostgreSQL.                                         
   | (none)        | Yes      | 1.1.0         |
 
-### Iceberg Table Metadata Cache Configuration
+#### Table Metadata Cache
 
 Gravitino features a pluggable cache system for updating or retrieving table 
metadata in the cache. It validates the location of table metadata against the 
catalog backend to ensure the correctness of cached data.
 
@@ -606,7 +643,7 @@ Gravitino features a pluggable cache system for updating or 
retrieving table met
 
 Gravitino provides the build-in 
`org.apache.gravitino.iceberg.common.cache.LocalTableMetadataCache` to store 
the cached data in the memory. You could also implement your custom table 
metadata cache by implementing the 
`org.apache.gravitino.iceberg.common.cache.TableMetadataCache` interface.
 
-### Iceberg Scan Plan Cache Configuration
+#### Scan Plan Cache
 
 Gravitino caches scan plan results to speed up repeated queries with identical 
parameters. The cache uses snapshot ID as part of the cache key, so queries 
against different snapshots will not use stale cached data.
 
@@ -622,15 +659,17 @@ The scan plan cache uses snapshot ID as part of the cache 
key, ensuring automati
 
 Gravitino provides the built-in 
`org.apache.gravitino.iceberg.service.cache.LocalScanPlanCache` to store the 
cached data in memory. Also implement your custom scan plan cache by 
implementing the `org.apache.gravitino.iceberg.service.cache.ScanPlanCache` 
interface.
 
-### Misc Configurations
+#### Extension Packages
 
 | Configuration item                          | Description                    
                              | Default value | Required | Since Version    |
 
|---------------------------------------------|--------------------------------------------------------------|---------------|----------|------------------|
 | `gravitino.iceberg-rest.extension-packages` | Comma-separated list of 
Iceberg REST API packages to expand. | (none)        | No       | 
0.7.0-incubating |
 
-### Health Check Endpoints
+### Operations
 
-The Iceberg REST server exposes three health check endpoints following the 
same [MicroProfile 
Health](https://microprofile.io/project/eclipse/microprofile-health) semantics 
as the main Gravitino server. All endpoints are exempt from authentication. The 
readiness probe checks whether the `IcebergCatalogWrapperManager` has been 
initialized — it performs no I/O and has no configurable timeout.
+#### Health Check Endpoints
+
+The Iceberg REST server exposes three health check endpoints following the 
same [MicroProfile 
Health](https://microprofile.io/project/eclipse/microprofile-health) semantics 
as the main Gravitino server. All endpoints are exempt from authentication. The 
readiness probe checks whether the `IcebergCatalogWrapperManager` has been 
initialized. It performs no I/O and has no configurable timeout.
 
 | Endpoint                     | Description                                   
                                                                             | 
HTTP status |
 
|------------------------------|----------------------------------------------------------------------------------------------------------------------------|-------------|
@@ -677,7 +716,7 @@ Unhealthy response (HTTP 503):
 }
 ```
 
-### Memory Settings
+#### Memory Settings
 
 The Iceberg REST server uses `GRAVITINO_MEM` for JVM heap/metaspace flags. 
Default: `-Xms1024m -Xmx1024m -XX:MaxMetaspaceSize=512m`. Launch scripts append 
`GRAVITINO_MEM` to `JAVA_OPTS`; set it to adjust heap/metaspace sizes.
 Example tuning:
@@ -685,37 +724,48 @@ Example tuning:
 - Medium workloads: `GRAVITINO_MEM="-Xms4g -Xmx4g -XX:MaxMetaspaceSize=1g"`
 - Higher concurrency or catalog counts: increase heap and metaspace 
accordingly.
 
-## Start the Iceberg REST Server
+## Service Startup and Verification
+
+### Auxiliary Service
 
-To start as an auxiliary service with Gravitino server:
+Start the Iceberg REST service as an auxiliary service in the Gravitino server:
 
 ```shell
-./bin/gravitino.sh start 
+./bin/gravitino.sh start
 ```
 
-To start a standalone Gravitino Iceberg REST catalog server:
+### Standalone Server
+
+Start the standalone Iceberg REST server:
 
 ```shell
 ./bin/gravitino-iceberg-rest-server.sh start
 ```
 
-To verify whether the service has started:
+### Service Verification
+
+Verify that the service is running:
 
 ```shell
-curl  http://127.0.0.1:9001/iceberg/v1/config
+curl http://127.0.0.1:9001/iceberg/v1/config
 ```
 
-Normally you will see the output like `{"defaults":{},"overrides":{}, 
"endpoints":["GET /v1/{prefix}/namespaces", ...]}%`.
+Example response: `{"defaults":{},"overrides":{}, "endpoints":["GET 
/v1/{prefix}/namespaces", ...]}%`.
+
+## Docker
 
-## Docker Instructions
+### Container Startup
 
-Run the Gravitino Iceberg REST server in a Docker container:
+Run the Iceberg REST server in a Docker container:
 
 ```shell
 docker run -d -p 9001:9001 apache/gravitino-iceberg-rest:latest
 ```
 
-Gravitino Iceberg REST server in the Docker image could access local storage 
by default, you could set the following environment variables if the storage is 
cloud/remote storage like S3, refer to [storage section](#storage) for more 
details.
+### Environment Variables
+
+The Docker image supports local storage by default.
+For cloud or remote storage, configure the corresponding [storage](#storage) 
settings through these environment variables:
 
 | Environment Variable                                           | 
Configuration items                                        | Since version |
 
|----------------------------------------------------------------|------------------------------------------------------------|---------------|
@@ -752,28 +802,41 @@ Gravitino Iceberg REST server in the Docker image could 
access local storage by
 | `GRAVITINO_ICEBERG_REST_OSS_ROLE_ARN`                          | 
`gravitino.iceberg-rest.oss-role-arn`                      | 1.3.0         |
 | `GRAVITINO_ICEBERG_REST_OSS_EXTERNAL_ID`                       | 
`gravitino.iceberg-rest.oss-external-id`                   | 1.3.0         |
 
-The below environment is deprecated; use the corresponding configuration items 
instead.
+### Deprecated Environment Variables
+
+Use the replacement environment variables instead of these deprecated names.
 
 | Deprecated Environment variables                         | New environment 
variables                            | Since version    | Deprecated version |
 
|----------------------------------------------------------|------------------------------------------------------|------------------|--------------------|
 | `GRAVITINO_CREDENTIAL_PROVIDER_TYPE`                     | 
`GRAVITINO_ICEBERG_REST_CREDENTIAL_PROVIDERS`        | 0.7.0-incubating | 
0.8.0-incubating   |
 | `GRAVITINO_GCS_CREDENTIAL_FILE_PATH`                     | 
`GRAVITINO_ICEBERG_REST_GCS_SERVICE_ACCOUNT_FILE`    | 0.7.0-incubating | 
0.8.0-incubating   |
 
-Or build it manually to add custom configuration or logics:
+### Custom Image Build
+
+Build a custom image to add configuration or logic:
 
 ```shell
 sh ./dev/docker/build-docker.sh --platform linux/arm64 --type 
iceberg-rest-server --image apache/gravitino-iceberg-rest --tag $tag
 ```
 
-You could try Spark with Gravitino REST catalog service in our 
[playground](./how-to-use-the-playground.md#apache-iceberg-rest-service).
+### Playground
+
+Try Spark with the Gravitino Iceberg REST catalog service in the 
[playground](./how-to-use-the-playground.md#apache-iceberg-rest-service).
 
-## Enable Access Control
+## Access Control Tutorial
 
-To enable access control for the Iceberg REST server using Gravitino's dynamic 
configuration provider, follow these steps:
+Enable access control for the Iceberg REST server with Gravitino's dynamic 
configuration provider.
 
-### Step 1: Enable Authorization and Dynamic Config Provider
+:::note
+Access control requires the Iceberg REST server to run as an auxiliary service 
in the Gravitino server.
+Standalone deployments do not support Iceberg REST catalog authorization.
+:::
+
+Complete these steps:
 
-Add the following to your Gravitino server configuration file 
(`gravitino.conf`). 
+### Step 1: Enable Authorization and the Dynamic Configuration Provider
+
+Add the following to your Gravitino server configuration file 
(`gravitino.conf`).
 Note that access control is only supported when running the Iceberg REST 
server as an auxiliary service within the Gravitino server:
 
 ```properties
@@ -788,8 +851,6 @@ gravitino.iceberg-rest.gravitino-metalake = test
 
 Restart the Iceberg REST server after updating the configuration.
 
----
-
 ### Step 2: Create a Metalake
 
 ```shell
@@ -799,8 +860,6 @@ curl -X POST -H "Accept: application/vnd.gravitino.v1+json" 
\
 }' http://localhost:8090/api/metalakes
 ```
 
----
-
 ### Step 3: Create a Catalog
 
 ```shell
@@ -813,8 +872,6 @@ curl -X POST -H "Accept: application/vnd.gravitino.v1+json" 
\
 }' http://localhost:8090/api/metalakes/test/catalogs
 ```
 
----
-
 ### Step 4: Create a Role and Grant Privileges
 
 ```shell
@@ -845,9 +902,7 @@ curl -X POST -H "Accept: application/vnd.gravitino.v1+json" 
\
 }' http://localhost:8090/api/metalakes/test/roles
 ```
 
----
-
-#### Verify Access Is Denied Without Privileges
+### Step 5: Verify Denied Access
 
 Before granting any privileges, verify that the user cannot access the 
catalog. Try to list tables as `user1` (replace with your actual authentication 
method):
 
@@ -858,9 +913,7 @@ curl -u user1:password -H "Accept: 
application/vnd.gravitino.v1+json" \
 
 This should return an error indicating insufficient privileges (such as HTTP 
403 Forbidden).
 
----
-
-#### Grant Role to User
+### Step 6: Grant the Role to a User
 
 Now grant the role with privileges to the user:
 
@@ -871,9 +924,7 @@ curl -X PUT -H "Accept: application/vnd.gravitino.v1+json" \
 }' http://localhost:8090/api/metalakes/test/permissions/users/user1/grant
 ```
 
----
-
-#### Verify Access Is Granted with Privileges
+### Step 7: Verify Granted Access
 
 After granting the role with privileges, repeat the request as `user1`:
 
@@ -884,17 +935,12 @@ curl -u user1:password -H "Accept: 
application/vnd.gravitino.v1+json" \
 
 This time, the request should succeed and return the list of tables.
 
----
+### Summary
 
-**Summary:**
-- Enable authorization and set configuration provider to 
`dynamic-config-provider`
-- Create metalake
-- Create catalog
-- Create role and grant privileges
-- Assign role to user
+- Enable authorization and set the configuration provider to 
`dynamic-config-provider`.
+- Create a metalake.
+- Create a catalog.
+- Create a role and grant privileges.
+- Assign the role to a user.
 
 For more details, see the [Access Control 
documentation](./security/access-control.md).
-
-> **Note:** IRC (Iceberg REST Catalog) authorization is not supported for 
standalone Iceberg REST server deployments.
-> Access control features described here require the Iceberg REST server to be 
run as an auxiliary service within the Gravitino server,
-> using the dynamic configuration provider. Standalone deployments do not 
support IRC-based authorization.
diff --git a/docs/lakehouse-iceberg-catalog.md 
b/docs/lakehouse-iceberg-catalog.md
index 1ca30280fc..09d1332fd9 100644
--- a/docs/lakehouse-iceberg-catalog.md
+++ b/docs/lakehouse-iceberg-catalog.md
@@ -101,7 +101,7 @@ curl -X POST -H "Accept: application/vnd.gravitino.v1+json" 
\
 }' http://localhost:8090/api/metalakes/metalake/catalogs
 ```
 
-To access a non-default catalog, set `warehouse` to the catalog name. This 
uses a REST path like 
`http://127.0.0.1:9001/iceberg/v1/catalog/namespaces/db/tables/table`. See 
[Multi catalog](./iceberg-rest-service.md#multiple-catalog-backend-support) for 
details.
+To access a non-default catalog, set `warehouse` to the catalog name. This 
uses a REST path like 
`http://127.0.0.1:9001/iceberg/v1/catalog/namespaces/db/tables/table`. See 
[Multi-Catalog 
Configuration](./iceberg-rest-service.md#multi-catalog-configuration) for 
details.
 
 #### S3
 
diff --git a/docs/security/credential-vending.md 
b/docs/security/credential-vending.md
index ebea691bd6..4c7769c226 100644
--- a/docs/security/credential-vending.md
+++ b/docs/security/credential-vending.md
@@ -181,7 +181,7 @@ Since Gravitino 1.1.0, the above Gravitino Iceberg cloud 
bundle jars have alread
 
 The classpath of the server:
 
-- Iceberg REST server: the classpath differs in different deploy mode, refer 
to [Server management](../iceberg-rest-service.md#server-management) part.
+- Iceberg REST server: the classpath differs by deployment mode; see the 
[Deployment](../iceberg-rest-service.md#deployment) section.
 - Fileset catalog: `catalogs/fileset/libs/`
 
 ## Example

Reply via email to