diff --git a/confluence-mdx/var/pages.qm.yaml b/confluence-mdx/var/pages.qm.yaml index 86ea35ed1..28e7460c9 100644 --- a/confluence-mdx/var/pages.qm.yaml +++ b/confluence-mdx/var/pages.qm.yaml @@ -1829,6 +1829,66 @@ - "databases" - "connection-management" - "kerberos-configurations" +- "page_id": "2010153049" + "title": "Custom JDBC Configs" + "title_orig": "Custom JDBC Configs" + "breadcrumbs": + - "관리자 매뉴얼" + - "Databases" + - "Connection Management" + - "Custom JDBC Configs" + "breadcrumbs_en": + - "Administrator Manual" + - "Databases" + - "Connection Management" + - "Custom JDBC Configs" + "path": + - "administrator-manual" + - "databases" + - "connection-management" + - "custom-jdbc-configs" +- "page_id": "2010120237" + "title": "QSI Parser Selection" + "title_orig": "QSI Parser Selection" + "breadcrumbs": + - "관리자 매뉴얼" + - "Databases" + - "Connection Management" + - "Custom JDBC Configs" + - "QSI Parser Selection" + "breadcrumbs_en": + - "Administrator Manual" + - "Databases" + - "Connection Management" + - "Custom JDBC Configs" + - "QSI Parser Selection" + "path": + - "administrator-manual" + - "databases" + - "connection-management" + - "custom-jdbc-configs" + - "qsi-parser-selection" +- "page_id": "2010153057" + "title": "Custom JDBC Configs - Databricks 예시" + "title_orig": "Custom JDBC Configs - Databricks 예시" + "breadcrumbs": + - "관리자 매뉴얼" + - "Databases" + - "Connection Management" + - "Custom JDBC Configs" + - "Custom JDBC Configs - Databricks 예시" + "breadcrumbs_en": + - "Administrator Manual" + - "Databases" + - "Connection Management" + - "Custom JDBC Configs" + - "Custom JDBC Configs - Databricks Example" + "path": + - "administrator-manual" + - "databases" + - "connection-management" + - "custom-jdbc-configs" + - "custom-jdbc-configs-databricks-example" - "page_id": "544380126" "title": "DB Access Control" "title_orig": "DB Access Control​" @@ -1985,6 +2045,24 @@ - "databases" - "policies" - "policy-exception" +- "page_id": "2010153040" + "title": "Query Rules" + "title_orig": "Query Rules" + "breadcrumbs": + - "관리자 매뉴얼" + - "Databases" + - "Policies" + - "Query Rules" + "breadcrumbs_en": + - "Administrator Manual" + - "Databases" + - "Policies" + - "Query Rules" + "path": + - "administrator-manual" + - "databases" + - "policies" + - "query-rules" - "page_id": "571277577" "title": "Ledger Management" "title_orig": "Ledger Management" @@ -4124,18 +4202,6 @@ - "Release Notes" "path": - "release-notes" -- "page_id": "1924891357" - "title": "11.6.0" - "title_orig": "11.6.0" - "breadcrumbs": - - "Release Notes" - - "11.6.0" - "breadcrumbs_en": - - "Release Notes" - - "11.6.0" - "path": - - "release-notes" - - "11.6.0" - "page_id": "1751810049" "title": "11.5.0 ~ 11.5.4" "title_orig": "11.5.0 ~ 11.5.4" @@ -4754,21 +4820,21 @@ "path": - "installation" - "querypie-acp-community-edition" -- "page_id": "1735589937" - "title": "MCP 설정 가이드" - "title_orig": "MCP 설정 가이드" +- "page_id": "1805516819" + "title": "QueryPie ACP Community Edition 초기 구성 가이드" + "title_orig": "QueryPie ACP Community Edition 초기 구성 가이드" "breadcrumbs": - "제품 설치" - "QueryPie ACP Community Edition" - - "MCP 설정 가이드" + - "QueryPie ACP Community Edition 초기 구성 가이드" "breadcrumbs_en": - "Installation" - "QueryPie ACP Community Edition" - - "MCP Configuration Guide" + - "QueryPie ACP Community Edition Initial Configuration Guide" "path": - "installation" - "querypie-acp-community-edition" - - "mcp-configuration-guide" + - "querypie-acp-community-edition-initial-configuration-guide" - "page_id": "1990000673" "title": "QueryPie ACP Community Edition 업그레이드 방법" "title_orig": "QueryPie ACP Community Edition 업그레이드 방법" @@ -4799,6 +4865,21 @@ - "installation" - "querypie-acp-community-edition" - "how-to-remove-querypie-acp-community-edition" +- "page_id": "1735589937" + "title": "MCP 설정 가이드" + "title_orig": "MCP 설정 가이드" + "breadcrumbs": + - "제품 설치" + - "QueryPie ACP Community Edition" + - "MCP 설정 가이드" + "breadcrumbs_en": + - "Installation" + - "QueryPie ACP Community Edition" + - "MCP Configuration Guide" + "path": + - "installation" + - "querypie-acp-community-edition" + - "mcp-configuration-guide" - "page_id": "1844969501" "title": "지원" "title_orig": "지원" @@ -4853,6 +4934,18 @@ - "Unreleased" "path": - "unreleased" +- "page_id": "1924891357" + "title": "11.6.0" + "title_orig": "11.6.0" + "breadcrumbs": + - "Unreleased" + - "11.6.0" + "breadcrumbs_en": + - "Unreleased" + - "11.6.0" + "path": + - "unreleased" + - "11.6.0" - "page_id": "1911652402" "title": "Reverse Sync Test Page" "title_orig": "Reverse Sync Test Page" diff --git a/public/administrator-manual/databases/policies/query-rules/database-settings_policies_query-rules.png b/public/administrator-manual/databases/policies/query-rules/database-settings_policies_query-rules.png new file mode 100644 index 000000000..a009de03c Binary files /dev/null and b/public/administrator-manual/databases/policies/query-rules/database-settings_policies_query-rules.png differ diff --git a/public/installation/querypie-acp-community-edition/querypie-acp-community-edition-initial-configuration-guide/Screenshot-2026-03-17-at-11.10.46-PM.png b/public/installation/querypie-acp-community-edition/querypie-acp-community-edition-initial-configuration-guide/Screenshot-2026-03-17-at-11.10.46-PM.png new file mode 100644 index 000000000..5b597296a Binary files /dev/null and b/public/installation/querypie-acp-community-edition/querypie-acp-community-edition-initial-configuration-guide/Screenshot-2026-03-17-at-11.10.46-PM.png differ diff --git a/src/content/en/administrator-manual/databases/connection-management/custom-jdbc-configs/_meta.ts b/src/content/en/administrator-manual/databases/connection-management/custom-jdbc-configs/_meta.ts index 8abfd6bb5..4bec901c7 100644 --- a/src/content/en/administrator-manual/databases/connection-management/custom-jdbc-configs/_meta.ts +++ b/src/content/en/administrator-manual/databases/connection-management/custom-jdbc-configs/_meta.ts @@ -1,4 +1,4 @@ export default { 'qsi-parser-selection': 'QSI Parser Selection', - 'custom-jdbc-configs-databricks': 'Custom JDBC Configs - Databricks Example', + 'custom-jdbc-configs-databricks-example': 'Custom JDBC Configs - Databricks Example', }; diff --git a/src/content/en/administrator-manual/databases/connection-management/custom-jdbc-configs/custom-jdbc-configs-databricks-example.mdx b/src/content/en/administrator-manual/databases/connection-management/custom-jdbc-configs/custom-jdbc-configs-databricks-example.mdx new file mode 100644 index 000000000..9a88aeab5 --- /dev/null +++ b/src/content/en/administrator-manual/databases/connection-management/custom-jdbc-configs/custom-jdbc-configs-databricks-example.mdx @@ -0,0 +1,63 @@ +--- +title: 'Custom JDBC Configs - Databricks Example' +confluenceUrl: 'https://querypie.atlassian.net/wiki/spaces/QM/pages/2010153057/Custom+JDBC+Configs+-+Databricks' +--- + +import { Callout } from 'nextra/components' + +# Custom JDBC Configs - Databricks Example + +### Overview + +Starting from QueryPie ACP 11.6.0, the Custom JDBC Configs feature allows administrators to register a JDBC Driver and create a Databricks connection with policies applied.
The query parser (QSI) supported by QueryPie ACP for Databricks is ANSI query, so Databricks-specific syntax may not work correctly. + + +This feature is provided as **Beta**. +To use it, you must set the **Custom JDBC Configuration** option to `Enable` in the Experimental section on the `Admin > Databases > General > Configurations` page. +After activation, the `Admin > Databases > Connection Management > Custom JDBC Configs` menu will appear. + + +### Registering Databricks as a Custom JDBC Vendor + +1. Navigate to `Admin > Databases > Connection Management > Custom JDBC Configs`. +2. Click the `Create Custom JDBC` button in the upper right corner. +3. Enter an identifiable name in the Name field. This name will be displayed in the Custom JDBC Vendors section when creating a DB connection. +4. Enter any additional information in the Description field. +5. Enter the Databricks driver class in the `Driver Class` field of the JDBC Configuration section. (For Databricks: `com.databricks.client.jdbc.Driver`)
In general, the Driver Class can be verified with the following command: + ``` + unzip -p META-INF/services/java.sql.Driver + ``` +6. Enter `jdbc:databricks://{host}:{port}/default` in the JDBC URL Template. +7. Enter `/` in the Options Prefix. +8. Enter `443` in the Default Port. +9. Enter `--add-opens=java.base/java.nio=ALL-UNNAMED` in the JVM Arguments. +10. Click the `Select JAR file to upload` button in the Driver JAR File section and upload the JDBC Driver.
Databricks: [JDBC Driver Download](https://www.databricks.com/spark/jdbc-drivers-download) +11. Click the `Save` button to save the configuration. + +### Creating a Databricks Connection with a Custom Vendor + +1. Navigate to `Admin > Databases > Connection Management > DB Connections`. +2. Click the `Create Connection` button in the upper right corner. +3. Scroll down and select the Databricks entry you registered earlier (the item entered as `Name` when creating the Custom JDBC) from the **Custom JDBC Vendors** section. +4. Enter the connection information such as **Connection Name**, **Host**, **Port**, etc. + 1. Host: Copy and paste the server hostname value obtained from Databricks. + 2. Port: Use the default value of 443 specified in the Custom Vendor. + 3. Database Name: Leave it empty or enter the name corresponding to a Databricks Catalog (refer to the **Structure Mapping Comparison** table below). Leaving it empty is recommended since this specifies the default path. + 4. Username: Since Databricks uses tokens, leave the Username empty. + 5. Password: Enter the token value issued from Settings (User Settings) > Developer > Access tokens in the Databricks console. When generating the token, specify the token scope as sql, workspace, catalog. + 6. Other Options: Copy and paste the portion after default; from the JDBC URL field found in the connection details of the Databricks console. +5. Select a **QSI Parser** if needed. Select the default `ANSI SQL`. +6. Click the `Next` button to proceed to the connection creation complete screen. + +#### Structure Mapping Comparison + +| **Databricks** | **QueryPie ACP** | +| -------------- | ---------------- | +| Catalog | Database | +| Schema | Schema | +| Table | Table | +| Column | Column | + + +Only Custom JDBC Vendors with `Active` status are displayed in the `Custom JDBC Vendors` section. + diff --git a/src/content/en/administrator-manual/databases/policies/_meta.ts b/src/content/en/administrator-manual/databases/policies/_meta.ts index 53a78be92..76d0975ad 100644 --- a/src/content/en/administrator-manual/databases/policies/_meta.ts +++ b/src/content/en/administrator-manual/databases/policies/_meta.ts @@ -4,4 +4,5 @@ export default { 'data-masking': 'Data Masking', 'sensitive-data': 'Sensitive Data', 'policy-exception': 'Policy Exception', + 'query-rules': 'Query Rules', }; diff --git a/src/content/en/administrator-manual/databases/policies/query-rules.mdx b/src/content/en/administrator-manual/databases/policies/query-rules.mdx new file mode 100644 index 000000000..655ceac87 --- /dev/null +++ b/src/content/en/administrator-manual/databases/policies/query-rules.mdx @@ -0,0 +1,221 @@ +--- +title: 'Query Rules' +confluenceUrl: 'https://querypie.atlassian.net/wiki/spaces/QM/pages/2010153040/Query+Rules' +--- + +import { Callout } from 'nextra/components' + +# Query Rules + +### Overview + +Query Rules is a feature that allows you to set filtering rules such as allow, deny, and audit exclusion for SQL queries passing through QueryPie. + +For example, you can exclude (SKIP) heartbeat queries periodically executed by Connection Pools from Audit logs, deny (DENY) dangerous DDL queries such as `DROP TABLE`, or temporarily allow (ALLOW) queries that failed SQL parsing, among various other operational scenarios. + +When multiple rules are registered, they are evaluated in order of Priority, and the first matching rule is applied. + + +This feature is provided as **Beta**. +To use it, you must set the **Query Rules** option to `Enable` in the Experimental section on the `Admin > Databases > General > Configurations` page. +After enabling, the `Admin > Databases > Policies > Query Rules` menu will appear. + + + +Query Rules do not apply to MongoDB / DocumentDB. + + +### Creating a Query Rule + +Create a new Query Rule. + +
+database-settings_policies_query-rules.png +
+ +1. Navigate to `Admin > Databases > Policies > Query Rules`. +2. Click the `+ Add Query Rule` button in the top right. +3. Enter the information for creating a Query Rule. + * **Basic Settings** + * **Enabled** : Sets whether the rule is active. You can enable or disable it using the toggle. + * **Priority** : Specifies the rule priority as a number. Lower numbers have higher priority. The default value is 100. + * **Target Settings** + * **Target Type** : Selects the scope of targets the rule applies to. + 1. **All** : Applies to all connections. + 2. **Connection** : Applies only to specific connections. + 3. **Vendor** : Applies only to specific DB types (e.g., MySQL, PostgreSQL). + * **Input Mode** : When Target Type is Connection or Vendor, selects how to specify targets. + 1. **Select** : Directly select targets from a list. + 2. **RegExp Pattern** : Specify targets using a regular expression. For Connection, matching is performed against the Name or UUID. + * **Target Value** : Specifies the targets to apply the rule to. Multiple targets can be selected. + * **Pattern Settings** + * **Match Type** : Selects the query matching method. + 1. **Exact** : Matches when the query string is an exact match (case-insensitive, leading/trailing whitespace trimmed). + 2. **Regexp** : Matches using a regular expression pattern. Case-insensitive (`(?i)`) and DOTALL mode (`(?s)`, where `.` also matches newlines) are applied by default. + 3. **Normalized** : Matches using placeholders after normalizing SQL (removing comments, normalizing whitespace, case-insensitive). `?` matches a single value (number, string, NULL, function call), and `?...` matches one or more values (e.g., IN clauses). + * **Pattern** : Enter the SQL pattern to match. + * **Test Pattern** : You can test whether a SQL statement matches the entered Pattern. Enter the SQL and click the `Test` button. + * **Origins** : Selects the query origins the rule applies to. The default value is All. + 1. **All** : Applies to queries from all origins. + 2. **Proxy** : Applies only to queries through the proxy. + 3. **SQL Editor** : Applies only to queries executed from SQL Editor. + * **Action Settings**
**Skip Action is for Proxy only.** When Skip is selected, the Origin is automatically set to Proxy and is not supported in SQL Editor. Since it is not recorded in Audit, do not use it for sensitive queries. + * **Action** : Selects the action to apply to queries matching the rule. + 1. **Allow** : Executes the query bypassing policies (Privilege, Data Masking, etc.). It is still recorded in Audit logs. + 2. **Deny** : Rejects query execution. It is recorded in Audit logs with a Prevented status. + 3. **Skip** : Executes the query without Audit recording. All policies are skipped. + * **Error Message** : When Action is Deny, enter the error message to display to the user. + * **Allow Reason** : When Action is Allow, records the reason for allowing. It is stored in the action_comment of the Audit log. + * **Additional Information** + * **Max SQL Length** : Specifies the maximum length of SQL the rule applies to. The default value is 16,384 characters. If the SQL length exceeds this value, only this rule is skipped and evaluation proceeds to the next rule. + * **Comment** : Enter a description for the rule. +4. Click the `Create` button to save. + + +Rule changes are event-driven and are applied almost immediately in most cases. +In multi-instance environments, it may take up to 10 minutes for other instances to reflect the changes. + + +### Testing a Query Rule + +You can test in advance whether registered rules correctly match a specific SQL statement. + +1. Navigate to `Admin > Databases > Policies > Query Rules`. +2. Click the `Test` button in the top right. +3. Enter the SQL to test, and optionally select an **Origin** and **Target Type**. +4. If **Target Type** is `Connection`, select a Connection; if it is `Vendor`, select a Vendor. +5. Click the `Test with Cache` or `Test without Cache` button to see the list of matched rules and the final rule that will be applied. + + +Immediately after changing rules, you can use the `Test without Cache` button to query the latest rules directly from the DB. + + +### Viewing Query Rules + +View the list of registered Query Rules. + +1. Navigate to `Admin > Databases > Policies > Query Rules`. +2. The list of registered Query Rules is displayed. + * **ID** : The unique identifier of the Query Rule. + * **Priority** : The rule priority. + * **Enabled** : Whether the rule is active. + * **Target Type** : The scope of targets the rule applies to. + * **Pattern** : The matching pattern. + * **Action** : The action applied when matched (Allow / Deny / Skip). + * **Comment** : A description of the rule. + +### Editing a Query Rule + +Modify the settings of an existing Query Rule. + +1. Navigate to `Admin > Databases > Policies > Query Rules`. +2. Click the item to edit from the Query Rule list. +3. Modify the desired information on the detail screen. +4. Click the `Save` button to save. + +### Deleting a Query Rule + +Delete a registered Query Rule. + +1. Navigate to `Admin > Databases > Policies > Query Rules`. +2. Select the checkbox of the item to delete from the Query Rule list. Multiple items can be selected at once. +3. Click the `Delete` button that appears at the top. +4. Click `OK` in the confirmation popup. +______ + +### Usage Examples + +#### Example 1: Excluding Heartbeat Queries from Audit (SKIP) + +You can exclude `SELECT 1` queries periodically executed by Connection Pools that are unnecessarily accumulating in Audit logs. + +| **Setting** | **Value** | +| ----------- | ---------- | +| Priority | 10 | +| Target Type | All | +| Match Type | Exact | +| Pattern | `SELECT 1` | +| Origins | Proxy | +| Action | Skip | + + +Skip Action is for Proxy only. +This rule does not apply to `SELECT 1` executed from SQL Editor. + + +#### Example 2: Blocking Dangerous DDL Queries (DENY) + +Block queries that can cause data loss, such as `DROP DATABASE` and `DROP TABLE`, across all connections. + +| **Setting** | **Value** | +| ------------ | ----------------------------------- | +| Priority | 20 | +| Target Type | All | +| Match Type | RegExp | +| Pattern | `DROP\s+(DATABASE|TABLE)` | +| Origins | All | +| Action | Deny | +| Error Message | `This query has been blocked by security policy. Please contact your administrator.` | + + +Regexp matching is case-insensitive by default, so queries entered in lowercase such as `drop database` are also blocked. + + +#### Example 3: Temporarily Allowing SQL Parsing Failure Queries (ALLOW) + +Temporarily allow a specific query that is being blocked due to SQL parsing failure. +Audit logs are recorded normally. + +| **Setting** | **Value** | +| ------------ | ---------------------------------- | +| Priority | 30 | +| Target Type | Connection | +| Input Mode | Select | +| Target Value | (Select the specific Connection to allow) | +| Match Type | Normalized | +| Pattern | `SELECT * FROM users WHERE id = ?` | +| Origins | All | +| Action | Allow | +| Allow Reason | `Temporary allow for parsing failure - QPD-1234` | + +#### Example 4: Excluding Configuration Queries for a Specific DB Vendor (SKIP) + +Exclude encoding configuration queries automatically executed by MySQL Connection Pools from Audit. + +| **Setting** | **Value** | +| ------------ | ------------------- | +| Priority | 10 | +| Target Type | Vendor | +| Input Mode | Select | +| Target Value | MySQL | +| Match Type | Exact | +| Pattern | `SET NAMES utf8mb4` | +| Origins | Proxy | +| Action | Skip | + +#### Example 5: Using Priority - Allow Exception Then Block All + +When you want to allow a specific Connection while blocking all others, use Priority. + +**Rule 1 - Allow Exception** (Priority: 10) + +| **Setting** | **Value** | +| ------------ | -------------- | +| Priority | 10 | +| Target Type | Connection | +| Target Value | dev-db-001 | +| Match Type | Regexp | +| Pattern | `DROP\s+TABLE` | +| Action | Allow | + +**Rule 2 - Block All** (Priority: 20) + +| **Setting** | **Value** | +| ----------- | -------------- | +| Priority | 20 | +| Target Type | All | +| Match Type | Regexp | +| Pattern | `DROP\s+TABLE` | +| Action | Deny | + +Rule 1, which has the lower Priority number, is evaluated first, so `DROP TABLE` on `dev-db-001` is allowed, while it is blocked on all other Connections by Rule 2. diff --git a/src/content/en/installation/product-versions.mdx b/src/content/en/installation/product-versions.mdx index f70cdff37..f66561397 100644 --- a/src/content/en/installation/product-versions.mdx +++ b/src/content/en/installation/product-versions.mdx @@ -11,18 +11,21 @@ This page provides information about official releases of QueryPie ACP. These are the official QueryPie ACP releases currently available for installation and operation. -| **Version** | **Build Tag** | **Release Note** | **Release Date** | **Status** | -| ------------- | ---------------- | ------------------------------------------------- | ------------------ | ------------ | -| 11.6.0 | `11.6.0-886d8e8` | [11.6.0](../release-notes/11.6.0) | Feb 13, 2026 | Active | -| 11.5.1 | `11.5.1-e0fc574` | | Jan 23, 2026 | Outdated | -| 11.5.0 | `11.5.0-dce9f84` | [11.5.0](../release-notes/11.5.0-11.5.4) | Dec 16, 2025 | Deprecated | -| 11.3.5 | `11.3.5-099bd6b` | | Nov 27, 2025 | Outdated | -| 11.3.0 | `11.3.0-559d539` | [11.3.0](../release-notes/11.3.0) | Sep 26, 2025 | Deprecated | -| 11.1.2 | `11.1.2-1eaa817` | [11.1.0 ~ 11.1.2](../release-notes/11.1.0-11.1.2) | Aug 19, 2025 | Outdated | +| **Version** | **Build Tag** | **Release Note** | **Release Date** | **Status** | +| ----------- | ---------------- | --------------------------------------------------------------------- | ---------------- | ---------------------------- | +| 11.6.1 | `11.6.1-44ad3a9` | | Mar 20, 2026 | Ready for Community Edition | +| 11.6.0 | `11.6.0-886d8e8` | [Link](https://github.com/querypie/querypie-community/discussions/11) | Feb 13, 2026 | Outdated | +| 11.5.4 | `11.5.4-702dd33` | [11.5.0 ~ 11.5.4](../release-notes/11.5.0-11.5.4) | Mar 20, 2026 | Ready for Enterprise Edition | +| 11.5.1 | `11.5.1-e0fc574` | [11.5.0 ~ 11.5.4](../release-notes/11.5.0-11.5.4) | Jan 23, 2026 | Outdated | +| 11.5.0 | `11.5.0-dce9f84` | [11.5.0 ~ 11.5.4](../release-notes/11.5.0-11.5.4) | Dec 16, 2025 | Deprecated | +| 11.3.5 | `11.3.5-099bd6b` | | Nov 27, 2025 | Outdated | +| 11.3.0 | `11.3.0-559d539` | [11.3.0](../release-notes/11.3.0) | Sep 26, 2025 | Deprecated | +| 11.1.2 | `11.1.2-1eaa817` | [11.1.0 ~ 11.1.2](../release-notes/11.1.0-11.1.2) | Aug 19, 2025 | Outdated | #### Status -* Active: Recommended for new installations and upgrades. +* Ready for Community Edition: Recommended for Community Edition users. +* Ready for Enterprise Edition: Recommended for Enterprise Edition users. * Outdated: A previous version that has been superseded by a newer release. Provided for reference only. * Deprecated: Maintained for existing environment compatibility. Not recommended for new installations and may be discontinued in the future. @@ -53,3 +56,6 @@ Please contact your technical support partner to obtain the username and passwor Community / Standard / Enterprise Editions all use the same container image. There are no functional differences based on registry selection. +New and experimental features are added quickly to Community Edition. +For Enterprise Edition, recommended versions are set conservatively to provide a more stable product and smoother technical support. + diff --git a/src/content/en/installation/querypie-acp-community-edition/_meta.ts b/src/content/en/installation/querypie-acp-community-edition/_meta.ts index f93ed21c4..0a30e55b4 100644 --- a/src/content/en/installation/querypie-acp-community-edition/_meta.ts +++ b/src/content/en/installation/querypie-acp-community-edition/_meta.ts @@ -1,5 +1,6 @@ export default { - 'mcp-configuration-guide': 'MCP Configuration Guide', + 'querypie-acp-community-edition-initial-configuration-guide': 'QueryPie ACP Community Edition Initial Configuration Guide', 'how-to-upgrade-querypie-acp-community-edition': 'How to Upgrade QueryPie ACP Community Edition', 'how-to-remove-querypie-acp-community-edition': 'How to Remove QueryPie ACP Community Edition', + 'mcp-configuration-guide': 'MCP Configuration Guide', }; diff --git a/src/content/en/installation/querypie-acp-community-edition/querypie-acp-community-edition-initial-configuration-guide.mdx b/src/content/en/installation/querypie-acp-community-edition/querypie-acp-community-edition-initial-configuration-guide.mdx index 10c4f45ef..8d3fc5b9d 100644 --- a/src/content/en/installation/querypie-acp-community-edition/querypie-acp-community-edition-initial-configuration-guide.mdx +++ b/src/content/en/installation/querypie-acp-community-edition/querypie-acp-community-edition-initial-configuration-guide.mdx @@ -33,7 +33,7 @@ This URL must not end with `/`. Be careful not to add `/` at the end of the URL, For Community Edition, the default port is 8000, so please include the port as well.
-Web Base URL +Web Base URL
Web Base URL
diff --git a/src/content/en/release-notes/_meta.ts b/src/content/en/release-notes/_meta.ts index 5ce3fc87f..fcd7a013c 100644 --- a/src/content/en/release-notes/_meta.ts +++ b/src/content/en/release-notes/_meta.ts @@ -1,5 +1,4 @@ export default { - '11.6.0': '11.6.0', '11.5.0-11.5.4': '11.5.0 ~ 11.5.4', '11.4.0': '11.4.0', '11.3.0': '11.3.0', diff --git a/src/content/en/release-notes/11.6.0.mdx b/src/content/en/unreleased/11.6.0.mdx similarity index 100% rename from src/content/en/release-notes/11.6.0.mdx rename to src/content/en/unreleased/11.6.0.mdx diff --git a/src/content/en/unreleased/_meta.ts b/src/content/en/unreleased/_meta.ts index 441b01317..424950872 100644 --- a/src/content/en/unreleased/_meta.ts +++ b/src/content/en/unreleased/_meta.ts @@ -1,3 +1,4 @@ export default { + '11.6.0': '11.6.0', 'reverse-sync-test-page': 'Reverse Sync Test Page', }; diff --git a/src/content/ja/administrator-manual/databases/connection-management/custom-jdbc-configs/_meta.ts b/src/content/ja/administrator-manual/databases/connection-management/custom-jdbc-configs/_meta.ts index 96b532731..d3b7810c0 100644 --- a/src/content/ja/administrator-manual/databases/connection-management/custom-jdbc-configs/_meta.ts +++ b/src/content/ja/administrator-manual/databases/connection-management/custom-jdbc-configs/_meta.ts @@ -1,4 +1,4 @@ export default { 'qsi-parser-selection': 'QSI Parser Selection', - 'custom-jdbc-configs-databricks': 'Custom JDBC Configs - Databricks例', + 'custom-jdbc-configs-databricks-example': 'Custom JDBC Configs - Databricks例', }; diff --git a/src/content/ja/administrator-manual/databases/connection-management/custom-jdbc-configs/custom-jdbc-configs-databricks-example.mdx b/src/content/ja/administrator-manual/databases/connection-management/custom-jdbc-configs/custom-jdbc-configs-databricks-example.mdx new file mode 100644 index 000000000..16eaa6617 --- /dev/null +++ b/src/content/ja/administrator-manual/databases/connection-management/custom-jdbc-configs/custom-jdbc-configs-databricks-example.mdx @@ -0,0 +1,63 @@ +--- +title: 'Custom JDBC Configs - Databricks例' +confluenceUrl: 'https://querypie.atlassian.net/wiki/spaces/QM/pages/2010153057/Custom+JDBC+Configs+-+Databricks' +--- + +import { Callout } from 'nextra/components' + +# Custom JDBC Configs - Databricks例 + +### Overview + +QueryPie ACP 11.6.0から提供されるCustom JDBC Configs機能を通じて、管理者がJDBC Driverを登録し、Databricksコネクションを作成してポリシーを適用できます。
QueryPie ACPでDatabricksに対してサポートするquery parser(QSI)はANSI queryであるため、Databricks特化構文については正常に動作しない場合があります。 + + +本機能は**ベータ(Beta)**として提供されます。 +使用するには、`Admin > Databases > General > Configurations` ページのExperimentalセクションで **Custom JDBC Configuration** オプションを `Enable` に設定する必要があります。 +有効化後、`Admin > Databases > Connection Management > Custom JDBC Configs` メニューが表示されます。 + + +### Custom JDBC VendorとしてDatabricksを登録する + +1. `Admin > Databases > Connection Management > Custom JDBC Configs` メニューに移動します。 +2. 右上の `Create Custom JDBC` ボタンをクリックします。 +3. Nameに任意の識別可能な名前を入力します。この名前がDBコネクション作成時にCustom JDBC Vendors項目に表示されます。 +4. Descriptionに必要な追加情報を入力します。 +5. JDBC Configurationセクションの `Driver Class` にDatabricksのdriver classを入力します。(Databricksの場合:`com.databricks.client.jdbc.Driver`)
一般的にDriver Classは次のコマンドで確認できます。 + ``` + unzip -p META-INF/services/java.sql.Driver + ``` +6. JDBC URL Templateに `jdbc:databricks://{host}:{port}/default` を入力します。 +7. Options Prefixに `/` を入力します。 +8. Default Portに `443` を入力します。 +9. JVM Argumentsに `--add-opens=java.base/java.nio=ALL-UNNAMED` を入力します。 +10. Driver JAR Fileセクションで `Select JAR file to upload` ボタンをクリックしてJDBC Driverをアップロードします。
Databricks:[JDBC Driverダウンロード](https://www.databricks.com/spark/jdbc-drivers-download) +11. `Save` ボタンを押して設定を保存します。 + +### Custom VendorでDatabricks Connectionを作成する + +1. `Admin > Databases > Connection Management > DB Connections` メニューに移動します。 +2. 右上の `Create Connection` ボタンをクリックします。 +3. 画面を下にスクロールし、**Custom JDBC Vendors** 項目で先ほど登録したDatabricks(Custom JDBC作成時に `Name` として入力した項目)を選択します。 +4. **Connection Name**、**Host**、**Port** などの接続情報を入力します。 + 1. Host:Databricksで確認したserver hostname値をコピーして貼り付けます。 + 2. Port:Custom vendorで指定した443のデフォルト値を使用します。 + 3. Database Name:空のままにするか、DatabricksのCatalogに該当する名前を入力します。(以下の**構造位相比較表**を参照してください。)デフォルトパスを指定するものなので、空の値を推奨します。 + 4. Username:Databricksはトークンを使用するため、Usernameは空のままにします。 + 5. Password:DatabricksコンソールのSettings(ユーザー設定)> Developer > Access tokensで発行したトークン値を入力します。トークン作成時にtoken scopeはsql、workspace、catalogを指定します。 + 6. Other Options:Databricksコンソールのconnection detailsで確認できるJDBC URL項目の内容のうち、default;以降の部分をコピーして貼り付けます。 +5. 必要に応じて **QSI Parser** を選択します。デフォルト値の `ANSI SQL` を選択します。 +6. `Next` ボタンをクリックして `コネクション作成完了` 画面に移動します。 + +#### 構造位相比較 + +| **Databricks** | **QueryPie ACP** | +| -------------- | ---------------- | +| Catalog | Database | +| Schema | Schema | +| Table | Table | +| Column | Column | + + +`Custom JDBC Vendors` 項目には `Active` 状態のCustom JDBC Vendorのみ表示されます。 + diff --git a/src/content/ja/administrator-manual/databases/policies/_meta.ts b/src/content/ja/administrator-manual/databases/policies/_meta.ts index 53a78be92..76d0975ad 100644 --- a/src/content/ja/administrator-manual/databases/policies/_meta.ts +++ b/src/content/ja/administrator-manual/databases/policies/_meta.ts @@ -4,4 +4,5 @@ export default { 'data-masking': 'Data Masking', 'sensitive-data': 'Sensitive Data', 'policy-exception': 'Policy Exception', + 'query-rules': 'Query Rules', }; diff --git a/src/content/ja/administrator-manual/databases/policies/query-rules.mdx b/src/content/ja/administrator-manual/databases/policies/query-rules.mdx new file mode 100644 index 000000000..c7de8fa71 --- /dev/null +++ b/src/content/ja/administrator-manual/databases/policies/query-rules.mdx @@ -0,0 +1,221 @@ +--- +title: 'Query Rules' +confluenceUrl: 'https://querypie.atlassian.net/wiki/spaces/QM/pages/2010153040/Query+Rules' +--- + +import { Callout } from 'nextra/components' + +# Query Rules + +### Overview + +Query Ruleは、QueryPieを経由するSQLクエリに対して許可、ブロック、監査除外などのフィルタリングルールを設定できる機能です。 + +例えば、Connection Poolが定期的に実行するheartbeatクエリをAuditログから除外(SKIP)したり、`DROP TABLE`のような危険なDDLクエリをブロック(DENY)したり、SQLパースに失敗したクエリを一時的に許可(ALLOW)するなど、さまざまな運用シナリオに活用できます。 + +複数のルールが登録されている場合、Priority(優先順位)の順序で評価され、最初にマッチしたルールが適用されます。 + + +本機能は**ベータ(Beta)**として提供されます。 +使用するには、`Admin > Databases > General > Configurations`ページのExperimentalセクションで**Query Rules**オプションを`Enable`に設定する必要があります。 +有効化すると`Admin > Databases > Policies > Query Rules`メニューが表示されます。 + + + +MongoDB / DocumentDBにはQuery Ruleは適用されません。 + + +### Query Ruleの作成 + +新しいQuery Ruleを作成します。 + +
+database-settings_policies_query-rules.png +
+ +1. `Admin > Databases > Policies > Query Rules`メニューに移動します。 +2. 右上の`+ Add Query Rule`ボタンをクリックします。 +3. Query Rule作成のための情報を入力します。 + * **Basic Settings** + * **Enabled** : ルールの有効/無効を設定します。トグルで有効化/無効化できます。 + * **Priority** : ルールの優先順位を数値で指定します。数値が小さいほど優先順位が高くなります。デフォルト値は100です。 + * **Target Settings** + * **Target Type** : ルールの適用対象範囲を選択します。 + 1. **All** : すべてのコネクションに適用します。 + 2. **Connection** : 特定のコネクションにのみ適用します。 + 3. **Vendor** : 特定のDB種類(例:MySQL、PostgreSQL)にのみ適用します。 + * **Input Mode** : Target TypeがConnectionまたはVendorの場合、対象の指定方法を選択します。 + 1. **Select** : リストから対象を直接選択します。 + 2. **RegExp Pattern** : 正規表現で対象を指定します。Connectionの場合、NameまたはUUIDでマッチングされます。 + * **Target Value** : 適用対象を指定します。複数の対象を選択できます。 + * **Pattern Settings** + * **Match Type** : クエリのマッチング方式を選択します。 + 1. **Exact** : クエリ文字列が完全に一致する場合にマッチします(大文字小文字無視、前後の空白除去)。 + 2. **Regexp** : 正規表現パターンでマッチングします。大文字小文字無視(`(?i)`)とDOTALLモード(`(?s)`、`.`が改行にもマッチ)がデフォルトで適用されます。 + 3. **Normalized** : SQLを正規化(コメント除去、空白正規化、大文字小文字無視)した後、プレースホルダーでマッチングします。`?`は単一の値(数値、文字列、NULL、関数呼び出し)を、`?...`は1つ以上の値(IN句など)をマッチングします。 + * **Pattern** : マッチングするSQLパターンを入力します。 + * **Test Pattern** : 入力したPatternに対してSQLのマッチング可否をテストできます。SQLを入力して`Test`ボタンをクリックします。 + * **Origins** : ルールが適用されるクエリの出所を選択します。デフォルト値はAllです。 + 1. **All** : すべての出所のクエリに適用します。 + 2. **Proxy** : プロキシ経由のクエリにのみ適用します。 + 3. **SQL Editor** : SQL Editorで実行されたクエリにのみ適用します。 + * **Action Settings**
**Skip ActionはProxy専用です。** Skip選択時にOriginが自動的にProxyに設定され、SQL Editorではサポートされません。Auditに記録されないため、機密性の高いクエリには使用しないでください。 + * **Action** : ルールにマッチしたクエリに適用する動作を選択します。 + 1. **Allow** : ポリシー(Privilege、Data Maskingなど)を無視してクエリを実行します。Auditログには記録されます。 + 2. **Deny** : クエリの実行を拒否します。AuditログにPrevented状態で記録されます。 + 3. **Skip** : Audit記録なしでクエリを実行します。すべてのポリシーがスキップされます。 + * **Error Message** : ActionがDenyの場合、ユーザーに表示するエラーメッセージを入力します。 + * **Allow Reason** : ActionがAllowの場合、許可理由を記録します。Auditログのaction_commentに保存されます。 + * **Additional Information** + * **Max SQL Length** : ルールが適用されるSQLの最大長を指定します。デフォルト値は16,384文字です。SQLの長さがこの値を超えると、該当ルールのみスキップして次のルールに進みます。 + * **Comment** : ルールに関する説明を入力します。 +4. `Create`ボタンをクリックして保存します。 + + +ルールの変更はイベントベースでほとんどの場合即座に適用されます。 +マルチインスタンス環境では、他のインスタンスへの反映に最大10分かかる場合があります。 + + +### Query Ruleのテスト + +登録済みのルールが特定のSQLに正しくマッチするか事前にテストできます。 + +1. `Admin > Databases > Policies > Query Rules`メニューに移動します。 +2. 右上の`Test`ボタンをクリックします。 +3. テストするSQLを入力し、必要に応じて**Origin**と**Target Type**を選択します。 +4. **Target Type**が`Connection`の場合はConnectionを、`Vendor`の場合はVendorを選択します。 +5. `Test with Cache`または`Test without Cache`ボタンをクリックすると、マッチしたルール一覧と最終的に適用されるルールが表示されます。 + + +ルール変更直後は`Test without Cache`ボタンを使用すると、DBから最新のルールを直接取得して確認できます。 + + +### Query Ruleの確認 + +登録済みのQuery Rule一覧を確認します。 + +1. `Admin > Databases > Policies > Query Rules`メニューに移動します。 +2. 登録済みのQuery Rule一覧が表示されます。 + * **ID** : Query Ruleの固有識別子です。 + * **Priority** : ルールの優先順位です。 + * **Enabled** : ルールの有効/無効状態です。 + * **Target Type** : 適用対象範囲です。 + * **Pattern** : マッチングパターンです。 + * **Action** : マッチ時に適用される動作です(Allow / Deny / Skip)。 + * **Comment** : ルールに関する説明です。 + +### Query Ruleの修正 + +既存のQuery Ruleの設定を変更します。 + +1. `Admin > Databases > Policies > Query Rules`メニューに移動します。 +2. Query Rule一覧から修正する項目をクリックします。 +3. 詳細画面で変更する情報を修正します。 +4. `Save`ボタンをクリックして保存します。 + +### Query Ruleの削除 + +登録済みのQuery Ruleを削除します。 + +1. `Admin > Databases > Policies > Query Rules`メニューに移動します。 +2. Query Rule一覧から削除する項目のチェックボックスを選択します。複数を同時に選択できます。 +3. 上部に表示される`Delete`ボタンをクリックします。 +4. 確認ポップアップで`OK`をクリックします。 +______ + +### 使用例 + +#### 例1:HeartbeatクエリのAudit除外(SKIP) + +Connection Poolが定期的に実行する`SELECT 1`クエリがAuditログに不要に蓄積される場合、除外できます。 + +| **設定項目** | **値** | +| ----------- | ---------- | +| Priority | 10 | +| Target Type | All | +| Match Type | Exact | +| Pattern | `SELECT 1` | +| Origins | Proxy | +| Action | Skip | + + +Skip ActionはProxy専用です。 +SQL Editorで実行された`SELECT 1`にはこのルールは適用されません。 + + +#### 例2:危険なDDLクエリのブロック(DENY) + +`DROP DATABASE`、`DROP TABLE`などデータ損失を引き起こす可能性のあるクエリを全面的にブロックします。 + +| **設定項目** | **値** | +| ------------ | ----------------------------------- | +| Priority | 20 | +| Target Type | All | +| Match Type | RegExp | +| Pattern | `DROP\s+(DATABASE|TABLE)` | +| Origins | All | +| Action | Deny | +| Erro Message | `セキュリティポリシーによりブロックされたクエリです。管理者にお問い合わせください。` | + + +Regexpマッチングはデフォルトで大文字小文字を無視するため、`drop database`など小文字で入力されたクエリもブロックされます。 + + +#### 例3:SQLパース失敗クエリの一時許可(ALLOW) + +特定のクエリがSQLパース失敗によりブロックされた場合、一時的に許可処理します。 +Auditログは通常どおり記録されます。 + +| **設定項目** | **値** | +| ------------ | ---------------------------------- | +| Priority | 30 | +| Target Type | Connection | +| Input Mode | Select | +| Target Value | (許可する特定のConnectionを選択) | +| Match Type | Normalized | +| Pattern | `SELECT * FROM users WHERE id = ?` | +| Origins | All | +| Action | Allow | +| Allow Reason | `パース失敗一時許可 - QPD-1234` | + +#### 例4:特定DB Vendorに対する設定クエリの除外(SKIP) + +MySQL Connection Poolが自動的に実行するエンコーディング設定クエリをAuditから除外します。 + +| **設定項目** | **値** | +| ------------ | ------------------- | +| Priority | 10 | +| Target Type | Vendor | +| Input Mode | Select | +| Target Value | MySQL | +| Match Type | Exact | +| Pattern | `SET NAMES utf8mb4` | +| Origins | Proxy | +| Action | Skip | + +#### 例5:Priorityの活用 - 例外許可後に全体ブロック + +特定のConnectionは許可し、それ以外は全面ブロックする場合、Priorityを活用します。 + +**ルール1 - 例外許可**(Priority: 10) + +| **設定項目** | **値** | +| ------------ | -------------- | +| Priority | 10 | +| Target Type | Connection | +| Target Value | dev-db-001 | +| Match Type | Regexp | +| Pattern | `DROP\s+TABLE` | +| Action | Allow | + +**ルール2 - 全体ブロック**(Priority: 20) + +| **設定項目** | **値** | +| ----------- | -------------- | +| Priority | 20 | +| Target Type | All | +| Match Type | Regexp | +| Pattern | `DROP\s+TABLE` | +| Action | Deny | + +Priorityの値が小さいルール1が先に評価されるため、`dev-db-001`での`DROP TABLE`は許可され、その他のConnectionではルール2によりブロックされます。 diff --git a/src/content/ja/installation/product-versions.mdx b/src/content/ja/installation/product-versions.mdx index a6297b60a..c09f70b00 100644 --- a/src/content/ja/installation/product-versions.mdx +++ b/src/content/ja/installation/product-versions.mdx @@ -11,18 +11,21 @@ QueryPie ACPの公式リリースバージョン情報を提供します。 現在インストールおよび運用が可能なQueryPie ACP公式リリースバージョンです。 -| **Version** | **Build Tag** | **Release Note** | **Release Date** | **Status** | -| ------------- | ---------------- | ------------------------------------------------- | ------------------ | ------------ | -| 11.6.0 | `11.6.0-886d8e8` | [11.6.0](../release-notes/11.6.0) | 2026. 02. 13. | Active | -| 11.5.1 | `11.5.1-e0fc574` | | 2026. 01. 23. | Outdated | -| 11.5.0 | `11.5.0-dce9f84` | [11.5.0](../release-notes/11.5.0-11.5.4) | 2025. 12. 16. | Deprecated | -| 11.3.5 | `11.3.5-099bd6b` | | 2025. 11. 27. | Outdated | -| 11.3.0 | `11.3.0-559d539` | [11.3.0](../release-notes/11.3.0) | 2025. 09. 26. | Deprecated | -| 11.1.2 | `11.1.2-1eaa817` | [11.1.0 ~ 11.1.2](../release-notes/11.1.0-11.1.2) | 2025. 08. 19. | Outdated | +| **Version** | **Build Tag** | **Release Note** | **Release Date** | **Status** | +| ----------- | ---------------- | --------------------------------------------------------------------- | ---------------- | ---------------------------- | +| 11.6.1 | `11.6.1-44ad3a9` | | 2026. 03. 20. | Ready for Community Edition | +| 11.6.0 | `11.6.0-886d8e8` | [Link](https://github.com/querypie/querypie-community/discussions/11) | 2026. 02. 13. | Outdated | +| 11.5.4 | `11.5.4-702dd33` | [11.5.0 ~ 11.5.4](../release-notes/11.5.0-11.5.4) | 2026. 03. 20. | Ready for Enterprise Edition | +| 11.5.1 | `11.5.1-e0fc574` | [11.5.0 ~ 11.5.4](../release-notes/11.5.0-11.5.4) | 2026. 01. 23. | Outdated | +| 11.5.0 | `11.5.0-dce9f84` | [11.5.0 ~ 11.5.4](../release-notes/11.5.0-11.5.4) | 2025. 12. 16. | Deprecated | +| 11.3.5 | `11.3.5-099bd6b` | | 2025. 11. 27. | Outdated | +| 11.3.0 | `11.3.0-559d539` | [11.3.0](../release-notes/11.3.0) | 2025. 09. 26. | Deprecated | +| 11.1.2 | `11.1.2-1eaa817` | [11.1.0 ~ 11.1.2](../release-notes/11.1.0-11.1.2) | 2025. 08. 19. | Outdated | #### Status -* Active: 新規インストールおよびアップグレードに推奨します。 +* Ready for Community Edition: Community Editionユーザーに推奨します。 +* Ready for Enterprise Edition: Enterprise Editionユーザーに推奨します。 * Outdated: 新しいバージョンのリリースに伴い置き換えられた旧バージョンです。参照用として提供されます。 * Deprecated: 既存環境の維持を目的として保持されています。新規インストールには推奨されず、今後イメージ提供が終了する可能性があります。 @@ -53,3 +56,6 @@ QueryPie ACPは以下のコンテナレジストリを通じてコンテナイ Community / Standard / Enterprise Editionはすべて同じコンテナイメージを使用します。 レジストリの選択による機能の違いはありません。 +Community Editionには新機能や実験的な機能が迅速に追加されます。 +Enterprise Editionの場合、より安定した製品と円滑な技術サポートを提供するため、推奨バージョンが保守的に設定されます。 + diff --git a/src/content/ja/installation/querypie-acp-community-edition/_meta.ts b/src/content/ja/installation/querypie-acp-community-edition/_meta.ts index f72792d57..39666b61a 100644 --- a/src/content/ja/installation/querypie-acp-community-edition/_meta.ts +++ b/src/content/ja/installation/querypie-acp-community-edition/_meta.ts @@ -1,5 +1,6 @@ export default { - 'mcp-configuration-guide': 'MCP設定ガイド', + 'querypie-acp-community-edition-initial-configuration-guide': 'QueryPie ACP Community Edition 初期設定ガイド', 'how-to-upgrade-querypie-acp-community-edition': 'QueryPie ACP Community Editionのアップグレード方法', 'how-to-remove-querypie-acp-community-edition': 'QueryPie ACP Community Editionの削除方法', + 'mcp-configuration-guide': 'MCP設定ガイド', }; diff --git a/src/content/ja/installation/querypie-acp-community-edition/querypie-acp-community-edition-initial-configuration-guide.mdx b/src/content/ja/installation/querypie-acp-community-edition/querypie-acp-community-edition-initial-configuration-guide.mdx index 5d5b40d2a..f3a7fe68c 100644 --- a/src/content/ja/installation/querypie-acp-community-edition/querypie-acp-community-edition-initial-configuration-guide.mdx +++ b/src/content/ja/installation/querypie-acp-community-edition/querypie-acp-community-edition-initial-configuration-guide.mdx @@ -33,7 +33,7 @@ Web Base URLに入力した値を使用する機能 Community Editionの場合、デフォルトのポートが8000に設定されているため、ポートも合わせて入力します。
-Web Base URL +Web Base URL
Web Base URL
diff --git a/src/content/ja/release-notes/_meta.ts b/src/content/ja/release-notes/_meta.ts index 5ce3fc87f..fcd7a013c 100644 --- a/src/content/ja/release-notes/_meta.ts +++ b/src/content/ja/release-notes/_meta.ts @@ -1,5 +1,4 @@ export default { - '11.6.0': '11.6.0', '11.5.0-11.5.4': '11.5.0 ~ 11.5.4', '11.4.0': '11.4.0', '11.3.0': '11.3.0', diff --git a/src/content/ja/release-notes/11.6.0.mdx b/src/content/ja/unreleased/11.6.0.mdx similarity index 100% rename from src/content/ja/release-notes/11.6.0.mdx rename to src/content/ja/unreleased/11.6.0.mdx diff --git a/src/content/ja/unreleased/_meta.ts b/src/content/ja/unreleased/_meta.ts index 441b01317..424950872 100644 --- a/src/content/ja/unreleased/_meta.ts +++ b/src/content/ja/unreleased/_meta.ts @@ -1,3 +1,4 @@ export default { + '11.6.0': '11.6.0', 'reverse-sync-test-page': 'Reverse Sync Test Page', }; diff --git a/src/content/ko/administrator-manual/databases/connection-management/custom-jdbc-configs/_meta.ts b/src/content/ko/administrator-manual/databases/connection-management/custom-jdbc-configs/_meta.ts index c0e0ecec0..c7c59e2af 100644 --- a/src/content/ko/administrator-manual/databases/connection-management/custom-jdbc-configs/_meta.ts +++ b/src/content/ko/administrator-manual/databases/connection-management/custom-jdbc-configs/_meta.ts @@ -1,4 +1,4 @@ export default { 'qsi-parser-selection': 'QSI Parser Selection', - 'custom-jdbc-configs-databricks': 'Custom JDBC Configs - Databricks 예시', + 'custom-jdbc-configs-databricks-example': 'Custom JDBC Configs - Databricks 예시', }; diff --git a/src/content/ko/administrator-manual/databases/connection-management/custom-jdbc-configs/custom-jdbc-configs-databricks-example.mdx b/src/content/ko/administrator-manual/databases/connection-management/custom-jdbc-configs/custom-jdbc-configs-databricks-example.mdx new file mode 100644 index 000000000..a37d4f81e --- /dev/null +++ b/src/content/ko/administrator-manual/databases/connection-management/custom-jdbc-configs/custom-jdbc-configs-databricks-example.mdx @@ -0,0 +1,63 @@ +--- +title: 'Custom JDBC Configs - Databricks 예시' +confluenceUrl: 'https://querypie.atlassian.net/wiki/spaces/QM/pages/2010153057/Custom+JDBC+Configs+-+Databricks' +--- + +import { Callout } from 'nextra/components' + +# Custom JDBC Configs - Databricks 예시 + +### Overview + +QueryPie ACP 11.6.0 부터 제공되는 Custom JDBC Configs 기능을 통해 관리자가 JDBC Driver를 등록하고 Databricks 커넥션을 생성 후 정책을 적용할 수 있습니다.
QueryPie ACP에서 Databricks에 대해 지원하는 query parser (QSI)는 ANSI query 이므로 Databricks 특화 구문에 대해서는 정상 작동하지 않을 수 있습니다. + + +본 기능은 **베타(Beta)** 로 제공됩니다. +사용하려면 `Admin > Databases > General > Configurations` 페이지의 Experimental 섹션에서 **Custom JDBC Configuration** 옵션을 `Enable`로 설정해야 합니다. +활성화 후 `Admin > Databases > Connection Management > Custom JDBC Configs` 메뉴가 나타납니다. + + +### Custom JDBC Vendor 로 Databricks 등록하기 + +1. `Admin > Databases > Connection Management > Custom JDBC Configs` 메뉴로 이동합니다. +2. 우측 상단의 `Create Custom JDBC` 버튼을 클릭합니다. +3. Name에 임의의 식별가능한 이름을 입력합니다. 이 이름이 DB 커넥션을 생성할 때 Custom JDBC Vendors 항목에 노출됩니다. +4. Description에 필요한 추가 정보를 입력합니다. +5. JDBC Configuration 섹션의 `Driver Class`에 Databricks의 driver class 를 입력합니다. (Databricks의 경우 : `com.databricks.client.jdbc.Driver`)
일반적으로 Driver Class 는 다음 명령으로 확인 가능합니다. + ``` + unzip -p META-INF/services/java.sql.Driver + ``` +6. JDBC URL Template에 `jdbc:databricks://{host}:{port}/default` 를 입력합니다. +7. Options Prefix에 `/` 를 입력합니다. +8. Default Port에 `443` 을 입력합니다. +9. JVM Arguments에 `--add-opens=java.base/java.nio=ALL-UNNAMED` 를 입력합니다. +10. Driver JAR File 섹션에서 `Select JAR file to upload` 버튼을 클릭하고 JDBC Driver 를 업로드합니다.
Databricks : [JDBC Driver 다운로드](https://www.databricks.com/spark/jdbc-drivers-download) +11. `Save` 버튼을 누르고 설정을 저장합니다. + +### Custom Vendor로 Databricks Connection 생성하기 + +1. `Admin > Databases > Connection Management > DB Connections` 메뉴로 이동합니다. +2. 우측 상단의 `Create Connection` 버튼을 클릭합니다. +3. 화면을 아래로 스크롤한 뒤 **Custom JDBC Vendors** 항목에서 앞에서 등록한 Databricks(Custom JDBC 생성시 `Name`으로 입력한 항목)를 선택합니다. +4. **Connection Name**, **Host**, **Port** 등 연결 정보를 입력합니다. + 1. Host : Databricks 에서 확인한 server hostname 값을 복사해서 붙여 넣습니다. + 2. Port : Custom vendor에서 지정한 443 기본값을 사용합니다. + 3. Database Name : 빈 값으로 그냥 두거나 Databricks의 Catalog에 해당되는 이름을 입력합니다.(아래의 **구조위상 비교표**를 참고하세요.) 기본 경로를 지정하는 것이므로 빈값을 권장합니다. + 4. Username : Databricks는 토큰을 사용하므로 Username은 빈 값으로 둡니다. + 5. Password : Databricks 콘솔의 Settings(사용자 설정) > Developer > Access tokens 에서 발급한 토큰 값을 입력합니다. 토큰을 생성할 때 token scope는 sql, workspace, catalog 를 지정합니다. + 6. Other Options : Databricks 콘솔의 connection details에서 확인할 수 있는 JDBC URL 항목의 내용중 default; 뒷 부분을 복사해서 붙여 넣습니다. +5. 필요한 경우 **QSI Parser**를 선택합니다. 기본값인 `ANSI SQL`을 선택합니다. +6. `Next` 버튼을 클릭하여 `커넥션 생성 완료` 화면으로 이동합니다. + +#### 구조 위상 비교 + +| **Databricks** | **QueryPie ACP** | +| -------------- | ---------------- | +| Catalog | Database | +| Schema | Schema | +| Table | Table | +| Column | Column | + + +`Custom JDBC Vendors` 항목에는 `Active` 상태인 Custom JDBC Vendor만 표시됩니다. + diff --git a/src/content/ko/administrator-manual/databases/policies/_meta.ts b/src/content/ko/administrator-manual/databases/policies/_meta.ts index 53a78be92..76d0975ad 100644 --- a/src/content/ko/administrator-manual/databases/policies/_meta.ts +++ b/src/content/ko/administrator-manual/databases/policies/_meta.ts @@ -4,4 +4,5 @@ export default { 'data-masking': 'Data Masking', 'sensitive-data': 'Sensitive Data', 'policy-exception': 'Policy Exception', + 'query-rules': 'Query Rules', }; diff --git a/src/content/ko/administrator-manual/databases/policies/query-rules.mdx b/src/content/ko/administrator-manual/databases/policies/query-rules.mdx new file mode 100644 index 000000000..996bf6c90 --- /dev/null +++ b/src/content/ko/administrator-manual/databases/policies/query-rules.mdx @@ -0,0 +1,221 @@ +--- +title: 'Query Rules' +confluenceUrl: 'https://querypie.atlassian.net/wiki/spaces/QM/pages/2010153040/Query+Rules' +--- + +import { Callout } from 'nextra/components' + +# Query Rules + +### Overview + +Query Rule은 QueryPie를 경유하는 SQL 쿼리에 대해 허용, 차단, 감사 제외 등의 필터링 규칙을 설정할 수 있는 기능입니다. + +예를 들어, Connection Pool이 주기적으로 실행하는 heartbeat 쿼리를 Audit 로그에서 제외(SKIP)하거나, `DROP TABLE`과 같은 위험한 DDL 쿼리를 차단(DENY)하거나, SQL 파싱에 실패한 쿼리를 임시로 허용(ALLOW)하는 등 다양한 운영 시나리오에 활용할 수 있습니다. + +여러 규칙이 등록된 경우 Priority(우선순위) 순서로 평가되며, 가장 먼저 매칭되는 규칙이 적용됩니다. + + +본 기능은 **베타(Beta)** 로 제공됩니다. +사용하려면 `Admin > Databases > General > Configurations` 페이지의 Experimental 섹션에서 **Query Rules** 옵션을 `Enable`로 설정해야 합니다. +활성화 후 `Admin > Databases > Policies > Query Rules` 메뉴가 나타납니다. + + + +MongoDB / DocumentDB는 Query Rule이 적용되지 않습니다. + + +### Query Rule 생성하기 + +새로운 Query Rule을 생성합니다. + +
+database-settings_policies_query-rules.png +
+ +1. `Admin > Databases > Policies > Query Rules` 메뉴로 이동합니다. +2. 우측 상단의 `+ Add Query Rule` 버튼을 클릭합니다. +3. Query Rule 생성을 위한 정보를 입력합니다. + * **Basic Settings** + * **Enabled** : 규칙의 활성화 여부를 설정합니다. 토글을 통해 활성화/비활성화할 수 있습니다. + * **Priority** : 규칙 우선순위를 숫자로 지정합니다. 낮은 숫자가 높은 우선순위를 가집니다. 기본값은 100입니다. + * **Target Settings** + * **Target Type** : 규칙의 적용 대상 범위를 선택합니다. + 1. **All** : 전체 커넥션에 적용합니다. + 2. **Connection** : 특정 커넥션에만 적용합니다. + 3. **Vendor** : 특정 DB 종류(예: MySQL, PostgreSQL)에만 적용합니다. + * **Input Mode** : Target Type이 Connection 또는 Vendor인 경우, 대상 지정 방식을 선택합니다. + 1. **Select** : 목록에서 대상을 직접 선택합니다. + 2. **RegExp Pattern** : 정규표현식으로 대상을 지정합니다. Connection의 경우 Name 또는 UUID로 매칭됩니다. + * **Target Value** : 적용 대상을 지정합니다. 여러 개의 대상을 선택할 수 있습니다. + * **Pattern Settings** + * **Match Type** : 쿼리 매칭 방식을 선택합니다. + 1. **Exact** : 쿼리 문자열이 정확히 일치할 때 매칭합니다 (대소문자 무시, 앞뒤 공백 제거). + 2. **Regexp** : 정규표현식 패턴으로 매칭합니다. 대소문자 무시(`(?i)`)와 DOTALL 모드(`(?s)`, `.`이 줄바꿈도 매칭)가 기본 적용됩니다. + 3. **Normalized** : SQL을 정규화(주석 제거, 공백 정규화, 대소문자 무시)한 후 플레이스홀더로 매칭합니다. `?`는 단일 값(숫자, 문자열, NULL, 함수 호출)을, `?...`는 1개 이상의 값(IN 절 등)을 매칭합니다. + * **Pattern** : 매칭할 SQL 패턴을 입력합니다. + * **Test Pattern** : 입력한 Pattern에 대해 SQL 매칭 여부를 테스트할 수 있습니다. SQL을 입력하고 `Test` 버튼을 클릭합니다. + * **Origins** : 규칙이 적용되는 쿼리 출처를 선택합니다. 기본값은 All입니다. + 1. **All** : 모든 출처의 쿼리에 적용합니다. + 2. **Proxy** : 프록시를 통한 쿼리에만 적용합니다. + 3. **SQL Editor** : SQL Editor에서 실행된 쿼리에만 적용합니다. + * **Action Settings**
**Skip Action은 Proxy 전용입니다.** Skip 선택 시 Origin이 자동으로 Proxy로 설정되며, SQL Editor에서는 지원되지 않습니다. Audit에 기록되지 않으므로 민감한 쿼리에는 사용하지 마세요. + * **Action** : 규칙에 매칭되는 쿼리에 적용할 동작을 선택합니다. + 1. **Allow** : 정책(Privilege, Data Masking 등)을 무시하고 쿼리를 실행합니다. Audit 로그에는 기록됩니다. + 2. **Deny** : 쿼리 실행을 거부합니다. Audit 로그에 Prevented 상태로 기록됩니다. + 3. **Skip** : Audit 기록 없이 쿼리를 실행합니다. 모든 정책이 스킵됩니다. + * **Error Message** : Action이 Deny인 경우, 사용자에게 표시할 오류 메시지를 입력합니다. + * **Allow Reason** : Action이 Allow인 경우, 허용 사유를 기록합니다. Audit 로그의 action_comment에 저장됩니다. + * **Additional Information** + * **Max SQL Length** : 규칙이 적용되는 SQL의 최대 길이를 지정합니다. 기본값은 16,384자입니다. SQL 길이가 이 값을 초과하면 해당 규칙만 스킵하고 다음 규칙으로 진행합니다. + * **Comment** : 규칙에 대한 설명을 입력합니다. +4. `Create` 버튼을 클릭하여 저장합니다. + + +규칙 변경은 이벤트 기반으로 대부분 즉시 적용됩니다. +다중 인스턴스 환경에서는 다른 인스턴스에 최대 10분까지 소요될 수 있습니다. + + +### Query Rule 테스트하기 + +등록된 규칙이 특정 SQL에 올바르게 매칭되는지 미리 테스트할 수 있습니다. + +1. `Admin > Databases > Policies > Query Rules` 메뉴로 이동합니다. +2. 우측 상단의 `Test` 버튼을 클릭합니다. +3. 테스트할 SQL을 입력하고, 필요에 따라 **Origin**과 **Target Type**을 선택합니다. +4. **Target Type**이 `Connection`인 경우 Connection을, `Vendor`인 경우 Vendor를 선택합니다. +5. `Test with Cache` 또는 `Test without Cache` 버튼을 클릭하면 매칭된 규칙 목록과 최종 적용될 규칙이 표시됩니다. + + +규칙 변경 직후에는 `Test without Cache` 버튼을 사용하면 DB에서 최신 규칙을 직접 조회하여 확인할 수 있습니다. + + +### Query Rule 조회하기 + +등록된 Query Rule 목록을 확인합니다. + +1. `Admin > Databases > Policies > Query Rules` 메뉴로 이동합니다. +2. 등록된 Query Rule 목록이 표시됩니다. + * **ID** : Query Rule의 고유 식별자입니다. + * **Priority** : 규칙 우선순위입니다. + * **Enabled** : 규칙의 활성화 여부입니다. + * **Target Type** : 적용 대상 범위입니다. + * **Pattern** : 매칭 패턴입니다. + * **Action** : 매칭 시 적용되는 동작입니다 (Allow / Deny / Skip). + * **Comment** : 규칙에 대한 설명입니다. + +### Query Rule 수정하기 + +기존 Query Rule의 설정을 변경합니다. + +1. `Admin > Databases > Policies > Query Rules` 메뉴로 이동합니다. +2. Query Rule 목록에서 수정할 항목을 클릭합니다. +3. 상세 화면에서 변경할 정보를 수정합니다. +4. `Save` 버튼을 클릭하여 저장합니다. + +### Query Rule 삭제하기 + +등록된 Query Rule을 삭제합니다. + +1. `Admin > Databases > Policies > Query Rules` 메뉴로 이동합니다. +2. Query Rule 목록에서 삭제할 항목의 체크박스를 선택합니다. 여러 개를 동시에 선택할 수 있습니다. +3. 상단에 나타나는 `Delete` 버튼을 클릭합니다. +4. 확인 팝업에서 `OK` 를 클릭합니다. +______ + +### 사용 예시 + +#### 예시 1: Heartbeat 쿼리 Audit 제외 (SKIP) + +Connection Pool이 주기적으로 실행하는 `SELECT 1` 쿼리가 Audit 로그에 불필요하게 쌓이는 경우 제외할 수 있습니다. + +| **설정 항목** | **값** | +| ----------- | ---------- | +| Priority | 10 | +| Target Type | All | +| Match Type | Exact | +| Pattern | `SELECT 1` | +| Origins | Proxy | +| Action | Skip | + + +Skip Action은 Proxy 전용입니다. +SQL Editor에서 실행된 `SELECT 1`에는 이 규칙이 적용되지 않습니다. + + +#### 예시 2: 위험한 DDL 쿼리 차단 (DENY) + +`DROP DATABASE`, `DROP TABLE` 등 데이터 손실을 유발할 수 있는 쿼리를 전체 차단합니다. + +| **설정항목** | **값** | +| ------------ | ----------------------------------- | +| Priority | 20 | +| Target Type | All | +| Match Type | RegExp | +| Pattern | `DROP\s+(DATABASE|TABLE)` | +| Origins | All | +| Action | Deny | +| Erro Message | `보안 정책에 의해 차단된 쿼리입니다. 관리자에게 문의하세요.` | + + +Regexp 매칭은 대소문자 무시가 기본 적용되므로 `drop database` 등 소문자로 입력된 쿼리도 차단됩니다. + + +#### 예시 3: SQL 파싱 실패 쿼리 임시 허용 (ALLOW) + +특정 쿼리가 SQL 파싱 실패로 차단될 때 임시로 허용 처리합니다. +Audit 로그는 정상 기록됩니다. + +| **설정 항목** | **값** | +| ------------ | ---------------------------------- | +| Priority | 30 | +| Target Type | Connection | +| Input Mode | Select | +| Target Value | (허용할 특정 Connection 선택) | +| Match Type | Normalized | +| Pattern | `SELECT * FROM users WHERE id = ?` | +| Origins | All | +| Action | Allow | +| Allow Reason | `파싱 실패 임시 허용 - QPD-1234` | + +#### 예시 4: 특정 DB Vendor에 대한 설정 쿼리 제외 (SKIP) + +MySQL Connection Pool이 자동으로 실행하는 인코딩 설정 쿼리를 Audit에서 제외합니다. + +| **설정 항목** | **값** | +| ------------ | ------------------- | +| Priority | 10 | +| Target Type | Vendor | +| Input Mode | Select | +| Target Value | MySQL | +| Match Type | Exact | +| Pattern | `SET NAMES utf8mb4` | +| Origins | Proxy | +| Action | Skip | + +#### 예시 5: Priority 활용 - 예외 허용 후 전체 차단 + +특정 Connection은 허용하고 나머지는 전체 차단하는 경우, Priority를 활용합니다. + +**규칙 1 - 예외 허용** (Priority: 10) + +| **설정 항목** | **값** | +| ------------ | -------------- | +| Priority | 10 | +| Target Type | Connection | +| Target Value | dev-db-001 | +| Match Type | Regexp | +| Pattern | `DROP\s+TABLE` | +| Action | Allow | + +**규칙 2 - 전체 차단** (Priority: 20) + +| **설정 항목** | **값** | +| ----------- | -------------- | +| Priority | 20 | +| Target Type | All | +| Match Type | Regexp | +| Pattern | `DROP\s+TABLE` | +| Action | Deny | + +Priority가 낮은 규칙 1이 먼저 평가되어 `dev-db-001`에서의 `DROP TABLE`은 허용되고, 그 외 Connection에서는 규칙 2에 의해 차단됩니다. diff --git a/src/content/ko/installation/product-versions.mdx b/src/content/ko/installation/product-versions.mdx index 201072a1e..e91f46034 100644 --- a/src/content/ko/installation/product-versions.mdx +++ b/src/content/ko/installation/product-versions.mdx @@ -11,18 +11,21 @@ QueryPie ACP의 공식 출시 버전 정보를 제공합니다. 현재 설치 및 운영이 가능한 QueryPie ACP 공식 출시 버전입니다. -| **Version** | **Build Tag** | **Release Note** | **Release Date** | **Status** | -| ----------- | ---------------- | ------------------------------------------------- | ---------------- | ---------- | -| 11.6.0 | `11.6.0-886d8e8` | [11.6.0](../release-notes/11.6.0) | 2026. 02. 13. | Active | -| 11.5.1 | `11.5.1-e0fc574` | | 2026. 01. 23. | Outdated | -| 11.5.0 | `11.5.0-dce9f84` | [11.5.0](../release-notes/11.5.0-11.5.4) | 2025. 12. 16. | Deprecated | -| 11.3.5 | `11.3.5-099bd6b` | | 2025. 11. 27. | Outdated | -| 11.3.0 | `11.3.0-559d539` | [11.3.0](../release-notes/11.3.0) | 2025. 09. 26. | Deprecated | -| 11.1.2 | `11.1.2-1eaa817` | [11.1.0 ~ 11.1.2](../release-notes/11.1.0-11.1.2) | 2025. 08. 19. | Outdated | +| **Version** | **Build Tag** | **Release Note** | **Release Date** | **Status** | +| ----------- | ---------------- | --------------------------------------------------------------------- | ---------------- | ---------------------------- | +| 11.6.1 | `11.6.1-44ad3a9` | | 2026. 03. 20. | Ready for Community Edition | +| 11.6.0 | `11.6.0-886d8e8` | [Link](https://github.com/querypie/querypie-community/discussions/11) | 2026. 02. 13. | Outdated | +| 11.5.4 | `11.5.4-702dd33` | [11.5.0 ~ 11.5.4](../release-notes/11.5.0-11.5.4) | 2026. 03. 20. | Ready for Enterprise Edition | +| 11.5.1 | `11.5.1-e0fc574` | [11.5.0 ~ 11.5.4](../release-notes/11.5.0-11.5.4) | 2026. 01. 23. | Outdated | +| 11.5.0 | `11.5.0-dce9f84` | [11.5.0 ~ 11.5.4](../release-notes/11.5.0-11.5.4) | 2025. 12. 16. | Deprecated | +| 11.3.5 | `11.3.5-099bd6b` | | 2025. 11. 27. | Outdated | +| 11.3.0 | `11.3.0-559d539` | [11.3.0](../release-notes/11.3.0) | 2025. 09. 26. | Deprecated | +| 11.1.2 | `11.1.2-1eaa817` | [11.1.0 ~ 11.1.2](../release-notes/11.1.0-11.1.2) | 2025. 08. 19. | Outdated | #### Status -* Active: 신규 설치 및 업그레이드에 사용하는 것을 권장합니다. +* Ready for Community Edition: Community Edition 이용자에게 권장합니다. +* Ready for Enterprise Edition: Enterprise Edition 이용자에게 권장합니다. * Outdated: 새로운 버전 출시에 따라 대체된 구버전입니다. 참조용으로 제공됩니다. * Deprecated: 기존 환경 유지를 목적으로 유지합니다. 신규 설치에는 권장하지 않으며, 향후 이미지 제공이 중단될 수 있습니다. @@ -53,3 +56,6 @@ Registry 위치: `harbor.chequer.io/querypie` Community / Standard / Enterprise Edition 모두 동일한 Container Image를 사용합니다. Registry 선택에 따른 기능 차이는 없습니다. +Community Edition 에는 새로운 기능, 실험적인 기능이 빠르게 추가됩니다. +Enterprise Edition 의 경우, 보다 안정적인 제품, 원활한 기술지원을 제공하기 위하여, 권장하는 버전이 보수적으로 설정됩니다. + diff --git a/src/content/ko/installation/querypie-acp-community-edition/_meta.ts b/src/content/ko/installation/querypie-acp-community-edition/_meta.ts index a17875f4c..2fef2e813 100644 --- a/src/content/ko/installation/querypie-acp-community-edition/_meta.ts +++ b/src/content/ko/installation/querypie-acp-community-edition/_meta.ts @@ -1,5 +1,6 @@ export default { - 'mcp-configuration-guide': 'MCP 설정 가이드', + 'querypie-acp-community-edition-initial-configuration-guide': 'QueryPie ACP Community Edition 초기 구성 가이드', 'how-to-upgrade-querypie-acp-community-edition': 'QueryPie ACP Community Edition 업그레이드 방법', 'how-to-remove-querypie-acp-community-edition': 'QueryPie ACP Community Edition 제거 방법', + 'mcp-configuration-guide': 'MCP 설정 가이드', }; diff --git a/src/content/ko/installation/querypie-acp-community-edition/querypie-acp-community-edition-initial-configuration-guide.mdx b/src/content/ko/installation/querypie-acp-community-edition/querypie-acp-community-edition-initial-configuration-guide.mdx index 9891a8ed8..2fe964879 100644 --- a/src/content/ko/installation/querypie-acp-community-edition/querypie-acp-community-edition-initial-configuration-guide.mdx +++ b/src/content/ko/installation/querypie-acp-community-edition/querypie-acp-community-edition-initial-configuration-guide.mdx @@ -33,7 +33,7 @@ Web Base URL 에 입력된 값을 사용하는 기능 community edition의 경우 기본 port가 8000으로 되어 있으므로 port 도 같이 입력합니다.
-Web Base URL +Web Base URL
Web Base URL
diff --git a/src/content/ko/release-notes/_meta.ts b/src/content/ko/release-notes/_meta.ts index 5ce3fc87f..fcd7a013c 100644 --- a/src/content/ko/release-notes/_meta.ts +++ b/src/content/ko/release-notes/_meta.ts @@ -1,5 +1,4 @@ export default { - '11.6.0': '11.6.0', '11.5.0-11.5.4': '11.5.0 ~ 11.5.4', '11.4.0': '11.4.0', '11.3.0': '11.3.0', diff --git a/src/content/ko/release-notes/11.6.0.mdx b/src/content/ko/unreleased/11.6.0.mdx similarity index 100% rename from src/content/ko/release-notes/11.6.0.mdx rename to src/content/ko/unreleased/11.6.0.mdx diff --git a/src/content/ko/unreleased/_meta.ts b/src/content/ko/unreleased/_meta.ts index 441b01317..424950872 100644 --- a/src/content/ko/unreleased/_meta.ts +++ b/src/content/ko/unreleased/_meta.ts @@ -1,3 +1,4 @@ export default { + '11.6.0': '11.6.0', 'reverse-sync-test-page': 'Reverse Sync Test Page', };