Skip to content

Commit 634c160

Browse files
committed
[DOP-30632] Implement Iceberg BearerAuth instead of BasicAuth
1 parent dcfe06f commit 634c160

File tree

18 files changed

+119
-153
lines changed

18 files changed

+119
-153
lines changed

.env.docker.test

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,6 @@ TEST_HIVE_PASSWORD=123UsedForTestOnly@!
5454

5555
TEST_ICEBERG_REST_CATALOG_URL_FOR_CONFTEST=http://test-iceberg-rest:8181
5656
TEST_ICEBERG_REST_CATALOG_URL_FOR_WORKER=http://test-iceberg-rest:8181
57-
TEST_ICEBERG_REST_CATALOG_USERNAME=syncmaster
58-
TEST_ICEBERG_REST_CATALOG_PASSWORD=123UsedForTestOnly@!
5957
TEST_ICEBERG_S3_WAREHOUSE_PATH=/data
6058
TEST_ICEBERG_S3_REGION=us-east-1
6159
TEST_ICEBERG_S3_BUCKET_STYLE=path

.env.local.test

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,6 @@ export TEST_HIVE_PASSWORD=123UsedForTestOnly@!
5454

5555
export TEST_ICEBERG_REST_CATALOG_URL_FOR_CONFTEST=http://localhost:8181
5656
export TEST_ICEBERG_REST_CATALOG_URL_FOR_WORKER=http://test-iceberg-rest:8181
57-
export TEST_ICEBERG_REST_CATALOG_USERNAME=syncmaster
58-
export TEST_ICEBERG_REST_CATALOG_PASSWORD=123UsedForTestOnly@!
5957
export TEST_ICEBERG_S3_WAREHOUSE_PATH=/data
6058
export TEST_ICEBERG_S3_REGION=us-east-1
6159
export TEST_ICEBERG_S3_BUCKET_STYLE=path

syncmaster/dto/connections.py

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,9 @@ class IcebergRESTCatalogS3DirectConnectionBaseDTO(IcebergConnectionBaseDTO):
9696

9797

9898
@dataclass(kw_only=True)
99-
class IcebergRESTCatalogBasicAuthS3BasicDTO(IcebergRESTCatalogS3DirectConnectionBaseDTO):
100-
rest_catalog_username: str
101-
rest_catalog_password: str
102-
rest_catalog_auth_type: Literal["basic"] = "basic"
99+
class IcebergRESTCatalogBearerAuthS3BasicDTO(IcebergRESTCatalogS3DirectConnectionBaseDTO):
100+
rest_catalog_token: str
101+
rest_catalog_auth_type: Literal["bearer"] = "bearer"
103102

104103

105104
@dataclass(kw_only=True)
@@ -121,10 +120,9 @@ class IcebergRESTCatalogS3DelegatedConnectionBaseDTO(IcebergConnectionBaseDTO):
121120

122121

123122
@dataclass(kw_only=True)
124-
class IcebergRESTCatalogBasicAuthS3DelegatedDTO(IcebergRESTCatalogS3DelegatedConnectionBaseDTO):
125-
rest_catalog_username: str
126-
rest_catalog_password: str
127-
rest_catalog_auth_type: Literal["basic"] = "basic"
123+
class IcebergRESTCatalogBearerAuthS3DelegatedDTO(IcebergRESTCatalogS3DelegatedConnectionBaseDTO):
124+
rest_catalog_token: str
125+
rest_catalog_auth_type: Literal["bearer"] = "bearer"
128126

129127

130128
@dataclass(kw_only=True)
@@ -141,18 +139,18 @@ class IcebergRESTCatalogOAuth2ClientCredentialsS3DelegatedDTO(IcebergRESTCatalog
141139
# TODO: should be refactored
142140
def get_iceberg_rest_catalog_s3_direct_connection_dto(
143141
**data,
144-
) -> IcebergRESTCatalogBasicAuthS3BasicDTO | IcebergRESTCatalogOAuth2ClientCredentialsS3BasicDTO:
142+
) -> IcebergRESTCatalogBearerAuthS3BasicDTO | IcebergRESTCatalogOAuth2ClientCredentialsS3BasicDTO:
145143
if "rest_catalog_oauth2_client_id" in data:
146144
return IcebergRESTCatalogOAuth2ClientCredentialsS3BasicDTO(**data)
147-
return IcebergRESTCatalogBasicAuthS3BasicDTO(**data)
145+
return IcebergRESTCatalogBearerAuthS3BasicDTO(**data)
148146

149147

