pulumi-snowflake 0.50.3a1710160126__py3-none-any.whl → 1.2.0a1736835738__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pulumi-snowflake might be problematic. Click here for more details.
- pulumi_snowflake/__init__.py +224 -172
- pulumi_snowflake/_inputs.py +52857 -1665
- pulumi_snowflake/_utilities.py +41 -5
- pulumi_snowflake/account.py +188 -218
- pulumi_snowflake/account_authentication_policy_attachment.py +149 -0
- pulumi_snowflake/account_parameter.py +21 -48
- pulumi_snowflake/account_password_policy_attachment.py +7 -32
- pulumi_snowflake/account_role.py +250 -0
- pulumi_snowflake/alert.py +38 -47
- pulumi_snowflake/api_authentication_integration_with_authorization_code_grant.py +704 -0
- pulumi_snowflake/api_authentication_integration_with_client_credentials.py +657 -0
- pulumi_snowflake/api_authentication_integration_with_jwt_bearer.py +692 -0
- pulumi_snowflake/api_integration.py +33 -52
- pulumi_snowflake/authentication_policy.py +622 -0
- pulumi_snowflake/config/__init__.pyi +76 -99
- pulumi_snowflake/config/outputs.py +5 -0
- pulumi_snowflake/config/vars.py +93 -124
- pulumi_snowflake/cortex_search_service.py +596 -0
- pulumi_snowflake/database.py +819 -213
- pulumi_snowflake/database_role.py +81 -44
- pulumi_snowflake/dynamic_table.py +42 -49
- pulumi_snowflake/email_notification_integration.py +33 -28
- pulumi_snowflake/{unsafe_execute.py → execute.py} +36 -39
- pulumi_snowflake/external_function.py +54 -75
- pulumi_snowflake/external_oauth_integration.py +593 -542
- pulumi_snowflake/external_table.py +67 -90
- pulumi_snowflake/external_volume.py +382 -0
- pulumi_snowflake/failover_group.py +57 -98
- pulumi_snowflake/file_format.py +33 -28
- pulumi_snowflake/function_java.py +1211 -0
- pulumi_snowflake/function_javascript.py +882 -0
- pulumi_snowflake/function_python.py +1212 -0
- pulumi_snowflake/function_scala.py +1212 -0
- pulumi_snowflake/function_sql.py +835 -0
- pulumi_snowflake/get_account_roles.py +129 -0
- pulumi_snowflake/get_accounts.py +53 -22
- pulumi_snowflake/get_alerts.py +22 -9
- pulumi_snowflake/get_connections.py +109 -0
- pulumi_snowflake/get_cortex_search_services.py +216 -0
- pulumi_snowflake/get_current_account.py +24 -13
- pulumi_snowflake/get_current_role.py +14 -7
- pulumi_snowflake/get_database.py +25 -9
- pulumi_snowflake/get_database_role.py +162 -0
- pulumi_snowflake/get_database_roles.py +79 -47
- pulumi_snowflake/get_databases.py +91 -73
- pulumi_snowflake/get_dynamic_tables.py +36 -19
- pulumi_snowflake/get_external_functions.py +28 -9
- pulumi_snowflake/get_external_tables.py +28 -9
- pulumi_snowflake/get_failover_groups.py +18 -7
- pulumi_snowflake/get_file_formats.py +28 -9
- pulumi_snowflake/get_functions.py +28 -9
- pulumi_snowflake/get_grants.py +207 -84
- pulumi_snowflake/get_masking_policies.py +91 -51
- pulumi_snowflake/get_materialized_views.py +28 -9
- pulumi_snowflake/get_network_policies.py +129 -0
- pulumi_snowflake/get_parameters.py +38 -15
- pulumi_snowflake/get_pipes.py +28 -9
- pulumi_snowflake/get_procedures.py +28 -9
- pulumi_snowflake/get_resource_monitors.py +37 -24
- pulumi_snowflake/get_row_access_policies.py +91 -51
- pulumi_snowflake/get_schemas.py +145 -41
- pulumi_snowflake/get_secrets.py +200 -0
- pulumi_snowflake/get_security_integrations.py +129 -0
- pulumi_snowflake/get_sequences.py +28 -9
- pulumi_snowflake/get_shares.py +18 -9
- pulumi_snowflake/get_stages.py +28 -9
- pulumi_snowflake/get_storage_integrations.py +16 -9
- pulumi_snowflake/get_streamlits.py +170 -0
- pulumi_snowflake/get_streams.py +114 -54
- pulumi_snowflake/get_system_generate_scim_access_token.py +18 -9
- pulumi_snowflake/get_system_get_aws_sns_iam_policy.py +32 -7
- pulumi_snowflake/get_system_get_private_link_config.py +120 -5
- pulumi_snowflake/get_system_get_snowflake_platform_info.py +15 -7
- pulumi_snowflake/get_tables.py +28 -9
- pulumi_snowflake/get_tags.py +130 -0
- pulumi_snowflake/get_tasks.py +134 -54
- pulumi_snowflake/get_users.py +116 -44
- pulumi_snowflake/get_views.py +114 -54
- pulumi_snowflake/get_warehouses.py +79 -26
- pulumi_snowflake/grant_account_role.py +28 -75
- pulumi_snowflake/grant_application_role.py +257 -0
- pulumi_snowflake/grant_database_role.py +35 -94
- pulumi_snowflake/grant_ownership.py +382 -0
- pulumi_snowflake/grant_privileges_to_account_role.py +42 -78
- pulumi_snowflake/grant_privileges_to_database_role.py +37 -383
- pulumi_snowflake/grant_privileges_to_share.py +96 -44
- pulumi_snowflake/legacy_service_user.py +3670 -0
- pulumi_snowflake/managed_account.py +40 -11
- pulumi_snowflake/masking_policy.py +213 -310
- pulumi_snowflake/materialized_view.py +62 -71
- pulumi_snowflake/network_policy.py +217 -61
- pulumi_snowflake/network_policy_attachment.py +5 -34
- pulumi_snowflake/network_rule.py +473 -0
- pulumi_snowflake/notification_integration.py +49 -84
- pulumi_snowflake/oauth_integration_for_custom_clients.py +906 -0
- pulumi_snowflake/{oauth_integration.py → oauth_integration_for_partner_applications.py} +191 -192
- pulumi_snowflake/object_parameter.py +10 -101
- pulumi_snowflake/outputs.py +49200 -2928
- pulumi_snowflake/password_policy.py +41 -28
- pulumi_snowflake/pipe.py +33 -4
- pulumi_snowflake/primary_connection.py +330 -0
- pulumi_snowflake/procedure_java.py +1273 -0
- pulumi_snowflake/procedure_javascript.py +895 -0
- pulumi_snowflake/procedure_python.py +1226 -0
- pulumi_snowflake/procedure_scala.py +1273 -0
- pulumi_snowflake/procedure_sql.py +895 -0
- pulumi_snowflake/provider.py +378 -613
- pulumi_snowflake/pulumi-plugin.json +2 -1
- pulumi_snowflake/resource_monitor.py +118 -327
- pulumi_snowflake/row_access_policy.py +200 -149
- pulumi_snowflake/{saml_integration.py → saml2_integration.py} +356 -299
- pulumi_snowflake/schema.py +949 -178
- pulumi_snowflake/scim_integration.py +286 -109
- pulumi_snowflake/secondary_connection.py +339 -0
- pulumi_snowflake/secondary_database.py +1080 -0
- pulumi_snowflake/secret_with_authorization_code_grant.py +548 -0
- pulumi_snowflake/secret_with_basic_authentication.py +500 -0
- pulumi_snowflake/secret_with_client_credentials.py +511 -0
- pulumi_snowflake/secret_with_generic_string.py +452 -0
- pulumi_snowflake/sequence.py +9 -34
- pulumi_snowflake/service_user.py +3585 -0
- pulumi_snowflake/share.py +33 -28
- pulumi_snowflake/shared_database.py +939 -0
- pulumi_snowflake/stage.py +95 -84
- pulumi_snowflake/storage_integration.py +46 -4
- pulumi_snowflake/stream_on_directory_table.py +517 -0
- pulumi_snowflake/stream_on_external_table.py +632 -0
- pulumi_snowflake/stream_on_table.py +666 -0
- pulumi_snowflake/stream_on_view.py +666 -0
- pulumi_snowflake/streamlit.py +671 -0
- pulumi_snowflake/table.py +86 -97
- pulumi_snowflake/table_column_masking_policy_application.py +7 -14
- pulumi_snowflake/table_constraint.py +29 -172
- pulumi_snowflake/tag.py +142 -74
- pulumi_snowflake/tag_association.py +40 -215
- pulumi_snowflake/task.py +3048 -418
- pulumi_snowflake/user.py +3351 -384
- pulumi_snowflake/user_authentication_policy_attachment.py +197 -0
- pulumi_snowflake/user_password_policy_attachment.py +5 -4
- pulumi_snowflake/user_public_keys.py +5 -0
- pulumi_snowflake/view.py +466 -215
- pulumi_snowflake/warehouse.py +184 -168
- {pulumi_snowflake-0.50.3a1710160126.dist-info → pulumi_snowflake-1.2.0a1736835738.dist-info}/METADATA +7 -6
- pulumi_snowflake-1.2.0a1736835738.dist-info/RECORD +148 -0
- {pulumi_snowflake-0.50.3a1710160126.dist-info → pulumi_snowflake-1.2.0a1736835738.dist-info}/WHEEL +1 -1
- pulumi_snowflake/account_grant.py +0 -343
- pulumi_snowflake/database_grant.py +0 -495
- pulumi_snowflake/external_table_grant.py +0 -690
- pulumi_snowflake/failover_group_grant.py +0 -388
- pulumi_snowflake/file_format_grant.py +0 -635
- pulumi_snowflake/function.py +0 -872
- pulumi_snowflake/function_grant.py +0 -745
- pulumi_snowflake/get_role.py +0 -121
- pulumi_snowflake/get_roles.py +0 -120
- pulumi_snowflake/grant_privileges_to_role.py +0 -825
- pulumi_snowflake/integration_grant.py +0 -440
- pulumi_snowflake/masking_policy_grant.py +0 -542
- pulumi_snowflake/materialized_view_grant.py +0 -689
- pulumi_snowflake/pipe_grant.py +0 -587
- pulumi_snowflake/procedure.py +0 -887
- pulumi_snowflake/procedure_grant.py +0 -745
- pulumi_snowflake/resource_monitor_grant.py +0 -387
- pulumi_snowflake/role.py +0 -273
- pulumi_snowflake/role_grants.py +0 -352
- pulumi_snowflake/role_ownership_grant.py +0 -338
- pulumi_snowflake/row_access_policy_grant.py +0 -540
- pulumi_snowflake/schema_grant.py +0 -647
- pulumi_snowflake/sequence_grant.py +0 -635
- pulumi_snowflake/session_parameter.py +0 -332
- pulumi_snowflake/stage_grant.py +0 -635
- pulumi_snowflake/stream.py +0 -614
- pulumi_snowflake/stream_grant.py +0 -635
- pulumi_snowflake/table_grant.py +0 -677
- pulumi_snowflake/tag_grant.py +0 -532
- pulumi_snowflake/tag_masking_policy_association.py +0 -210
- pulumi_snowflake/task_grant.py +0 -635
- pulumi_snowflake/user_grant.py +0 -394
- pulumi_snowflake/user_ownership_grant.py +0 -286
- pulumi_snowflake/view_grant.py +0 -705
- pulumi_snowflake/warehouse_grant.py +0 -440
- pulumi_snowflake-0.50.3a1710160126.dist-info/RECORD +0 -136
- {pulumi_snowflake-0.50.3a1710160126.dist-info → pulumi_snowflake-1.2.0a1736835738.dist-info}/top_level.txt +0 -0
|
@@ -4,9 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
import copy
|
|
6
6
|
import warnings
|
|
7
|
+
import sys
|
|
7
8
|
import pulumi
|
|
8
9
|
import pulumi.runtime
|
|
9
10
|
from typing import Any, Mapping, Optional, Sequence, Union, overload
|
|
11
|
+
if sys.version_info >= (3, 11):
|
|
12
|
+
from typing import NotRequired, TypedDict, TypeAlias
|
|
13
|
+
else:
|
|
14
|
+
from typing_extensions import NotRequired, TypedDict, TypeAlias
|
|
10
15
|
from . import _utilities
|
|
11
16
|
from . import outputs
|
|
12
17
|
from ._inputs import *
|
|
@@ -16,74 +21,78 @@ __all__ = ['MaskingPolicyArgs', 'MaskingPolicy']
|
|
|
16
21
|
@pulumi.input_type
|
|
17
22
|
class MaskingPolicyArgs:
|
|
18
23
|
def __init__(__self__, *,
|
|
24
|
+
arguments: pulumi.Input[Sequence[pulumi.Input['MaskingPolicyArgumentArgs']]],
|
|
25
|
+
body: pulumi.Input[str],
|
|
19
26
|
database: pulumi.Input[str],
|
|
20
|
-
masking_expression: pulumi.Input[str],
|
|
21
27
|
return_data_type: pulumi.Input[str],
|
|
22
28
|
schema: pulumi.Input[str],
|
|
23
|
-
signature: pulumi.Input['MaskingPolicySignatureArgs'],
|
|
24
29
|
comment: Optional[pulumi.Input[str]] = None,
|
|
25
|
-
exempt_other_policies: Optional[pulumi.Input[
|
|
26
|
-
|
|
27
|
-
name: Optional[pulumi.Input[str]] = None,
|
|
28
|
-
or_replace: Optional[pulumi.Input[bool]] = None):
|
|
30
|
+
exempt_other_policies: Optional[pulumi.Input[str]] = None,
|
|
31
|
+
name: Optional[pulumi.Input[str]] = None):
|
|
29
32
|
"""
|
|
30
33
|
The set of arguments for constructing a MaskingPolicy resource.
|
|
31
|
-
:param pulumi.Input[
|
|
32
|
-
:param pulumi.Input[str]
|
|
33
|
-
:param pulumi.Input[str]
|
|
34
|
-
:param pulumi.Input[str]
|
|
35
|
-
:param pulumi.Input[
|
|
34
|
+
:param pulumi.Input[Sequence[pulumi.Input['MaskingPolicyArgumentArgs']]] arguments: List of the arguments for the masking policy. The first column and its data type always indicate the column data type values to mask or tokenize in the subsequent policy conditions. Note that you can not specify a virtual column as the first column argument in a conditional masking policy.
|
|
35
|
+
:param pulumi.Input[str] body: Specifies the SQL expression that transforms the data. To mitigate permadiff on this field, the provider replaces blank characters with a space. This can lead to false positives in cases where a change in case or run of whitespace is semantically significant.
|
|
36
|
+
:param pulumi.Input[str] database: The database in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
|
|
37
|
+
:param pulumi.Input[str] return_data_type: The return data type must match the input data type of the first column that is specified as an input column. For more information about data types, check [Snowflake docs](https://docs.snowflake.com/en/sql-reference/intro-summary-data-types).
|
|
38
|
+
:param pulumi.Input[str] schema: The schema in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
|
|
36
39
|
:param pulumi.Input[str] comment: Specifies a comment for the masking policy.
|
|
37
|
-
:param pulumi.Input[
|
|
38
|
-
:param pulumi.Input[
|
|
39
|
-
:param pulumi.Input[str] name: Specifies the column name to mask.
|
|
40
|
-
:param pulumi.Input[bool] or_replace: Whether to override a previous masking policy with the same name.
|
|
40
|
+
:param pulumi.Input[str] exempt_other_policies: Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy. Due to Snowflake limitations, when value is chenged, the resource is recreated. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
|
|
41
|
+
:param pulumi.Input[str] name: Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
|
|
41
42
|
"""
|
|
43
|
+
pulumi.set(__self__, "arguments", arguments)
|
|
44
|
+
pulumi.set(__self__, "body", body)
|
|
42
45
|
pulumi.set(__self__, "database", database)
|
|
43
|
-
pulumi.set(__self__, "masking_expression", masking_expression)
|
|
44
46
|
pulumi.set(__self__, "return_data_type", return_data_type)
|
|
45
47
|
pulumi.set(__self__, "schema", schema)
|
|
46
|
-
pulumi.set(__self__, "signature", signature)
|
|
47
48
|
if comment is not None:
|
|
48
49
|
pulumi.set(__self__, "comment", comment)
|
|
49
50
|
if exempt_other_policies is not None:
|
|
50
51
|
pulumi.set(__self__, "exempt_other_policies", exempt_other_policies)
|
|
51
|
-
if if_not_exists is not None:
|
|
52
|
-
pulumi.set(__self__, "if_not_exists", if_not_exists)
|
|
53
52
|
if name is not None:
|
|
54
53
|
pulumi.set(__self__, "name", name)
|
|
55
|
-
if or_replace is not None:
|
|
56
|
-
pulumi.set(__self__, "or_replace", or_replace)
|
|
57
54
|
|
|
58
55
|
@property
|
|
59
56
|
@pulumi.getter
|
|
60
|
-
def
|
|
57
|
+
def arguments(self) -> pulumi.Input[Sequence[pulumi.Input['MaskingPolicyArgumentArgs']]]:
|
|
61
58
|
"""
|
|
62
|
-
The
|
|
59
|
+
List of the arguments for the masking policy. The first column and its data type always indicate the column data type values to mask or tokenize in the subsequent policy conditions. Note that you can not specify a virtual column as the first column argument in a conditional masking policy.
|
|
63
60
|
"""
|
|
64
|
-
return pulumi.get(self, "
|
|
61
|
+
return pulumi.get(self, "arguments")
|
|
65
62
|
|
|
66
|
-
@
|
|
67
|
-
def
|
|
68
|
-
pulumi.set(self, "
|
|
63
|
+
@arguments.setter
|
|
64
|
+
def arguments(self, value: pulumi.Input[Sequence[pulumi.Input['MaskingPolicyArgumentArgs']]]):
|
|
65
|
+
pulumi.set(self, "arguments", value)
|
|
66
|
+
|
|
67
|
+
@property
|
|
68
|
+
@pulumi.getter
|
|
69
|
+
def body(self) -> pulumi.Input[str]:
|
|
70
|
+
"""
|
|
71
|
+
Specifies the SQL expression that transforms the data. To mitigate permadiff on this field, the provider replaces blank characters with a space. This can lead to false positives in cases where a change in case or run of whitespace is semantically significant.
|
|
72
|
+
"""
|
|
73
|
+
return pulumi.get(self, "body")
|
|
74
|
+
|
|
75
|
+
@body.setter
|
|
76
|
+
def body(self, value: pulumi.Input[str]):
|
|
77
|
+
pulumi.set(self, "body", value)
|
|
69
78
|
|
|
70
79
|
@property
|
|
71
|
-
@pulumi.getter
|
|
72
|
-
def
|
|
80
|
+
@pulumi.getter
|
|
81
|
+
def database(self) -> pulumi.Input[str]:
|
|
73
82
|
"""
|
|
74
|
-
|
|
83
|
+
The database in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
|
|
75
84
|
"""
|
|
76
|
-
return pulumi.get(self, "
|
|
85
|
+
return pulumi.get(self, "database")
|
|
77
86
|
|
|
78
|
-
@
|
|
79
|
-
def
|
|
80
|
-
pulumi.set(self, "
|
|
87
|
+
@database.setter
|
|
88
|
+
def database(self, value: pulumi.Input[str]):
|
|
89
|
+
pulumi.set(self, "database", value)
|
|
81
90
|
|
|
82
91
|
@property
|
|
83
92
|
@pulumi.getter(name="returnDataType")
|
|
84
93
|
def return_data_type(self) -> pulumi.Input[str]:
|
|
85
94
|
"""
|
|
86
|
-
|
|
95
|
+
The return data type must match the input data type of the first column that is specified as an input column. For more information about data types, check [Snowflake docs](https://docs.snowflake.com/en/sql-reference/intro-summary-data-types).
|
|
87
96
|
"""
|
|
88
97
|
return pulumi.get(self, "return_data_type")
|
|
89
98
|
|
|
@@ -95,7 +104,7 @@ class MaskingPolicyArgs:
|
|
|
95
104
|
@pulumi.getter
|
|
96
105
|
def schema(self) -> pulumi.Input[str]:
|
|
97
106
|
"""
|
|
98
|
-
The schema in which to create the masking policy.
|
|
107
|
+
The schema in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
|
|
99
108
|
"""
|
|
100
109
|
return pulumi.get(self, "schema")
|
|
101
110
|
|
|
@@ -103,18 +112,6 @@ class MaskingPolicyArgs:
|
|
|
103
112
|
def schema(self, value: pulumi.Input[str]):
|
|
104
113
|
pulumi.set(self, "schema", value)
|
|
105
114
|
|
|
106
|
-
@property
|
|
107
|
-
@pulumi.getter
|
|
108
|
-
def signature(self) -> pulumi.Input['MaskingPolicySignatureArgs']:
|
|
109
|
-
"""
|
|
110
|
-
The signature for the masking policy; specifies the input columns and data types to evaluate at query runtime.
|
|
111
|
-
"""
|
|
112
|
-
return pulumi.get(self, "signature")
|
|
113
|
-
|
|
114
|
-
@signature.setter
|
|
115
|
-
def signature(self, value: pulumi.Input['MaskingPolicySignatureArgs']):
|
|
116
|
-
pulumi.set(self, "signature", value)
|
|
117
|
-
|
|
118
115
|
@property
|
|
119
116
|
@pulumi.getter
|
|
120
117
|
def comment(self) -> Optional[pulumi.Input[str]]:
|
|
@@ -129,33 +126,21 @@ class MaskingPolicyArgs:
|
|
|
129
126
|
|
|
130
127
|
@property
|
|
131
128
|
@pulumi.getter(name="exemptOtherPolicies")
|
|
132
|
-
def exempt_other_policies(self) -> Optional[pulumi.Input[
|
|
129
|
+
def exempt_other_policies(self) -> Optional[pulumi.Input[str]]:
|
|
133
130
|
"""
|
|
134
|
-
Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy.
|
|
131
|
+
Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy. Due to Snowflake limitations, when value is chenged, the resource is recreated. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
|
|
135
132
|
"""
|
|
136
133
|
return pulumi.get(self, "exempt_other_policies")
|
|
137
134
|
|
|
138
135
|
@exempt_other_policies.setter
|
|
139
|
-
def exempt_other_policies(self, value: Optional[pulumi.Input[
|
|
136
|
+
def exempt_other_policies(self, value: Optional[pulumi.Input[str]]):
|
|
140
137
|
pulumi.set(self, "exempt_other_policies", value)
|
|
141
138
|
|
|
142
|
-
@property
|
|
143
|
-
@pulumi.getter(name="ifNotExists")
|
|
144
|
-
def if_not_exists(self) -> Optional[pulumi.Input[bool]]:
|
|
145
|
-
"""
|
|
146
|
-
Prevent overwriting a previous masking policy with the same name.
|
|
147
|
-
"""
|
|
148
|
-
return pulumi.get(self, "if_not_exists")
|
|
149
|
-
|
|
150
|
-
@if_not_exists.setter
|
|
151
|
-
def if_not_exists(self, value: Optional[pulumi.Input[bool]]):
|
|
152
|
-
pulumi.set(self, "if_not_exists", value)
|
|
153
|
-
|
|
154
139
|
@property
|
|
155
140
|
@pulumi.getter
|
|
156
141
|
def name(self) -> Optional[pulumi.Input[str]]:
|
|
157
142
|
"""
|
|
158
|
-
Specifies the
|
|
143
|
+
Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
|
|
159
144
|
"""
|
|
160
145
|
return pulumi.get(self, "name")
|
|
161
146
|
|
|
@@ -163,69 +148,81 @@ class MaskingPolicyArgs:
|
|
|
163
148
|
def name(self, value: Optional[pulumi.Input[str]]):
|
|
164
149
|
pulumi.set(self, "name", value)
|
|
165
150
|
|
|
166
|
-
@property
|
|
167
|
-
@pulumi.getter(name="orReplace")
|
|
168
|
-
def or_replace(self) -> Optional[pulumi.Input[bool]]:
|
|
169
|
-
"""
|
|
170
|
-
Whether to override a previous masking policy with the same name.
|
|
171
|
-
"""
|
|
172
|
-
return pulumi.get(self, "or_replace")
|
|
173
|
-
|
|
174
|
-
@or_replace.setter
|
|
175
|
-
def or_replace(self, value: Optional[pulumi.Input[bool]]):
|
|
176
|
-
pulumi.set(self, "or_replace", value)
|
|
177
|
-
|
|
178
151
|
|
|
179
152
|
@pulumi.input_type
|
|
180
153
|
class _MaskingPolicyState:
|
|
181
154
|
def __init__(__self__, *,
|
|
155
|
+
arguments: Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyArgumentArgs']]]] = None,
|
|
156
|
+
body: Optional[pulumi.Input[str]] = None,
|
|
182
157
|
comment: Optional[pulumi.Input[str]] = None,
|
|
183
158
|
database: Optional[pulumi.Input[str]] = None,
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
159
|
+
describe_outputs: Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyDescribeOutputArgs']]]] = None,
|
|
160
|
+
exempt_other_policies: Optional[pulumi.Input[str]] = None,
|
|
161
|
+
fully_qualified_name: Optional[pulumi.Input[str]] = None,
|
|
187
162
|
name: Optional[pulumi.Input[str]] = None,
|
|
188
|
-
or_replace: Optional[pulumi.Input[bool]] = None,
|
|
189
|
-
qualified_name: Optional[pulumi.Input[str]] = None,
|
|
190
163
|
return_data_type: Optional[pulumi.Input[str]] = None,
|
|
191
164
|
schema: Optional[pulumi.Input[str]] = None,
|
|
192
|
-
|
|
165
|
+
show_outputs: Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyShowOutputArgs']]]] = None):
|
|
193
166
|
"""
|
|
194
167
|
Input properties used for looking up and filtering MaskingPolicy resources.
|
|
168
|
+
:param pulumi.Input[Sequence[pulumi.Input['MaskingPolicyArgumentArgs']]] arguments: List of the arguments for the masking policy. The first column and its data type always indicate the column data type values to mask or tokenize in the subsequent policy conditions. Note that you can not specify a virtual column as the first column argument in a conditional masking policy.
|
|
169
|
+
:param pulumi.Input[str] body: Specifies the SQL expression that transforms the data. To mitigate permadiff on this field, the provider replaces blank characters with a space. This can lead to false positives in cases where a change in case or run of whitespace is semantically significant.
|
|
195
170
|
:param pulumi.Input[str] comment: Specifies a comment for the masking policy.
|
|
196
|
-
:param pulumi.Input[str] database: The database in which to create the masking policy.
|
|
197
|
-
:param pulumi.Input[
|
|
198
|
-
:param pulumi.Input[
|
|
199
|
-
:param pulumi.Input[str]
|
|
200
|
-
:param pulumi.Input[str] name: Specifies the
|
|
201
|
-
:param pulumi.Input[
|
|
202
|
-
:param pulumi.Input[str]
|
|
203
|
-
:param pulumi.Input[
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
171
|
+
:param pulumi.Input[str] database: The database in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
|
|
172
|
+
:param pulumi.Input[Sequence[pulumi.Input['MaskingPolicyDescribeOutputArgs']]] describe_outputs: Outputs the result of `DESCRIBE MASKING POLICY` for the given masking policy.
|
|
173
|
+
:param pulumi.Input[str] exempt_other_policies: Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy. Due to Snowflake limitations, when value is chenged, the resource is recreated. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
|
|
174
|
+
:param pulumi.Input[str] fully_qualified_name: Fully qualified name of the resource. For more information, see [object name resolution](https://docs.snowflake.com/en/sql-reference/name-resolution).
|
|
175
|
+
:param pulumi.Input[str] name: Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
|
|
176
|
+
:param pulumi.Input[str] return_data_type: The return data type must match the input data type of the first column that is specified as an input column. For more information about data types, check [Snowflake docs](https://docs.snowflake.com/en/sql-reference/intro-summary-data-types).
|
|
177
|
+
:param pulumi.Input[str] schema: The schema in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
|
|
178
|
+
:param pulumi.Input[Sequence[pulumi.Input['MaskingPolicyShowOutputArgs']]] show_outputs: Outputs the result of `SHOW MASKING POLICIES` for the given masking policy.
|
|
179
|
+
"""
|
|
180
|
+
if arguments is not None:
|
|
181
|
+
pulumi.set(__self__, "arguments", arguments)
|
|
182
|
+
if body is not None:
|
|
183
|
+
pulumi.set(__self__, "body", body)
|
|
207
184
|
if comment is not None:
|
|
208
185
|
pulumi.set(__self__, "comment", comment)
|
|
209
186
|
if database is not None:
|
|
210
187
|
pulumi.set(__self__, "database", database)
|
|
188
|
+
if describe_outputs is not None:
|
|
189
|
+
pulumi.set(__self__, "describe_outputs", describe_outputs)
|
|
211
190
|
if exempt_other_policies is not None:
|
|
212
191
|
pulumi.set(__self__, "exempt_other_policies", exempt_other_policies)
|
|
213
|
-
if
|
|
214
|
-
pulumi.set(__self__, "
|
|
215
|
-
if masking_expression is not None:
|
|
216
|
-
pulumi.set(__self__, "masking_expression", masking_expression)
|
|
192
|
+
if fully_qualified_name is not None:
|
|
193
|
+
pulumi.set(__self__, "fully_qualified_name", fully_qualified_name)
|
|
217
194
|
if name is not None:
|
|
218
195
|
pulumi.set(__self__, "name", name)
|
|
219
|
-
if or_replace is not None:
|
|
220
|
-
pulumi.set(__self__, "or_replace", or_replace)
|
|
221
|
-
if qualified_name is not None:
|
|
222
|
-
pulumi.set(__self__, "qualified_name", qualified_name)
|
|
223
196
|
if return_data_type is not None:
|
|
224
197
|
pulumi.set(__self__, "return_data_type", return_data_type)
|
|
225
198
|
if schema is not None:
|
|
226
199
|
pulumi.set(__self__, "schema", schema)
|
|
227
|
-
if
|
|
228
|
-
pulumi.set(__self__, "
|
|
200
|
+
if show_outputs is not None:
|
|
201
|
+
pulumi.set(__self__, "show_outputs", show_outputs)
|
|
202
|
+
|
|
203
|
+
@property
|
|
204
|
+
@pulumi.getter
|
|
205
|
+
def arguments(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyArgumentArgs']]]]:
|
|
206
|
+
"""
|
|
207
|
+
List of the arguments for the masking policy. The first column and its data type always indicate the column data type values to mask or tokenize in the subsequent policy conditions. Note that you can not specify a virtual column as the first column argument in a conditional masking policy.
|
|
208
|
+
"""
|
|
209
|
+
return pulumi.get(self, "arguments")
|
|
210
|
+
|
|
211
|
+
@arguments.setter
|
|
212
|
+
def arguments(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyArgumentArgs']]]]):
|
|
213
|
+
pulumi.set(self, "arguments", value)
|
|
214
|
+
|
|
215
|
+
@property
|
|
216
|
+
@pulumi.getter
|
|
217
|
+
def body(self) -> Optional[pulumi.Input[str]]:
|
|
218
|
+
"""
|
|
219
|
+
Specifies the SQL expression that transforms the data. To mitigate permadiff on this field, the provider replaces blank characters with a space. This can lead to false positives in cases where a change in case or run of whitespace is semantically significant.
|
|
220
|
+
"""
|
|
221
|
+
return pulumi.get(self, "body")
|
|
222
|
+
|
|
223
|
+
@body.setter
|
|
224
|
+
def body(self, value: Optional[pulumi.Input[str]]):
|
|
225
|
+
pulumi.set(self, "body", value)
|
|
229
226
|
|
|
230
227
|
@property
|
|
231
228
|
@pulumi.getter
|
|
@@ -243,7 +240,7 @@ class _MaskingPolicyState:
|
|
|
243
240
|
@pulumi.getter
|
|
244
241
|
def database(self) -> Optional[pulumi.Input[str]]:
|
|
245
242
|
"""
|
|
246
|
-
The database in which to create the masking policy.
|
|
243
|
+
The database in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
|
|
247
244
|
"""
|
|
248
245
|
return pulumi.get(self, "database")
|
|
249
246
|
|
|
@@ -252,46 +249,46 @@ class _MaskingPolicyState:
|
|
|
252
249
|
pulumi.set(self, "database", value)
|
|
253
250
|
|
|
254
251
|
@property
|
|
255
|
-
@pulumi.getter(name="
|
|
256
|
-
def
|
|
252
|
+
@pulumi.getter(name="describeOutputs")
|
|
253
|
+
def describe_outputs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyDescribeOutputArgs']]]]:
|
|
257
254
|
"""
|
|
258
|
-
|
|
255
|
+
Outputs the result of `DESCRIBE MASKING POLICY` for the given masking policy.
|
|
259
256
|
"""
|
|
260
|
-
return pulumi.get(self, "
|
|
257
|
+
return pulumi.get(self, "describe_outputs")
|
|
261
258
|
|
|
262
|
-
@
|
|
263
|
-
def
|
|
264
|
-
pulumi.set(self, "
|
|
259
|
+
@describe_outputs.setter
|
|
260
|
+
def describe_outputs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyDescribeOutputArgs']]]]):
|
|
261
|
+
pulumi.set(self, "describe_outputs", value)
|
|
265
262
|
|
|
266
263
|
@property
|
|
267
|
-
@pulumi.getter(name="
|
|
268
|
-
def
|
|
264
|
+
@pulumi.getter(name="exemptOtherPolicies")
|
|
265
|
+
def exempt_other_policies(self) -> Optional[pulumi.Input[str]]:
|
|
269
266
|
"""
|
|
270
|
-
|
|
267
|
+
Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy. Due to Snowflake limitations, when value is chenged, the resource is recreated. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
|
|
271
268
|
"""
|
|
272
|
-
return pulumi.get(self, "
|
|
269
|
+
return pulumi.get(self, "exempt_other_policies")
|
|
273
270
|
|
|
274
|
-
@
|
|
275
|
-
def
|
|
276
|
-
pulumi.set(self, "
|
|
271
|
+
@exempt_other_policies.setter
|
|
272
|
+
def exempt_other_policies(self, value: Optional[pulumi.Input[str]]):
|
|
273
|
+
pulumi.set(self, "exempt_other_policies", value)
|
|
277
274
|
|
|
278
275
|
@property
|
|
279
|
-
@pulumi.getter(name="
|
|
280
|
-
def
|
|
276
|
+
@pulumi.getter(name="fullyQualifiedName")
|
|
277
|
+
def fully_qualified_name(self) -> Optional[pulumi.Input[str]]:
|
|
281
278
|
"""
|
|
282
|
-
|
|
279
|
+
Fully qualified name of the resource. For more information, see [object name resolution](https://docs.snowflake.com/en/sql-reference/name-resolution).
|
|
283
280
|
"""
|
|
284
|
-
return pulumi.get(self, "
|
|
281
|
+
return pulumi.get(self, "fully_qualified_name")
|
|
285
282
|
|
|
286
|
-
@
|
|
287
|
-
def
|
|
288
|
-
pulumi.set(self, "
|
|
283
|
+
@fully_qualified_name.setter
|
|
284
|
+
def fully_qualified_name(self, value: Optional[pulumi.Input[str]]):
|
|
285
|
+
pulumi.set(self, "fully_qualified_name", value)
|
|
289
286
|
|
|
290
287
|
@property
|
|
291
288
|
@pulumi.getter
|
|
292
289
|
def name(self) -> Optional[pulumi.Input[str]]:
|
|
293
290
|
"""
|
|
294
|
-
Specifies the
|
|
291
|
+
Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
|
|
295
292
|
"""
|
|
296
293
|
return pulumi.get(self, "name")
|
|
297
294
|
|
|
@@ -299,35 +296,11 @@ class _MaskingPolicyState:
|
|
|
299
296
|
def name(self, value: Optional[pulumi.Input[str]]):
|
|
300
297
|
pulumi.set(self, "name", value)
|
|
301
298
|
|
|
302
|
-
@property
|
|
303
|
-
@pulumi.getter(name="orReplace")
|
|
304
|
-
def or_replace(self) -> Optional[pulumi.Input[bool]]:
|
|
305
|
-
"""
|
|
306
|
-
Whether to override a previous masking policy with the same name.
|
|
307
|
-
"""
|
|
308
|
-
return pulumi.get(self, "or_replace")
|
|
309
|
-
|
|
310
|
-
@or_replace.setter
|
|
311
|
-
def or_replace(self, value: Optional[pulumi.Input[bool]]):
|
|
312
|
-
pulumi.set(self, "or_replace", value)
|
|
313
|
-
|
|
314
|
-
@property
|
|
315
|
-
@pulumi.getter(name="qualifiedName")
|
|
316
|
-
def qualified_name(self) -> Optional[pulumi.Input[str]]:
|
|
317
|
-
"""
|
|
318
|
-
Specifies the qualified identifier for the masking policy.
|
|
319
|
-
"""
|
|
320
|
-
return pulumi.get(self, "qualified_name")
|
|
321
|
-
|
|
322
|
-
@qualified_name.setter
|
|
323
|
-
def qualified_name(self, value: Optional[pulumi.Input[str]]):
|
|
324
|
-
pulumi.set(self, "qualified_name", value)
|
|
325
|
-
|
|
326
299
|
@property
|
|
327
300
|
@pulumi.getter(name="returnDataType")
|
|
328
301
|
def return_data_type(self) -> Optional[pulumi.Input[str]]:
|
|
329
302
|
"""
|
|
330
|
-
|
|
303
|
+
The return data type must match the input data type of the first column that is specified as an input column. For more information about data types, check [Snowflake docs](https://docs.snowflake.com/en/sql-reference/intro-summary-data-types).
|
|
331
304
|
"""
|
|
332
305
|
return pulumi.get(self, "return_data_type")
|
|
333
306
|
|
|
@@ -339,7 +312,7 @@ class _MaskingPolicyState:
|
|
|
339
312
|
@pulumi.getter
|
|
340
313
|
def schema(self) -> Optional[pulumi.Input[str]]:
|
|
341
314
|
"""
|
|
342
|
-
The schema in which to create the masking policy.
|
|
315
|
+
The schema in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
|
|
343
316
|
"""
|
|
344
317
|
return pulumi.get(self, "schema")
|
|
345
318
|
|
|
@@ -348,16 +321,16 @@ class _MaskingPolicyState:
|
|
|
348
321
|
pulumi.set(self, "schema", value)
|
|
349
322
|
|
|
350
323
|
@property
|
|
351
|
-
@pulumi.getter
|
|
352
|
-
def
|
|
324
|
+
@pulumi.getter(name="showOutputs")
|
|
325
|
+
def show_outputs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyShowOutputArgs']]]]:
|
|
353
326
|
"""
|
|
354
|
-
|
|
327
|
+
Outputs the result of `SHOW MASKING POLICIES` for the given masking policy.
|
|
355
328
|
"""
|
|
356
|
-
return pulumi.get(self, "
|
|
329
|
+
return pulumi.get(self, "show_outputs")
|
|
357
330
|
|
|
358
|
-
@
|
|
359
|
-
def
|
|
360
|
-
pulumi.set(self, "
|
|
331
|
+
@show_outputs.setter
|
|
332
|
+
def show_outputs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyShowOutputArgs']]]]):
|
|
333
|
+
pulumi.set(self, "show_outputs", value)
|
|
361
334
|
|
|
362
335
|
|
|
363
336
|
class MaskingPolicy(pulumi.CustomResource):
|
|
@@ -365,68 +338,32 @@ class MaskingPolicy(pulumi.CustomResource):
|
|
|
365
338
|
def __init__(__self__,
|
|
366
339
|
resource_name: str,
|
|
367
340
|
opts: Optional[pulumi.ResourceOptions] = None,
|
|
341
|
+
arguments: Optional[pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyArgumentArgs', 'MaskingPolicyArgumentArgsDict']]]]] = None,
|
|
342
|
+
body: Optional[pulumi.Input[str]] = None,
|
|
368
343
|
comment: Optional[pulumi.Input[str]] = None,
|
|
369
344
|
database: Optional[pulumi.Input[str]] = None,
|
|
370
|
-
exempt_other_policies: Optional[pulumi.Input[
|
|
371
|
-
if_not_exists: Optional[pulumi.Input[bool]] = None,
|
|
372
|
-
masking_expression: Optional[pulumi.Input[str]] = None,
|
|
345
|
+
exempt_other_policies: Optional[pulumi.Input[str]] = None,
|
|
373
346
|
name: Optional[pulumi.Input[str]] = None,
|
|
374
|
-
or_replace: Optional[pulumi.Input[bool]] = None,
|
|
375
347
|
return_data_type: Optional[pulumi.Input[str]] = None,
|
|
376
348
|
schema: Optional[pulumi.Input[str]] = None,
|
|
377
|
-
signature: Optional[pulumi.Input[pulumi.InputType['MaskingPolicySignatureArgs']]] = None,
|
|
378
349
|
__props__=None):
|
|
379
350
|
"""
|
|
380
|
-
## Example Usage
|
|
381
|
-
|
|
382
|
-
<!--Start PulumiCodeChooser -->
|
|
383
|
-
```python
|
|
384
|
-
import pulumi
|
|
385
|
-
import pulumi_snowflake as snowflake
|
|
386
|
-
|
|
387
|
-
test = snowflake.MaskingPolicy("test",
|
|
388
|
-
database="EXAMPLE_DB",
|
|
389
|
-
masking_expression=\"\"\" case
|
|
390
|
-
when current_role() in ('ROLE_A') then
|
|
391
|
-
val
|
|
392
|
-
when is_role_in_session( 'ROLE_B' ) then
|
|
393
|
-
'ABC123'
|
|
394
|
-
else
|
|
395
|
-
'******'
|
|
396
|
-
end
|
|
397
|
-
|
|
398
|
-
\"\"\",
|
|
399
|
-
return_data_type="VARCHAR",
|
|
400
|
-
schema="EXAMPLE_SCHEMA",
|
|
401
|
-
signature=snowflake.MaskingPolicySignatureArgs(
|
|
402
|
-
columns=[snowflake.MaskingPolicySignatureColumnArgs(
|
|
403
|
-
name="val",
|
|
404
|
-
type="VARCHAR",
|
|
405
|
-
)],
|
|
406
|
-
))
|
|
407
|
-
```
|
|
408
|
-
<!--End PulumiCodeChooser -->
|
|
409
|
-
|
|
410
351
|
## Import
|
|
411
352
|
|
|
412
|
-
format is database name | schema name | policy name
|
|
413
|
-
|
|
414
353
|
```sh
|
|
415
|
-
$ pulumi import snowflake:index/maskingPolicy:MaskingPolicy example '
|
|
354
|
+
$ pulumi import snowflake:index/maskingPolicy:MaskingPolicy example '"<database_name>"."<schema_name>"."<masking_policy_name>"'
|
|
416
355
|
```
|
|
417
356
|
|
|
418
357
|
:param str resource_name: The name of the resource.
|
|
419
358
|
:param pulumi.ResourceOptions opts: Options for the resource.
|
|
359
|
+
:param pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyArgumentArgs', 'MaskingPolicyArgumentArgsDict']]]] arguments: List of the arguments for the masking policy. The first column and its data type always indicate the column data type values to mask or tokenize in the subsequent policy conditions. Note that you can not specify a virtual column as the first column argument in a conditional masking policy.
|
|
360
|
+
:param pulumi.Input[str] body: Specifies the SQL expression that transforms the data. To mitigate permadiff on this field, the provider replaces blank characters with a space. This can lead to false positives in cases where a change in case or run of whitespace is semantically significant.
|
|
420
361
|
:param pulumi.Input[str] comment: Specifies a comment for the masking policy.
|
|
421
|
-
:param pulumi.Input[str] database: The database in which to create the masking policy.
|
|
422
|
-
:param pulumi.Input[
|
|
423
|
-
:param pulumi.Input[
|
|
424
|
-
:param pulumi.Input[str]
|
|
425
|
-
:param pulumi.Input[str]
|
|
426
|
-
:param pulumi.Input[bool] or_replace: Whether to override a previous masking policy with the same name.
|
|
427
|
-
:param pulumi.Input[str] return_data_type: Specifies the data type to return.
|
|
428
|
-
:param pulumi.Input[str] schema: The schema in which to create the masking policy.
|
|
429
|
-
:param pulumi.Input[pulumi.InputType['MaskingPolicySignatureArgs']] signature: The signature for the masking policy; specifies the input columns and data types to evaluate at query runtime.
|
|
362
|
+
:param pulumi.Input[str] database: The database in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
|
|
363
|
+
:param pulumi.Input[str] exempt_other_policies: Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy. Due to Snowflake limitations, when value is chenged, the resource is recreated. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
|
|
364
|
+
:param pulumi.Input[str] name: Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
|
|
365
|
+
:param pulumi.Input[str] return_data_type: The return data type must match the input data type of the first column that is specified as an input column. For more information about data types, check [Snowflake docs](https://docs.snowflake.com/en/sql-reference/intro-summary-data-types).
|
|
366
|
+
:param pulumi.Input[str] schema: The schema in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
|
|
430
367
|
"""
|
|
431
368
|
...
|
|
432
369
|
@overload
|
|
@@ -435,42 +372,10 @@ class MaskingPolicy(pulumi.CustomResource):
|
|
|
435
372
|
args: MaskingPolicyArgs,
|
|
436
373
|
opts: Optional[pulumi.ResourceOptions] = None):
|
|
437
374
|
"""
|
|
438
|
-
## Example Usage
|
|
439
|
-
|
|
440
|
-
<!--Start PulumiCodeChooser -->
|
|
441
|
-
```python
|
|
442
|
-
import pulumi
|
|
443
|
-
import pulumi_snowflake as snowflake
|
|
444
|
-
|
|
445
|
-
test = snowflake.MaskingPolicy("test",
|
|
446
|
-
database="EXAMPLE_DB",
|
|
447
|
-
masking_expression=\"\"\" case
|
|
448
|
-
when current_role() in ('ROLE_A') then
|
|
449
|
-
val
|
|
450
|
-
when is_role_in_session( 'ROLE_B' ) then
|
|
451
|
-
'ABC123'
|
|
452
|
-
else
|
|
453
|
-
'******'
|
|
454
|
-
end
|
|
455
|
-
|
|
456
|
-
\"\"\",
|
|
457
|
-
return_data_type="VARCHAR",
|
|
458
|
-
schema="EXAMPLE_SCHEMA",
|
|
459
|
-
signature=snowflake.MaskingPolicySignatureArgs(
|
|
460
|
-
columns=[snowflake.MaskingPolicySignatureColumnArgs(
|
|
461
|
-
name="val",
|
|
462
|
-
type="VARCHAR",
|
|
463
|
-
)],
|
|
464
|
-
))
|
|
465
|
-
```
|
|
466
|
-
<!--End PulumiCodeChooser -->
|
|
467
|
-
|
|
468
375
|
## Import
|
|
469
376
|
|
|
470
|
-
format is database name | schema name | policy name
|
|
471
|
-
|
|
472
377
|
```sh
|
|
473
|
-
$ pulumi import snowflake:index/maskingPolicy:MaskingPolicy example '
|
|
378
|
+
$ pulumi import snowflake:index/maskingPolicy:MaskingPolicy example '"<database_name>"."<schema_name>"."<masking_policy_name>"'
|
|
474
379
|
```
|
|
475
380
|
|
|
476
381
|
:param str resource_name: The name of the resource.
|
|
@@ -488,16 +393,14 @@ class MaskingPolicy(pulumi.CustomResource):
|
|
|
488
393
|
def _internal_init(__self__,
|
|
489
394
|
resource_name: str,
|
|
490
395
|
opts: Optional[pulumi.ResourceOptions] = None,
|
|
396
|
+
arguments: Optional[pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyArgumentArgs', 'MaskingPolicyArgumentArgsDict']]]]] = None,
|
|
397
|
+
body: Optional[pulumi.Input[str]] = None,
|
|
491
398
|
comment: Optional[pulumi.Input[str]] = None,
|
|
492
399
|
database: Optional[pulumi.Input[str]] = None,
|
|
493
|
-
exempt_other_policies: Optional[pulumi.Input[
|
|
494
|
-
if_not_exists: Optional[pulumi.Input[bool]] = None,
|
|
495
|
-
masking_expression: Optional[pulumi.Input[str]] = None,
|
|
400
|
+
exempt_other_policies: Optional[pulumi.Input[str]] = None,
|
|
496
401
|
name: Optional[pulumi.Input[str]] = None,
|
|
497
|
-
or_replace: Optional[pulumi.Input[bool]] = None,
|
|
498
402
|
return_data_type: Optional[pulumi.Input[str]] = None,
|
|
499
403
|
schema: Optional[pulumi.Input[str]] = None,
|
|
500
|
-
signature: Optional[pulumi.Input[pulumi.InputType['MaskingPolicySignatureArgs']]] = None,
|
|
501
404
|
__props__=None):
|
|
502
405
|
opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
|
|
503
406
|
if not isinstance(opts, pulumi.ResourceOptions):
|
|
@@ -507,27 +410,27 @@ class MaskingPolicy(pulumi.CustomResource):
|
|
|
507
410
|
raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
|
|
508
411
|
__props__ = MaskingPolicyArgs.__new__(MaskingPolicyArgs)
|
|
509
412
|
|
|
413
|
+
if arguments is None and not opts.urn:
|
|
414
|
+
raise TypeError("Missing required property 'arguments'")
|
|
415
|
+
__props__.__dict__["arguments"] = arguments
|
|
416
|
+
if body is None and not opts.urn:
|
|
417
|
+
raise TypeError("Missing required property 'body'")
|
|
418
|
+
__props__.__dict__["body"] = body
|
|
510
419
|
__props__.__dict__["comment"] = comment
|
|
511
420
|
if database is None and not opts.urn:
|
|
512
421
|
raise TypeError("Missing required property 'database'")
|
|
513
422
|
__props__.__dict__["database"] = database
|
|
514
423
|
__props__.__dict__["exempt_other_policies"] = exempt_other_policies
|
|
515
|
-
__props__.__dict__["if_not_exists"] = if_not_exists
|
|
516
|
-
if masking_expression is None and not opts.urn:
|
|
517
|
-
raise TypeError("Missing required property 'masking_expression'")
|
|
518
|
-
__props__.__dict__["masking_expression"] = masking_expression
|
|
519
424
|
__props__.__dict__["name"] = name
|
|
520
|
-
__props__.__dict__["or_replace"] = or_replace
|
|
521
425
|
if return_data_type is None and not opts.urn:
|
|
522
426
|
raise TypeError("Missing required property 'return_data_type'")
|
|
523
427
|
__props__.__dict__["return_data_type"] = return_data_type
|
|
524
428
|
if schema is None and not opts.urn:
|
|
525
429
|
raise TypeError("Missing required property 'schema'")
|
|
526
430
|
__props__.__dict__["schema"] = schema
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
__props__.__dict__["
|
|
530
|
-
__props__.__dict__["qualified_name"] = None
|
|
431
|
+
__props__.__dict__["describe_outputs"] = None
|
|
432
|
+
__props__.__dict__["fully_qualified_name"] = None
|
|
433
|
+
__props__.__dict__["show_outputs"] = None
|
|
531
434
|
super(MaskingPolicy, __self__).__init__(
|
|
532
435
|
'snowflake:index/maskingPolicy:MaskingPolicy',
|
|
533
436
|
resource_name,
|
|
@@ -538,17 +441,17 @@ class MaskingPolicy(pulumi.CustomResource):
|
|
|
538
441
|
def get(resource_name: str,
|
|
539
442
|
id: pulumi.Input[str],
|
|
540
443
|
opts: Optional[pulumi.ResourceOptions] = None,
|
|
444
|
+
arguments: Optional[pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyArgumentArgs', 'MaskingPolicyArgumentArgsDict']]]]] = None,
|
|
445
|
+
body: Optional[pulumi.Input[str]] = None,
|
|
541
446
|
comment: Optional[pulumi.Input[str]] = None,
|
|
542
447
|
database: Optional[pulumi.Input[str]] = None,
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
448
|
+
describe_outputs: Optional[pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyDescribeOutputArgs', 'MaskingPolicyDescribeOutputArgsDict']]]]] = None,
|
|
449
|
+
exempt_other_policies: Optional[pulumi.Input[str]] = None,
|
|
450
|
+
fully_qualified_name: Optional[pulumi.Input[str]] = None,
|
|
546
451
|
name: Optional[pulumi.Input[str]] = None,
|
|
547
|
-
or_replace: Optional[pulumi.Input[bool]] = None,
|
|
548
|
-
qualified_name: Optional[pulumi.Input[str]] = None,
|
|
549
452
|
return_data_type: Optional[pulumi.Input[str]] = None,
|
|
550
453
|
schema: Optional[pulumi.Input[str]] = None,
|
|
551
|
-
|
|
454
|
+
show_outputs: Optional[pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyShowOutputArgs', 'MaskingPolicyShowOutputArgsDict']]]]] = None) -> 'MaskingPolicy':
|
|
552
455
|
"""
|
|
553
456
|
Get an existing MaskingPolicy resource's state with the given name, id, and optional extra
|
|
554
457
|
properties used to qualify the lookup.
|
|
@@ -556,104 +459,104 @@ class MaskingPolicy(pulumi.CustomResource):
|
|
|
556
459
|
:param str resource_name: The unique name of the resulting resource.
|
|
557
460
|
:param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
|
|
558
461
|
:param pulumi.ResourceOptions opts: Options for the resource.
|
|
462
|
+
:param pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyArgumentArgs', 'MaskingPolicyArgumentArgsDict']]]] arguments: List of the arguments for the masking policy. The first column and its data type always indicate the column data type values to mask or tokenize in the subsequent policy conditions. Note that you can not specify a virtual column as the first column argument in a conditional masking policy.
|
|
463
|
+
:param pulumi.Input[str] body: Specifies the SQL expression that transforms the data. To mitigate permadiff on this field, the provider replaces blank characters with a space. This can lead to false positives in cases where a change in case or run of whitespace is semantically significant.
|
|
559
464
|
:param pulumi.Input[str] comment: Specifies a comment for the masking policy.
|
|
560
|
-
:param pulumi.Input[str] database: The database in which to create the masking policy.
|
|
561
|
-
:param pulumi.Input[
|
|
562
|
-
:param pulumi.Input[
|
|
563
|
-
:param pulumi.Input[str]
|
|
564
|
-
:param pulumi.Input[str] name: Specifies the
|
|
565
|
-
:param pulumi.Input[
|
|
566
|
-
:param pulumi.Input[str]
|
|
567
|
-
:param pulumi.Input[
|
|
568
|
-
:param pulumi.Input[str] schema: The schema in which to create the masking policy.
|
|
569
|
-
:param pulumi.Input[pulumi.InputType['MaskingPolicySignatureArgs']] signature: The signature for the masking policy; specifies the input columns and data types to evaluate at query runtime.
|
|
465
|
+
:param pulumi.Input[str] database: The database in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
|
|
466
|
+
:param pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyDescribeOutputArgs', 'MaskingPolicyDescribeOutputArgsDict']]]] describe_outputs: Outputs the result of `DESCRIBE MASKING POLICY` for the given masking policy.
|
|
467
|
+
:param pulumi.Input[str] exempt_other_policies: Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy. Due to Snowflake limitations, when value is chenged, the resource is recreated. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
|
|
468
|
+
:param pulumi.Input[str] fully_qualified_name: Fully qualified name of the resource. For more information, see [object name resolution](https://docs.snowflake.com/en/sql-reference/name-resolution).
|
|
469
|
+
:param pulumi.Input[str] name: Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
|
|
470
|
+
:param pulumi.Input[str] return_data_type: The return data type must match the input data type of the first column that is specified as an input column. For more information about data types, check [Snowflake docs](https://docs.snowflake.com/en/sql-reference/intro-summary-data-types).
|
|
471
|
+
:param pulumi.Input[str] schema: The schema in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
|
|
472
|
+
:param pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyShowOutputArgs', 'MaskingPolicyShowOutputArgsDict']]]] show_outputs: Outputs the result of `SHOW MASKING POLICIES` for the given masking policy.
|
|
570
473
|
"""
|
|
571
474
|
opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
|
|
572
475
|
|
|
573
476
|
__props__ = _MaskingPolicyState.__new__(_MaskingPolicyState)
|
|
574
477
|
|
|
478
|
+
__props__.__dict__["arguments"] = arguments
|
|
479
|
+
__props__.__dict__["body"] = body
|
|
575
480
|
__props__.__dict__["comment"] = comment
|
|
576
481
|
__props__.__dict__["database"] = database
|
|
482
|
+
__props__.__dict__["describe_outputs"] = describe_outputs
|
|
577
483
|
__props__.__dict__["exempt_other_policies"] = exempt_other_policies
|
|
578
|
-
__props__.__dict__["
|
|
579
|
-
__props__.__dict__["masking_expression"] = masking_expression
|
|
484
|
+
__props__.__dict__["fully_qualified_name"] = fully_qualified_name
|
|
580
485
|
__props__.__dict__["name"] = name
|
|
581
|
-
__props__.__dict__["or_replace"] = or_replace
|
|
582
|
-
__props__.__dict__["qualified_name"] = qualified_name
|
|
583
486
|
__props__.__dict__["return_data_type"] = return_data_type
|
|
584
487
|
__props__.__dict__["schema"] = schema
|
|
585
|
-
__props__.__dict__["
|
|
488
|
+
__props__.__dict__["show_outputs"] = show_outputs
|
|
586
489
|
return MaskingPolicy(resource_name, opts=opts, __props__=__props__)
|
|
587
490
|
|
|
588
491
|
@property
|
|
589
492
|
@pulumi.getter
|
|
590
|
-
def
|
|
493
|
+
def arguments(self) -> pulumi.Output[Sequence['outputs.MaskingPolicyArgument']]:
|
|
591
494
|
"""
|
|
592
|
-
|
|
495
|
+
List of the arguments for the masking policy. The first column and its data type always indicate the column data type values to mask or tokenize in the subsequent policy conditions. Note that you can not specify a virtual column as the first column argument in a conditional masking policy.
|
|
593
496
|
"""
|
|
594
|
-
return pulumi.get(self, "
|
|
497
|
+
return pulumi.get(self, "arguments")
|
|
595
498
|
|
|
596
499
|
@property
|
|
597
500
|
@pulumi.getter
|
|
598
|
-
def
|
|
501
|
+
def body(self) -> pulumi.Output[str]:
|
|
599
502
|
"""
|
|
600
|
-
|
|
503
|
+
Specifies the SQL expression that transforms the data. To mitigate permadiff on this field, the provider replaces blank characters with a space. This can lead to false positives in cases where a change in case or run of whitespace is semantically significant.
|
|
601
504
|
"""
|
|
602
|
-
return pulumi.get(self, "
|
|
505
|
+
return pulumi.get(self, "body")
|
|
603
506
|
|
|
604
507
|
@property
|
|
605
|
-
@pulumi.getter
|
|
606
|
-
def
|
|
508
|
+
@pulumi.getter
|
|
509
|
+
def comment(self) -> pulumi.Output[Optional[str]]:
|
|
607
510
|
"""
|
|
608
|
-
Specifies
|
|
511
|
+
Specifies a comment for the masking policy.
|
|
609
512
|
"""
|
|
610
|
-
return pulumi.get(self, "
|
|
513
|
+
return pulumi.get(self, "comment")
|
|
611
514
|
|
|
612
515
|
@property
|
|
613
|
-
@pulumi.getter
|
|
614
|
-
def
|
|
516
|
+
@pulumi.getter
|
|
517
|
+
def database(self) -> pulumi.Output[str]:
|
|
615
518
|
"""
|
|
616
|
-
|
|
519
|
+
The database in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
|
|
617
520
|
"""
|
|
618
|
-
return pulumi.get(self, "
|
|
521
|
+
return pulumi.get(self, "database")
|
|
619
522
|
|
|
620
523
|
@property
|
|
621
|
-
@pulumi.getter(name="
|
|
622
|
-
def
|
|
524
|
+
@pulumi.getter(name="describeOutputs")
|
|
525
|
+
def describe_outputs(self) -> pulumi.Output[Sequence['outputs.MaskingPolicyDescribeOutput']]:
|
|
623
526
|
"""
|
|
624
|
-
|
|
527
|
+
Outputs the result of `DESCRIBE MASKING POLICY` for the given masking policy.
|
|
625
528
|
"""
|
|
626
|
-
return pulumi.get(self, "
|
|
529
|
+
return pulumi.get(self, "describe_outputs")
|
|
627
530
|
|
|
628
531
|
@property
|
|
629
|
-
@pulumi.getter
|
|
630
|
-
def
|
|
532
|
+
@pulumi.getter(name="exemptOtherPolicies")
|
|
533
|
+
def exempt_other_policies(self) -> pulumi.Output[Optional[str]]:
|
|
631
534
|
"""
|
|
632
|
-
Specifies the column
|
|
535
|
+
Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy. Due to Snowflake limitations, when value is chenged, the resource is recreated. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
|
|
633
536
|
"""
|
|
634
|
-
return pulumi.get(self, "
|
|
537
|
+
return pulumi.get(self, "exempt_other_policies")
|
|
635
538
|
|
|
636
539
|
@property
|
|
637
|
-
@pulumi.getter(name="
|
|
638
|
-
def
|
|
540
|
+
@pulumi.getter(name="fullyQualifiedName")
|
|
541
|
+
def fully_qualified_name(self) -> pulumi.Output[str]:
|
|
639
542
|
"""
|
|
640
|
-
|
|
543
|
+
Fully qualified name of the resource. For more information, see [object name resolution](https://docs.snowflake.com/en/sql-reference/name-resolution).
|
|
641
544
|
"""
|
|
642
|
-
return pulumi.get(self, "
|
|
545
|
+
return pulumi.get(self, "fully_qualified_name")
|
|
643
546
|
|
|
644
547
|
@property
|
|
645
|
-
@pulumi.getter
|
|
646
|
-
def
|
|
548
|
+
@pulumi.getter
|
|
549
|
+
def name(self) -> pulumi.Output[str]:
|
|
647
550
|
"""
|
|
648
|
-
Specifies the
|
|
551
|
+
Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
|
|
649
552
|
"""
|
|
650
|
-
return pulumi.get(self, "
|
|
553
|
+
return pulumi.get(self, "name")
|
|
651
554
|
|
|
652
555
|
@property
|
|
653
556
|
@pulumi.getter(name="returnDataType")
|
|
654
557
|
def return_data_type(self) -> pulumi.Output[str]:
|
|
655
558
|
"""
|
|
656
|
-
|
|
559
|
+
The return data type must match the input data type of the first column that is specified as an input column. For more information about data types, check [Snowflake docs](https://docs.snowflake.com/en/sql-reference/intro-summary-data-types).
|
|
657
560
|
"""
|
|
658
561
|
return pulumi.get(self, "return_data_type")
|
|
659
562
|
|
|
@@ -661,15 +564,15 @@ class MaskingPolicy(pulumi.CustomResource):
|
|
|
661
564
|
@pulumi.getter
|
|
662
565
|
def schema(self) -> pulumi.Output[str]:
|
|
663
566
|
"""
|
|
664
|
-
The schema in which to create the masking policy.
|
|
567
|
+
The schema in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
|
|
665
568
|
"""
|
|
666
569
|
return pulumi.get(self, "schema")
|
|
667
570
|
|
|
668
571
|
@property
|
|
669
|
-
@pulumi.getter
|
|
670
|
-
def
|
|
572
|
+
@pulumi.getter(name="showOutputs")
|
|
573
|
+
def show_outputs(self) -> pulumi.Output[Sequence['outputs.MaskingPolicyShowOutput']]:
|
|
671
574
|
"""
|
|
672
|
-
|
|
575
|
+
Outputs the result of `SHOW MASKING POLICIES` for the given masking policy.
|
|
673
576
|
"""
|
|
674
|
-
return pulumi.get(self, "
|
|
577
|
+
return pulumi.get(self, "show_outputs")
|
|
675
578
|
|