From de7bcdcfeea5f77d4aa71e8f2a9a9262ca1bb7d3 Mon Sep 17 00:00:00 2001 From: facundo lopez janza Date: Thu, 31 Oct 2024 16:51:39 -0300 Subject: [PATCH 1/6] add masking_strategy_override to FidesMeta --- src/fideslang/models.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/fideslang/models.py b/src/fideslang/models.py index bb15f25..837461d 100644 --- a/src/fideslang/models.py +++ b/src/fideslang/models.py @@ -7,7 +7,7 @@ from datetime import datetime from enum import Enum -from typing import Annotated, Dict, List, Optional, Union +from typing import Annotated, Dict, List, Optional, Union, Any from packaging.version import InvalidVersion, Version from pydantic import ( @@ -73,6 +73,9 @@ class MaskingStrategyOverride(BaseModel): strategy: MaskingStrategies +class FieldMaskingStrategyOverride(BaseModel): + strategy: str + configuration: Dict[str, Any] class FidesModel(BaseModel): """The base model for most top-level Fides objects.""" @@ -418,6 +421,10 @@ class FidesMeta(BaseModel): default=None, description="Optionally specify that a field may be used as a custom request field in DSRs. The value is the name of the field in the DSR.", ) + masking_strategy_override = Optional[FieldMaskingStrategyOverride] = Field( + default=None, + description="Optionally specify a masking strategy override for this field.", + ) @field_validator("data_type") @classmethod From e165d4c6dbc44b3230a085ab10402b44638c583c Mon Sep 17 00:00:00 2001 From: facundo lopez janza Date: Fri, 1 Nov 2024 09:36:01 -0300 Subject: [PATCH 2/6] fix attribute definition --- src/fideslang/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fideslang/models.py b/src/fideslang/models.py index 837461d..7823f4b 100644 --- a/src/fideslang/models.py +++ b/src/fideslang/models.py @@ -421,7 +421,7 @@ class FidesMeta(BaseModel): default=None, description="Optionally specify that a field may be used as a custom request field in DSRs. The value is the name of the field in the DSR.", ) - masking_strategy_override = Optional[FieldMaskingStrategyOverride] = Field( + masking_strategy_override: Optional[FieldMaskingStrategyOverride] = Field( default=None, description="Optionally specify a masking strategy override for this field.", ) From 85be4f09747a55fd799d85fa9052082cdd539c10 Mon Sep 17 00:00:00 2001 From: facundo lopez janza Date: Fri, 1 Nov 2024 14:36:53 -0300 Subject: [PATCH 3/6] fixed static_checks --- src/fideslang/models.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/fideslang/models.py b/src/fideslang/models.py index 7823f4b..d9408ec 100644 --- a/src/fideslang/models.py +++ b/src/fideslang/models.py @@ -7,7 +7,7 @@ from datetime import datetime from enum import Enum -from typing import Annotated, Dict, List, Optional, Union, Any +from typing import Annotated, Dict, List, Optional, Union from packaging.version import InvalidVersion, Version from pydantic import ( @@ -69,13 +69,17 @@ class MaskingStrategies(str, Enum): class MaskingStrategyOverride(BaseModel): - """Overrides policy-level masking strategies.""" + """Overrides policy-level masking strategies in collections.""" strategy: MaskingStrategies + class FieldMaskingStrategyOverride(BaseModel): + """Overrides policy-level masking strategies in fields.""" + strategy: str - configuration: Dict[str, Any] + configuration: Dict + class FidesModel(BaseModel): """The base model for most top-level Fides objects.""" From 592253bdbd86737eca89870682763716d22108a9 Mon Sep 17 00:00:00 2001 From: facundo lopez janza Date: Fri, 1 Nov 2024 15:10:27 -0300 Subject: [PATCH 4/6] improve docstring and add changelog item --- CHANGELOG.md | 1 + src/fideslang/models.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c5311f..3c1a1c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ The types of changes are: ## [Unreleased](https://github.com/ethyca/fideslang/compare/3.0.7...main) +- Add field-level masking strategy overrides [#23](https://github.com/ethyca/fideslang/pull/23) ## [3.0.7](https://github.com/ethyca/fideslang/compare/3.0.6...3.0.7) diff --git a/src/fideslang/models.py b/src/fideslang/models.py index d9408ec..5f828df 100644 --- a/src/fideslang/models.py +++ b/src/fideslang/models.py @@ -69,13 +69,13 @@ class MaskingStrategies(str, Enum): class MaskingStrategyOverride(BaseModel): - """Overrides policy-level masking strategies in collections.""" + """Overrides collection-level masking strategies.""" strategy: MaskingStrategies class FieldMaskingStrategyOverride(BaseModel): - """Overrides policy-level masking strategies in fields.""" + """Overrides field-level masking strategies.""" strategy: str configuration: Dict From 77ed96a01846f3a2d1bd46da0a4d5c4f781ecd4f Mon Sep 17 00:00:00 2001 From: facundo lopez janza Date: Mon, 4 Nov 2024 17:38:00 -0300 Subject: [PATCH 5/6] make configuration an optional attribute --- src/fideslang/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fideslang/models.py b/src/fideslang/models.py index 5f828df..aa31891 100644 --- a/src/fideslang/models.py +++ b/src/fideslang/models.py @@ -78,7 +78,7 @@ class FieldMaskingStrategyOverride(BaseModel): """Overrides field-level masking strategies.""" strategy: str - configuration: Dict + configuration: Optional[Dict] = {} class FidesModel(BaseModel): From 0b13cdfcf36c521b671355f2504378234f935c43 Mon Sep 17 00:00:00 2001 From: facundo lopez janza Date: Tue, 5 Nov 2024 10:00:41 -0300 Subject: [PATCH 6/6] correct typing and add ignores --- src/fideslang/models.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/fideslang/models.py b/src/fideslang/models.py index aa31891..dcab6a9 100644 --- a/src/fideslang/models.py +++ b/src/fideslang/models.py @@ -7,7 +7,7 @@ from datetime import datetime from enum import Enum -from typing import Annotated, Dict, List, Optional, Union +from typing import Annotated, Dict, List, Optional, Union, Any from packaging.version import InvalidVersion, Version from pydantic import ( @@ -74,11 +74,11 @@ class MaskingStrategyOverride(BaseModel): strategy: MaskingStrategies -class FieldMaskingStrategyOverride(BaseModel): +class FieldMaskingStrategyOverride(BaseModel): # type: ignore[misc] """Overrides field-level masking strategies.""" strategy: str - configuration: Optional[Dict] = {} + configuration: Optional[Dict[str, Any]] = {} # type: ignore[misc] class FidesModel(BaseModel):