150148
def get_iceberg_rest_catalog_s3_delegated_connection_dto(
151149
**data,
152-
) -> IcebergRESTCatalogBasicAuthS3DelegatedDTO | IcebergRESTCatalogOAuth2ClientCredentialsS3DelegatedDTO:
150+
) -> IcebergRESTCatalogBearerAuthS3DelegatedDTO | IcebergRESTCatalogOAuth2ClientCredentialsS3DelegatedDTO:
153151
if "rest_catalog_oauth2_client_id" in data:
154152
return IcebergRESTCatalogOAuth2ClientCredentialsS3DelegatedDTO(**data)
155-
return IcebergRESTCatalogBasicAuthS3DelegatedDTO(**data)
153+
return IcebergRESTCatalogBearerAuthS3DelegatedDTO(**data)
156154

157155

158156
def get_iceberg_connection_dto(**data) -> IcebergConnectionBaseDTO:

syncmaster/schemas/v1/auth/iceberg_rest_s3_delegated/__init__.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44

55
from pydantic import Field
66

7-
from syncmaster.schemas.v1.auth.iceberg_rest_s3_delegated.basic import (
8-
CreateIcebergRESTCatalogBasicAuthSchema,
9-
ReadIcebergRESTCatalogBasicAuthSchema,
10-
UpdateIcebergRESTCatalogBasicAuthSchema,
7+
from syncmaster.schemas.v1.auth.iceberg_rest_s3_delegated.bearer import (
8+
CreateIcebergRESTCatalogBearerAuthSchema,
9+
ReadIcebergRESTCatalogBearerAuthSchema,
10+
UpdateIcebergRESTCatalogBearerAuthSchema,
1111
)
1212
from syncmaster.schemas.v1.auth.iceberg_rest_s3_delegated.oauth2_client_credentials import (
1313
CreateIcebergRESTCatalogOAuth2ClientCredentialsAuthSchema,
@@ -16,16 +16,16 @@
1616
)
1717

1818
CreateIcebergRESTCatalogS3DelegatedConnectionAuthDataSchema = Annotated[
19-
CreateIcebergRESTCatalogBasicAuthSchema | CreateIcebergRESTCatalogOAuth2ClientCredentialsAuthSchema,
19+
CreateIcebergRESTCatalogBearerAuthSchema | CreateIcebergRESTCatalogOAuth2ClientCredentialsAuthSchema,
2020
Field(discriminator="type"),
2121
]
2222

2323
ReadIcebergRESTCatalogS3DelegatedConnectionAuthDataSchema = Annotated[
24-
ReadIcebergRESTCatalogBasicAuthSchema | ReadIcebergRESTCatalogOAuth2ClientCredentialsAuthSchema,
24+
ReadIcebergRESTCatalogBearerAuthSchema | ReadIcebergRESTCatalogOAuth2ClientCredentialsAuthSchema,
2525
Field(discriminator="type"),
2626
]
2727

2828
UpdateIcebergRESTCatalogS3DelegatedConnectionAuthDataSchema = Annotated[
29-
UpdateIcebergRESTCatalogBasicAuthSchema | UpdateIcebergRESTCatalogOAuth2ClientCredentialsAuthSchema,
29+
UpdateIcebergRESTCatalogBearerAuthSchema | UpdateIcebergRESTCatalogOAuth2ClientCredentialsAuthSchema,
3030
Field(discriminator="type"),
3131
]

syncmaster/schemas/v1/auth/iceberg_rest_s3_delegated/basic.py

Lines changed: 0 additions & 21 deletions
This file was deleted.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# SPDX-FileCopyrightText: 2023-2024 MTS PJSC
2+
# SPDX-License-Identifier: Apache-2.0
3+
from typing import Literal
4+
5+
from pydantic import BaseModel, Field, SecretStr
6+
7+
8+
class ReadIcebergRESTCatalogBearerAuthSchema(BaseModel):
9+
type: Literal["iceberg_rest_bearer"] = Field(description="Auth type")
10+
11+
12+
class CreateIcebergRESTCatalogBearerAuthSchema(ReadIcebergRESTCatalogBearerAuthSchema):
13+
rest_catalog_token: SecretStr
14+
15+
16+
class UpdateIcebergRESTCatalogBearerAuthSchema(ReadIcebergRESTCatalogBearerAuthSchema):
17+
rest_catalog_token: SecretStr | None = None
18+
19+
def get_secret_fields(self) -> tuple[str, ...]:
20+
return ("rest_catalog_token",)

syncmaster/schemas/v1/auth/iceberg_rest_s3_direct/__init__.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44

55
from pydantic import Field
66

7-
from syncmaster.schemas.v1.auth.iceberg_rest_s3_direct.basic import (
8-
CreateIcebergRESTCatalogBasicS3BasicAuthSchema,
9-
ReadIcebergRESTCatalogBasicS3BasicAuthSchema,
10-
UpdateIcebergRESTCatalogBasicS3BasicAuthSchema,
7+
from syncmaster.schemas.v1.auth.iceberg_rest_s3_direct.bearer import (
8+
CreateIcebergRESTCatalogBearerS3BasicAuthSchema,
9+
ReadIcebergRESTCatalogBearerS3BasicAuthSchema,
10+
UpdateIcebergRESTCatalogBearerS3BasicAuthSchema,
1111
)
1212
from syncmaster.schemas.v1.auth.iceberg_rest_s3_direct.oauth2_client_credentials import (
1313
CreateIcebergRESTCatalogOAuth2ClientCredentialsS3BasicAuthSchema,
@@ -16,16 +16,16 @@
1616
)
1717

1818
CreateIcebergRESTCatalogS3DirectConnectionAuthDataSchema = Annotated[
19-
CreateIcebergRESTCatalogBasicS3BasicAuthSchema | CreateIcebergRESTCatalogOAuth2ClientCredentialsS3BasicAuthSchema,
19+
CreateIcebergRESTCatalogBearerS3BasicAuthSchema | CreateIcebergRESTCatalogOAuth2ClientCredentialsS3BasicAuthSchema,
2020
Field(discriminator="type"),
2121
]
2222

2323
ReadIcebergRESTCatalogS3DirectConnectionAuthDataSchema = Annotated[
24-
ReadIcebergRESTCatalogBasicS3BasicAuthSchema | ReadIcebergRESTCatalogOAuth2ClientCredentialsS3BasicAuthSchema,
24+
ReadIcebergRESTCatalogBearerS3BasicAuthSchema | ReadIcebergRESTCatalogOAuth2ClientCredentialsS3BasicAuthSchema,
2525
Field(discriminator="type"),
2626
]
2727

2828
UpdateIcebergRESTCatalogS3DirectConnectionAuthDataSchema = Annotated[
29-
UpdateIcebergRESTCatalogBasicS3BasicAuthSchema | UpdateIcebergRESTCatalogOAuth2ClientCredentialsS3BasicAuthSchema,
29+
UpdateIcebergRESTCatalogBearerS3BasicAuthSchema | UpdateIcebergRESTCatalogOAuth2ClientCredentialsS3BasicAuthSchema,
3030
Field(discriminator="type"),
3131
]

syncmaster/schemas/v1/auth/iceberg_rest_s3_direct/basic.py

Lines changed: 0 additions & 24 deletions
This file was deleted.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# SPDX-FileCopyrightText: 2023-2024 MTS PJSC
2+
# SPDX-License-Identifier: Apache-2.0
3+
from typing import Literal
4+
5+
from pydantic import BaseModel, Field, SecretStr
6+
7+
8+
class ReadIcebergRESTCatalogBearerS3BasicAuthSchema(BaseModel):
9+
type: Literal["iceberg_rest_bearer_s3_basic"] = Field(description="Auth type")
10+
s3_access_key: str
11+
12+
13+
class CreateIcebergRESTCatalogBearerS3BasicAuthSchema(ReadIcebergRESTCatalogBearerS3BasicAuthSchema):
14+
rest_catalog_token: SecretStr
15+
s3_secret_key: SecretStr
16+
17+
18+
class UpdateIcebergRESTCatalogBearerS3BasicAuthSchema(ReadIcebergRESTCatalogBearerS3BasicAuthSchema):
19+
rest_catalog_token: SecretStr | None = None
20+
s3_secret_key: SecretStr | None = None
21+
22+
def get_secret_fields(self) -> tuple[str, ...]:
23+
return ("rest_catalog_token", "s3_secret_key")

syncmaster/schemas/v1/connections/connection_base.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
ReadSambaAuthSchema,
99
)
1010
from syncmaster.schemas.v1.auth.iceberg_rest_s3_delegated import (
11-
ReadIcebergRESTCatalogBasicAuthSchema,
11+
ReadIcebergRESTCatalogBearerAuthSchema,
1212
ReadIcebergRESTCatalogOAuth2ClientCredentialsAuthSchema,
1313
)
1414
from syncmaster.schemas.v1.auth.iceberg_rest_s3_direct import (
15-
ReadIcebergRESTCatalogBasicS3BasicAuthSchema,
15+
ReadIcebergRESTCatalogBearerS3BasicAuthSchema,
1616
ReadIcebergRESTCatalogOAuth2ClientCredentialsS3BasicAuthSchema,
1717
)
1818
from syncmaster.schemas.v1.types import NameConstr
@@ -21,9 +21,9 @@
2121
ReadBasicAuthSchema
2222
| ReadS3AuthSchema
2323
| ReadSambaAuthSchema
24-
| ReadIcebergRESTCatalogBasicS3BasicAuthSchema
24+
| ReadIcebergRESTCatalogBearerS3BasicAuthSchema
2525
| ReadIcebergRESTCatalogOAuth2ClientCredentialsS3BasicAuthSchema
26-
| ReadIcebergRESTCatalogBasicAuthSchema
26+
| ReadIcebergRESTCatalogBearerAuthSchema
2727
| ReadIcebergRESTCatalogOAuth2ClientCredentialsAuthSchema
2828
)
2929

0 commit comments

Comments
 (0)