Hey, Hao Please see my comments as follows:
>> 2. I think we can also modify the create catalog ddl syntax. > > ``` > CREATE CATALOG cat USING CONNECTION mycat.mydb.mysql_prod > WITH ( > 'type' = 'jdbc' > ); > ``` > > Does `mycat.mydb.mysql_prod` exist in another catalog? This feels like a > chicken-egg problem. I think for connections to be used for catalog > creation, it needs to be system connection similar to system function which > exist outside of CatalogManager. Maybe we can defer this to later > functionality? I think connection is a very common need for most catalogs like MySQLCatalog、KafkaCatalog、HiveCatalog and so on, all of these catalogs need a connection. >> 3. It seems the connector factory should merge the with options and > connection options together and then create the source/sink. It's > better that framework can merge all these options and connectors don't need > any codes. > > I think it's better to separate connections with table options and make it > explicit. Reasons is: the connection here should be a decrypted one. It's > sensitive and should be handled carefully regarding logging, usage etc. > Mixing with original table options makes it hard to do. But the Flip used > `CatalogConnection` which is an encrypted one. I'll update it to > `SensitveConnection`. >> (4)Framework-level Resolution : +1 to Shengkai's point about having the > framework (DynamicTableFactory) return complete options to reduce connector > adaptation cost. > > Please see my explanation for Shengkai's similar question. In this case, I think reducing connector development cost is more important than making is explicit, the connector knows which options is sensitive or not. >> 4. Why we need to introduce ConnectionFactory? I think connection is like > CatalogTable. It should hold the basic information and all information in > the connection should be stored into secret store. > > The main reason is to enable user defined connection handling for different > types. For example, if connection type is `basic`, the corresponding > factory can handle basic type secrets (e.g. extract username/password from > connection options and do encryption). > >> (2) Configurability of SECRET_FIELDS : Could the hardcoded SECRET_FIELDS > in BasicConnectionFactory be made configurable (e.g., 'token' vs > 'accessKey') for better connector compatibility? > > This depends on `ConnectionFactory` implementation and can be self defined > by user. I hope the BasicConnectionFactory can be a common one that can feed most common users case, otherwise encrypt all options is a good idea. Btw, I also want to push the FLIP forward and start a vote ASAP, thus a meeting is welcome if you think it can help finalizing the discussion thread. Best, Leonard > >> Hi friends >> >> I like the updated FLIP goals, that’s what I want. I’ve some feedback: >> >> (1) Minor: Interface Hierarchy : Why doesn't WritableSecretStore extend >> SecretStore? >> (2) Configurability of SECRET_FIELDS : Could the hardcoded SECRET_FIELDS >> in BasicConnectionFactory be made configurable (e.g., 'token' vs >> 'accessKey') for better connector compatibility? >> (3)Inconsistent Return Types : ConnectionFactory#resolveConnection returns >> SensitiveConnection, while BasicConnectionFactory#resolveConnection returns >> Map<String, String>. Should these be aligned? >> (4)Framework-level Resolution : +1 to Shengkai's point about having the >> framework (DynamicTableFactory) return complete options to reduce connector >> adaptation cost. >> (5)Secret ID Handling : When no encryption is needed, secretId is null >> (from secrets.isEmpty() ? null : secretStore.storeSecret(secrets)). This >> behavior should be explicitly documented in the interfaces. >> >> Best, >> Leonard >> >>> 2025 7月 24 11:44,Shengkai Fang <fskm...@gmail.com> 写道: >>> >>> hi. >>> >>> Sorry for the late reply. I just have some questions: >>> >>> 1. Why SecretStoreFactory#open throws a CatalogException? I think the >>> exteranl system can not handle this exception. >>> >>> 2. I think we can also modify the create catalog ddl syntax. >>> >>> ``` >>> CREATE CATALOG cat USING CONNECTION mycat.mydb.mysql_prod >>> WITH ( >>> 'type' = 'jdbc' >>> ); >>> ``` >>> >>> 3. It seems the connector factory should merge the with options and >>> connection options together and then create the source/sink. It's >>> better that framework can merge all these options and connectors don't >> need >>> any codes. >>> >>> 4. Why we need to introduce ConnectionFactory? I think connection is like >>> CatalogTable. It should hold the basic information and all information in >>> the connection should be stored into secret store. >>> >>> >>> Best, >>> Shengkai >>> >>> >>> Timo Walther <twal...@apache.org> 于2025年7月22日周二 22:04写道: >>> >>>> Hi Mayank, >>>> >>>> Thanks for updating the FLIP and clearly documenting our discussion. >>>> >>>> +1 for moving forward with the vote, unless there are objections from >>>> others. >>>> >>>> Cheers, >>>> Timo >>>> >>>> On 22.07.25 02:14, Mayank Juneja wrote: >>>>> Hi Ryan and Austin, >>>>> >>>>> Thanks for your suggestions. I've updated the FLIP with the following >>>>> additional info - >>>>> >>>>> 1. *table.secret-store.kind* key to register the SecretStore in a yaml >>>> file >>>>> 2. *updateSecret* method in WritableSecretStore interface >>>>> >>>>> Thanks, >>>>> Mayank >>>>> >>>>> On Thu, Jul 17, 2025 at 5:42 PM Austin Cawley-Edwards < >>>>> austin.caw...@gmail.com> wrote: >>>>> >>>>>> Hey all, >>>>>> >>>>>> Thanks for the nice flip all! I’m just reading through – had one >>>> question >>>>>> on the ALTER CONNECTION implementation flow. Would it make sense for >> the >>>>>> WritableSecretStore to expose a method for updating a secret by ID, so >>>> it >>>>>> can be done atomically? Else, would we need to call delete and create >>>>>> again, potentially introducing concurrent resolution errors? >>>>>> >>>>>> Best, >>>>>> Austin >>>>>> >>>>>> On Thu, Jul 17, 2025 at 13:07 Ryan van Huuksloot >>>>>> <ryan.vanhuuksl...@shopify.com.invalid> wrote: >>>>>> >>>>>>> Hi Mayank, >>>>>>> >>>>>>> Thanks for updating the FLIP. Overall it looks good to me. >>>>>>> >>>>>>> One question I had related to how someone could choose the >> SecretStore >>>>>> they >>>>>>> want to use if they use something like the SQL Gateway as the >>>> entrypoint >>>>>> on >>>>>>> top of a remote Session cluster. I don't see an explicit way to set >> the >>>>>>> SecretStore in the FLIP. >>>>>>> I assume we'll do it similar to the CatalogStore but I wanted to call >>>>>> this >>>>>>> out. >>>>>>> >>>>>>> table.catalog-store.kind: filetable.catalog-store.file.path: >>>>>>> file:///path/to/catalog/store/ >>>>>>> >>>>>>> Ryan van Huuksloot >>>>>>> Staff Engineer, Infrastructure | Streaming Platform >>>>>>> [image: Shopify] >>>>>>> < >>>> https://www.shopify.com/?utm_medium=salessignatures&utm_source=hs_email >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Wed, Jul 16, 2025 at 2:22 PM Mayank Juneja < >>>> mayankjunej...@gmail.com> >>>>>>> wrote: >>>>>>> >>>>>>>> Hi everyone, >>>>>>>> >>>>>>>> Thanks for your valuable inputs. I have updated the FLIP with the >>>> ideas >>>>>>>> proposed earlier in the thread. Looking forward to your feedback. >>>>>>>> https://cwiki.apache.org/confluence/x/cYroF >>>>>>>> >>>>>>>> Best, >>>>>>>> Mayank >>>>>>>> >>>>>>>> On Fri, Jun 27, 2025 at 2:59 AM Leonard Xu <xbjt...@gmail.com> >> wrote: >>>>>>>> >>>>>>>>> Quick response, thanks Mayank, Hao and Timo for the effort. The >> new >>>>>>>>> proposal looks well, +1 from my side. >>>>>>>>> >>>>>>>>> Could you draft(update) current FLIP docs thus we can have some >>>>>>> specific >>>>>>>>> discussions later? >>>>>>>>> >>>>>>>>> >>>>>>>>> Best, >>>>>>>>> Leonard >>>>>>>>> >>>>>>>>> >>>>>>>>>> 2025 6月 26 15:06,Timo Walther <twal...@apache.org> 写道: >>>>>>>>>> >>>>>>>>>> Hi everyone, >>>>>>>>>> >>>>>>>>>> sorry for the late reply, feature freeze kept me busy. Mayank, Hao >>>>>>> and >>>>>>>> I >>>>>>>>> synced offline and came up we an improved proposal. Before we >> update >>>>>>> the >>>>>>>>> FLIP let me summarize the most important key facts that hopefully >>>>>>> address >>>>>>>>> most concerns: >>>>>>>>>> >>>>>>>>>> 1) SecretStore >>>>>>>>>> - Similar to CatalogStore, we introduce a SecretStore as the >>>>>> highest >>>>>>>>> level in TableEnvironment. >>>>>>>>>> - SecretStore is initialized with options and potentially >>>>>> environment >>>>>>>>> variables. Including >>>>>> EnvironmentSettings.withSecretStore(SecretStore). >>>>>>>>>> - The SecretStore is pluggable and discovered using the regular >>>>>>>>> factory-approach. >>>>>>>>>> - For example, it could implement Azure Key Vault or other cloud >>>>>>>>> provider secrets stores. >>>>>>>>>> - Goal: Flink and Flink catalogs do not have to deal with >> sensitive >>>>>>>> data. >>>>>>>>>> >>>>>>>>>> 2) Connections >>>>>>>>>> - Connections are catalog objects identified with 3-part >>>>>> identifiers. >>>>>>>>> 3-part identifiers are crucial for managability of larger projects >>>>>> and >>>>>>>>> align with existing catalog objects. >>>>>>>>>> - They contain connection details, e.g. URL, query parameters, and >>>>>>>> other >>>>>>>>> configuration. >>>>>>>>>> - They do not contain secrets, but only pointers to secrets in the >>>>>>>>> SecretStore. >>>>>>>>>> >>>>>>>>>> 3) Connection DDL >>>>>>>>>> >>>>>>>>>> CREATE [TEMPORARY] CONNECTION mycat.mydb.OpenAPI WITH ( >>>>>>>>>> 'type' = 'basic' | 'bearer' | 'jwt' | 'oauth' | ..., >>>>>>>>>> ... >>>>>>>>>> ) >>>>>>>>>> >>>>>>>>>> - Connection type is pluggable and discovered using the regular >>>>>>>>> factory-approach. >>>>>>>>>> - The factory extracts secrets and puts them into SecretStore. >>>>>>>>>> - The factory only leaves non-confidential options left that can >> be >>>>>>>>> stored in a catalog. >>>>>>>>>> >>>>>>>>>> When executing: >>>>>>>>>> CREATE [TEMPORARY] CONNECTION mycat.mydb.OpenAPI WITH ( >>>>>>>>>> 'type' = 'basic', >>>>>>>>>> 'url' = 'api.example.com', >>>>>>>>>> 'username' = 'bob', >>>>>>>>>> 'password' = 'xyz' >>>>>>>>>> ) >>>>>>>>>> >>>>>>>>>> The catalog will receive something similar to: >>>>>>>>>> CREATE [TEMPORARY] CONNECTION mycat.mydb.OpenAPI WITH ( >>>>>>>>>> 'type' = 'basic', >>>>>>>>>> 'url' = 'api.example.com', >>>>>>>>>> 'secret.store' = 'azure-key-vault' >>>>>>>>>> 'secret.id' = 'secretId' >>>>>>>>>> ) >>>>>>>>>> >>>>>>>>>> - However, the exact property design is up to the connection >>>>>> factory. >>>>>>>>>> >>>>>>>>>> 4) Connection Usage >>>>>>>>>> >>>>>>>>>> CREATE TABLE t (...) USING CONNECTION mycat.mydb.OpenAPI; >>>>>>>>>> >>>>>>>>>> - MODEL, FUNCTION, TABLE DDL will support USING CONNECTION keyword >>>>>>>>> similar to BigQuery. >>>>>>>>>> - The connection will be provided in a table/model >>>>>> provider/function >>>>>>>>> definition factory. >>>>>>>>>> >>>>>>>>>> 5) CatalogStore / Catalog Initialization >>>>>>>>>> >>>>>>>>>> Catalog store or catalog can make use of SecretStore to retrieve >>>>>>>> initial >>>>>>>>> credentials for bootstrapping. All objects lower then catalog >>>>>>>> store/catalog >>>>>>>>> can then use connections. If you think we still need system level >>>>>>>>> connections, we can support CREATE SYSTEM CONNECTION GlobalName >> WITH >>>>>>> (..) >>>>>>>>> similar to SYSTEM functions directly store in a ConnectioManager in >>>>>>>>> TableEnvironment. But for now I would suggest to start simple with >>>>>>>>> per-catalog connections and later evolve the design. >>>>>>>>>> >>>>>>>>>> Dealing with secrets is a very sensitive topic and I'm clearly not >>>>>> an >>>>>>>>> expert on it. This is why we should try to push the problem to >>>>>> existing >>>>>>>>> solutions and don't start storing secrets in Flink in any way. >> Thus, >>>>>>> the >>>>>>>>> interfaces will be defined very generic. >>>>>>>>>> >>>>>>>>>> Looking forward to your feedback. >>>>>>>>>> >>>>>>>>>> Cheers, >>>>>>>>>> Timo >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 09.06.25 04:01, Leonard Xu wrote: >>>>>>>>>>> Thanks Timo for joining this thread. >>>>>>>>>>> I agree that this feature is needed by the community; the current >>>>>>>>> disagreement is only about the implementation method or solution. >>>>>>>>>>> Your thoughts looks generally good to me, looking forward to your >>>>>>>>> proposal. >>>>>>>>>>> Best, >>>>>>>>>>> Leonard >>>>>>>>>>>> 2025 6月 6 22:46,Timo Walther <twal...@apache.org> 写道: >>>>>>>>>>>> >>>>>>>>>>>> Hi everyone, >>>>>>>>>>>> >>>>>>>>>>>> thanks for this healthy discussion. Looking at high number of >>>>>>>>> participants, it looks like we definitely want this feature. We >> just >>>>>>> need >>>>>>>>> to figure out the "how". >>>>>>>>>>>> >>>>>>>>>>>> This reminds me very much of the discussion we had for CREATE >>>>>>>>> FUNCTION. There, we discussed whether functions should be named >>>>>>> globally >>>>>>>> or >>>>>>>>> catalog-specific. In the end, we decided for both `CREATE SYSTEM >>>>>>>> FUNCTION` >>>>>>>>> and `CREATE FUNCTION`, satisfying both the data platform team of an >>>>>>>>> organization (which might provide system functions) and individual >>>>>> data >>>>>>>>> teams or use cases (scoped by catalog/database). >>>>>>>>>>>> >>>>>>>>>>>> Looking at other modern vendors like Snowflake there is SECRET >>>>>>>> (scoped >>>>>>>>> to schema) [1] and API INTEGRATION [2] (scoped to account). So also >>>>>>> other >>>>>>>>> vendors offer global and per-team / per-use case connections >> details. >>>>>>>>>>>> >>>>>>>>>>>> In general, I think fitting connections into the existing >>>>>> concepts >>>>>>>> for >>>>>>>>> catalog objects (with three-part identifier) makes managing them >>>>>>> easier. >>>>>>>>> But I also see the need for global defaults. >>>>>>>>>>>> >>>>>>>>>>>> Btw keep in mind that a catalog implementation should only store >>>>>>>>> metadata. Similar how a CatalogTable doesn't store the actual >> data, a >>>>>>>>> CatalogConnection should not store the credentials. It should only >>>>>>> offer >>>>>>>> a >>>>>>>>> factory that allows for storing and retrieving them. In real world >>>>>>>>> scenarios a factory is most likely backed by a product like Azure >> Key >>>>>>>> Vault. >>>>>>>>>>>> >>>>>>>>>>>> So code-wise having a ConnectionManager that behaves similar to >>>>>>>>> FunctionManager sounds reasonable. >>>>>>>>>>>> >>>>>>>>>>>> +1 for having special syntax instead of using properties. This >>>>>>> allows >>>>>>>>> to access connections in tables, models, functions. And catalogs, >> if >>>>>> we >>>>>>>>> agree to have global ones as well. >>>>>>>>>>>> >>>>>>>>>>>> What do you think? >>>>>>>>>>>> >>>>>>>>>>>> Let me spend some more thoughts on this and come back with a >>>>>>> concrete >>>>>>>>> proposal by early next week. >>>>>>>>>>>> >>>>>>>>>>>> Cheers, >>>>>>>>>>>> Timo >>>>>>>>>>>> >>>>>>>>>>>> [1] >>>>>> https://docs.snowflake.com/en/sql-reference/sql/create-secret >>>>>>>>>>>> [2] >>>>>>>>> >>>>>> >> https://docs.snowflake.com/en/sql-reference/sql/create-api-integration >>>>>>>>>>>> >>>>>>>>>>>> On 04.06.25 10:47, Leonard Xu wrote: >>>>>>>>>>>>> Hey,Mayank >>>>>>>>>>>>> Please see my feedback as following: >>>>>>>>>>>>> 1. One of the motivations of this FLIP is to improve security. >>>>>>>>> However, the current design stores all connection information in >> the >>>>>>>>> catalog, >>>>>>>>>>>>> and each Flink SQL job reads from the catalog during >>>>>> compilation. >>>>>>>> The >>>>>>>>> connection information is passed between SQL Gateway and the >>>>>>>>>>>>> catalog in plaintext, which actually introduces new security >>>>>>> risks. >>>>>>>>>>>>> 2. The name "Connection" should be changed to something like >>>>>>>>> ConnectionSpec to clearly indicate that it is a object containing >>>>>> only >>>>>>>>> static >>>>>>>>>>>>> properties without a lifecycle. Putting aside the naming issue, >>>>>> I >>>>>>>>> think the current model and hierarchy design is somewhat strange. >>>>>>> Storing >>>>>>>>>>>>> various kinds of connections (e.g., Kafka, MySQL) in the same >>>>>>>> Catalog >>>>>>>>> with hierarchical identifiers like >>>>>> catalog-name.db-name.connection-name >>>>>>>>>>>>> raises the following questions: >>>>>>>>>>>>> (1) What is the purpose of this hierarchical structure of >>>>>>> Connection >>>>>>>>> object ? >>>>>>>>>>>>> (2) If we can use a Connection to create a MySQL table, why >>>>>> can't >>>>>>> we >>>>>>>>> use a Connection to create a MySQL Catalog? >>>>>>>>>>>>> 3. Regarding the connector usage examples given in this FLIP: >>>>>>>>>>>>> ```sql >>>>>>>>>>>>> 1 -- Example 2: Using connection for jdbc tables >>>>>>>>>>>>> 2 CREATE OR REPLACE CONNECTION mysql_customer_db >>>>>>>>>>>>> 3 WITH ( >>>>>>>>>>>>> 4 'type' = 'jdbc', >>>>>>>>>>>>> 5 'jdbc.url' = 'jdbc:mysql:// >>>>>>>>> customer-db.example.com:3306/customerdb', >>>>>>>>>>>>> 6 'jdbc.connection.ssl.enabled' = 'true' >>>>>>>>>>>>> 7 ); >>>>>>>>>>>>> 8 >>>>>>>>>>>>> 9 CREATE TABLE customers ( >>>>>>>>>>>>> 10 customer_id INT, >>>>>>>>>>>>> 11 PRIMARY KEY (customer_id) NOT ENFORCED >>>>>>>>>>>>> 12 ) WITH ( >>>>>>>>>>>>> 13 'connector' = 'jdbc', >>>>>>>>>>>>> 14 'jdbc.connection' = 'mysql_customer_db', >>>>>>>>>>>>> 15 'jdbc.connection.ssl.enabled' = 'true', >>>>>>>>>>>>> 16 'jdbc.connection.max-retry-timeout' = '60s', >>>>>>>>>>>>> 17 'jdbc.table-name' = 'customers', >>>>>>>>>>>>> 18 'jdbc.lookup.cache' = 'PARTIAL' >>>>>>>>>>>>> 19 ); >>>>>>>>>>>>> ``` >>>>>>>>>>>>> I see three issues from SQL semantics and Connector >>>>>> compatibility >>>>>>>>> perspectives: >>>>>>>>>>>>> (1) Look at line 14: `mysql_customer_db` is an object >> identifier >>>>>>> of >>>>>>>> a >>>>>>>>> CONNECTION defined in SQL. However, this identifier is referenced >>>>>>>>>>>>> via a string value inside the table’s WITH clause, which >>>>>> feel >>>>>>>>> hack for me. >>>>>>>>>>>>> (2) Look at lines 14–16: the use of the specific prefix >>>>>>>>> `jdbc.connection` will confuse users because `connection.xx` maybe >>>>>>>> already >>>>>>>>> used as >>>>>>>>>>>>> a prefix for existing configuration items. >>>>>>>>>>>>> (3) Look at lines 14–18: Why do all existing configuration >>>>>> options >>>>>>>>> need to be prefixed with `jdbc`, even they’re not related to >>>>>> Connection >>>>>>>>> properties? >>>>>>>>>>>>> This completely changes user habits — is it backward >> compatible? >>>>>>>>>>>>> In my opinion, Connection should be a model independent of >> both >>>>>>>>> Catalog and Table, and can be referenced by all >>>>>> catalog/table/udf/model >>>>>>>>> object. >>>>>>>>>>>>> It should be managed by a Component such as a ConnectionManager >>>>>> to >>>>>>>>> enable reuse. For security purposes, authentication mechanisms >> could >>>>>>>>>>>>> be supported within the ConnectionManager. >>>>>>>>>>>>> Best, >>>>>>>>>>>>> Leonard >>>>>>>>>>>>>> 2025 6月 4 02:04,Martijn Visser <martijnvis...@apache.org> 写道: >>>>>>>>>>>>>> >>>>>>>>>>>>>> Hi all, >>>>>>>>>>>>>> >>>>>>>>>>>>>> First of all, I think having a Connection resource is >> something >>>>>>>> that >>>>>>>>> will >>>>>>>>>>>>>> be beneficial for Apache Flink. I could see that being >> extended >>>>>>> in >>>>>>>>> the >>>>>>>>>>>>>> future to allow for easier secret handling [1]. >>>>>>>>>>>>>> In my mental mind, I'm comparing this proposal against SQL/MED >>>>>>> from >>>>>>>>> the ISO >>>>>>>>>>>>>> standard [2]. I do think that SQL/MED isn't a very user >>>>>> friendly >>>>>>>>> syntax >>>>>>>>>>>>>> though, looking at Postgres for example [3]. >>>>>>>>>>>>>> >>>>>>>>>>>>>> I think it's a valid question if Connection should be >>>>>> considered >>>>>>>>> with a >>>>>>>>>>>>>> catalog or database-level scope. @Ryan can you share something >>>>>>>> more, >>>>>>>>> since >>>>>>>>>>>>>> you've mentioned "Note: I much prefer catalogs for this case. >>>>>>> Which >>>>>>>>> is what >>>>>>>>>>>>>> we use internally to manage connection properties". It looks >>>>>> like >>>>>>>>> there >>>>>>>>>>>>>> isn't a strong favourable approach looking at other vendors >>>>>>> (like, >>>>>>>>>>>>>> Databricks does scopes it on a Unity catalog, Snowflake on a >>>>>>>> database >>>>>>>>>>>>>> level). >>>>>>>>>>>>>> >>>>>>>>>>>>>> Also looking forward to Leonard's input. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Best regards, >>>>>>>>>>>>>> >>>>>>>>>>>>>> Martijn >>>>>>>>>>>>>> >>>>>>>>>>>>>> [1] https://issues.apache.org/jira/browse/FLINK-36818 >>>>>>>>>>>>>> [2] https://www.iso.org/standard/84804.html >>>>>>>>>>>>>> [3] >>>>>>> https://www.postgresql.org/docs/current/sql-createserver.html >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Fri, May 30, 2025 at 5:07 AM Leonard Xu <xbjt...@gmail.com >>> >>>>>>>>> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hey Mayank. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks for the FLIP, I went through this FLIP quickly and >>>>>> found >>>>>>>> some >>>>>>>>>>>>>>> issues which I think we >>>>>>>>>>>>>>> need to deep discuss later. As we’re on a short Dragon boat >>>>>>>>> Festival, >>>>>>>>>>>>>>> could you kindly hold >>>>>>>>>>>>>>> on this thread? and we will back to continue the FLIP >> discuss. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>> Leonard >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> 2025 4月 29 23:07,Mayank Juneja <mayankjunej...@gmail.com> >>>>>> 写道: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Hi all, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> I would like to open up for discussion a new FLIP-529 [1]. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Motivation: >>>>>>>>>>>>>>>> Currently, Flink SQL handles external connectivity by >>>>>> defining >>>>>>>>> endpoints >>>>>>>>>>>>>>>> and credentials in table configuration. This approach >>>>>> prevents >>>>>>>>>>>>>>> reusability >>>>>>>>>>>>>>>> of these connections and makes table definition less secure >>>>>> by >>>>>>>>> exposing >>>>>>>>>>>>>>>> sensitive information. >>>>>>>>>>>>>>>> We propose the introduction of a new "connection" resource >> in >>>>>>>>> Flink. This >>>>>>>>>>>>>>>> will be a pluggable resource configured with a remote >>>>>> endpoint >>>>>>>> and >>>>>>>>>>>>>>>> associated access key. Once defined, connections can be >>>>>> reused >>>>>>>>> across >>>>>>>>>>>>>>> table >>>>>>>>>>>>>>>> definitions, and eventually for model definition (as >>>>>> discussed >>>>>>> in >>>>>>>>>>>>>>> FLIP-437) >>>>>>>>>>>>>>>> for inference, enabling seamless and secure integration with >>>>>>>>> external >>>>>>>>>>>>>>>> systems. >>>>>>>>>>>>>>>> The connection resource will provide a new, optional way to >>>>>>>> manage >>>>>>>>>>>>>>> external >>>>>>>>>>>>>>>> connectivity in Flink. Existing methods for table >> definitions >>>>>>>> will >>>>>>>>> remain >>>>>>>>>>>>>>>> unchanged. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> [1] https://cwiki.apache.org/confluence/x/cYroF >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Best Regards, >>>>>>>>>>>>>>>> Mayank Juneja >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> *Mayank Juneja* >>>>>>>> Product Manager | Data Streaming and AI >>>>>>>> >>>>>>> >>>>>> >>>>> >>>>> >>>> >>>> >> >>