# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import copy
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from .. import _utilities

__all__ = [
    'ProjectIpWhiteListArgs',
    'ProjectIpWhiteListArgsDict',
    'ProjectPropertiesArgs',
    'ProjectPropertiesArgsDict',
    'ProjectPropertiesEncryptionArgs',
    'ProjectPropertiesEncryptionArgsDict',
    'ProjectPropertiesTableLifecycleArgs',
    'ProjectPropertiesTableLifecycleArgsDict',
    'ProjectSecurityPropertiesArgs',
    'ProjectSecurityPropertiesArgsDict',
    'ProjectSecurityPropertiesProjectProtectionArgs',
    'ProjectSecurityPropertiesProjectProtectionArgsDict',
]

MYPY = False

if not MYPY:
    class ProjectIpWhiteListArgsDict(TypedDict):
        ip_list: NotRequired[pulumi.Input[str]]
        """
        Set the IP address whitelist in the classic network. Only devices in the whitelist are allowed to access the project.> **NOTE:** If you only configure a classic network IP address whitelist, access to the classic network is restricted and all access to the VPC is prohibited.
        """
        vpc_ip_list: NotRequired[pulumi.Input[str]]
        """
        Set the IP address whitelist in the VPC network to allow only devices in the whitelist to access the project space.> **NOTE:** If you only configure a VPC network IP address whitelist, access to the VPC network is restricted and access to the classic network is prohibited.
        """
elif False:
    ProjectIpWhiteListArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectIpWhiteListArgs:
    def __init__(__self__, *,
                 ip_list: Optional[pulumi.Input[str]] = None,
                 vpc_ip_list: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] ip_list: Set the IP address whitelist in the classic network. Only devices in the whitelist are allowed to access the project.> **NOTE:** If you only configure a classic network IP address whitelist, access to the classic network is restricted and all access to the VPC is prohibited.
        :param pulumi.Input[str] vpc_ip_list: Set the IP address whitelist in the VPC network to allow only devices in the whitelist to access the project space.> **NOTE:** If you only configure a VPC network IP address whitelist, access to the VPC network is restricted and access to the classic network is prohibited.
        """
        if ip_list is not None:
            pulumi.set(__self__, "ip_list", ip_list)
        if vpc_ip_list is not None:
            pulumi.set(__self__, "vpc_ip_list", vpc_ip_list)

    @property
    @pulumi.getter(name="ipList")
    def ip_list(self) -> Optional[pulumi.Input[str]]:
        """
        Set the IP address whitelist in the classic network. Only devices in the whitelist are allowed to access the project.> **NOTE:** If you only configure a classic network IP address whitelist, access to the classic network is restricted and all access to the VPC is prohibited.
        """
        return pulumi.get(self, "ip_list")

    @ip_list.setter
    def ip_list(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "ip_list", value)

    @property
    @pulumi.getter(name="vpcIpList")
    def vpc_ip_list(self) -> Optional[pulumi.Input[str]]:
        """
        Set the IP address whitelist in the VPC network to allow only devices in the whitelist to access the project space.> **NOTE:** If you only configure a VPC network IP address whitelist, access to the VPC network is restricted and access to the classic network is prohibited.
        """
        return pulumi.get(self, "vpc_ip_list")

    @vpc_ip_list.setter
    def vpc_ip_list(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "vpc_ip_list", value)


if not MYPY:
    class ProjectPropertiesArgsDict(TypedDict):
        allow_full_scan: NotRequired[pulumi.Input[bool]]
        """
        Whether to allow full table scan. Default: false.
        """
        enable_decimal2: NotRequired[pulumi.Input[bool]]
        """
        Whether to turn on Decimal2.0.
        """
        encryption: NotRequired[pulumi.Input['ProjectPropertiesEncryptionArgsDict']]
        """
        Storage encryption. For details, see [Storage Encryption](https://www.alibabacloud.com/help/en/maxcompute/security-and-compliance/storage-encryption)
        > **NOTE :**:  To enable storage encryption, you need to modify the parameters of the basic attributes of the MaxCompute project. This operation permission is authenticated by RAM, and you need to have the Super_Administrator role permission of the corresponding project.  To configure the permissions and IP whitelist parameters of the MaxCompute project, you must have the management permissions (Admin) of the corresponding project, including Super_Administrator, Admin, or custom management permissions. For more information, see the project management permissions list.  You can turn on storage encryption only for projects that have not turned on storage encryption. For projects that have turned on storage encryption, you cannot turn off storage encryption or change the encryption algorithm. See `encryption` below.
        """
        retention_days: NotRequired[pulumi.Input[int]]
        """
        Set the number of days to retain backup data. During this time, you can restore the current version to any backup version. The value range of days is [0,30], and the default value is 1. 0 means backup is turned off. The effective policy after adjusting the backup cycle is: Extend the backup cycle: The new backup cycle takes effect on the same day. Shorten the backup cycle: The system will automatically delete backup data that has exceeded the retention cycle.
        """
        sql_metering_max: NotRequired[pulumi.Input[str]]
        """
        Set the maximum threshold of single SQL consumption, that is, set the ODPS. SQL. metering.value.max attribute. For details, see [Consumption Monitoring Alarm](https://www.alibabacloud.com/help/en/maxcompute/product-overview/consumption-control). Unit: scan volume (GB)* complexity. .
        """
        table_lifecycle: NotRequired[pulumi.Input['ProjectPropertiesTableLifecycleArgsDict']]
        """
        Set whether the lifecycle of the table in the project needs to be configured, that is, set the ODPS. table.lifecycle property,. See `table_lifecycle` below.
        """
        timezone: NotRequired[pulumi.Input[str]]
        """
        Project time zone, example value: Asia/Shanghai.
        """
        type_system: NotRequired[pulumi.Input[str]]
        """
        Data type version. Value:(1/2/hive) 1: The original MaxCompute type system. 2: New type system introduced by MaxCompute 2.0. hive: the type system of the Hive compatibility mode introduced by MaxCompute 2.0.
        """
elif False:
    ProjectPropertiesArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectPropertiesArgs:
    def __init__(__self__, *,
                 allow_full_scan: Optional[pulumi.Input[bool]] = None,
                 enable_decimal2: Optional[pulumi.Input[bool]] = None,
                 encryption: Optional[pulumi.Input['ProjectPropertiesEncryptionArgs']] = None,
                 retention_days: Optional[pulumi.Input[int]] = None,
                 sql_metering_max: Optional[pulumi.Input[str]] = None,
                 table_lifecycle: Optional[pulumi.Input['ProjectPropertiesTableLifecycleArgs']] = None,
                 timezone: Optional[pulumi.Input[str]] = None,
                 type_system: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[bool] allow_full_scan: Whether to allow full table scan. Default: false.
        :param pulumi.Input[bool] enable_decimal2: Whether to turn on Decimal2.0.
        :param pulumi.Input['ProjectPropertiesEncryptionArgs'] encryption: Storage encryption. For details, see [Storage Encryption](https://www.alibabacloud.com/help/en/maxcompute/security-and-compliance/storage-encryption)
               > **NOTE :**:  To enable storage encryption, you need to modify the parameters of the basic attributes of the MaxCompute project. This operation permission is authenticated by RAM, and you need to have the Super_Administrator role permission of the corresponding project.  To configure the permissions and IP whitelist parameters of the MaxCompute project, you must have the management permissions (Admin) of the corresponding project, including Super_Administrator, Admin, or custom management permissions. For more information, see the project management permissions list.  You can turn on storage encryption only for projects that have not turned on storage encryption. For projects that have turned on storage encryption, you cannot turn off storage encryption or change the encryption algorithm. See `encryption` below.
        :param pulumi.Input[int] retention_days: Set the number of days to retain backup data. During this time, you can restore the current version to any backup version. The value range of days is [0,30], and the default value is 1. 0 means backup is turned off. The effective policy after adjusting the backup cycle is: Extend the backup cycle: The new backup cycle takes effect on the same day. Shorten the backup cycle: The system will automatically delete backup data that has exceeded the retention cycle.
        :param pulumi.Input[str] sql_metering_max: Set the maximum threshold of single SQL consumption, that is, set the ODPS. SQL. metering.value.max attribute. For details, see [Consumption Monitoring Alarm](https://www.alibabacloud.com/help/en/maxcompute/product-overview/consumption-control). Unit: scan volume (GB)* complexity. .
        :param pulumi.Input['ProjectPropertiesTableLifecycleArgs'] table_lifecycle: Set whether the lifecycle of the table in the project needs to be configured, that is, set the ODPS. table.lifecycle property,. See `table_lifecycle` below.
        :param pulumi.Input[str] timezone: Project time zone, example value: Asia/Shanghai.
        :param pulumi.Input[str] type_system: Data type version. Value:(1/2/hive) 1: The original MaxCompute type system. 2: New type system introduced by MaxCompute 2.0. hive: the type system of the Hive compatibility mode introduced by MaxCompute 2.0.
        """
        if allow_full_scan is not None:
            pulumi.set(__self__, "allow_full_scan", allow_full_scan)
        if enable_decimal2 is not None:
            pulumi.set(__self__, "enable_decimal2", enable_decimal2)
        if encryption is not None:
            pulumi.set(__self__, "encryption", encryption)
        if retention_days is not None:
            pulumi.set(__self__, "retention_days", retention_days)
        if sql_metering_max is not None:
            pulumi.set(__self__, "sql_metering_max", sql_metering_max)
        if table_lifecycle is not None:
            pulumi.set(__self__, "table_lifecycle", table_lifecycle)
        if timezone is not None:
            pulumi.set(__self__, "timezone", timezone)
        if type_system is not None:
            pulumi.set(__self__, "type_system", type_system)

    @property
    @pulumi.getter(name="allowFullScan")
    def allow_full_scan(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether to allow full table scan. Default: false.
        """
        return pulumi.get(self, "allow_full_scan")

    @allow_full_scan.setter
    def allow_full_scan(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "allow_full_scan", value)

    @property
    @pulumi.getter(name="enableDecimal2")
    def enable_decimal2(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether to turn on Decimal2.0.
        """
        return pulumi.get(self, "enable_decimal2")

    @enable_decimal2.setter
    def enable_decimal2(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enable_decimal2", value)

    @property
    @pulumi.getter
    def encryption(self) -> Optional[pulumi.Input['ProjectPropertiesEncryptionArgs']]:
        """
        Storage encryption. For details, see [Storage Encryption](https://www.alibabacloud.com/help/en/maxcompute/security-and-compliance/storage-encryption)
        > **NOTE :**:  To enable storage encryption, you need to modify the parameters of the basic attributes of the MaxCompute project. This operation permission is authenticated by RAM, and you need to have the Super_Administrator role permission of the corresponding project.  To configure the permissions and IP whitelist parameters of the MaxCompute project, you must have the management permissions (Admin) of the corresponding project, including Super_Administrator, Admin, or custom management permissions. For more information, see the project management permissions list.  You can turn on storage encryption only for projects that have not turned on storage encryption. For projects that have turned on storage encryption, you cannot turn off storage encryption or change the encryption algorithm. See `encryption` below.
        """
        return pulumi.get(self, "encryption")

    @encryption.setter
    def encryption(self, value: Optional[pulumi.Input['ProjectPropertiesEncryptionArgs']]):
        pulumi.set(self, "encryption", value)

    @property
    @pulumi.getter(name="retentionDays")
    def retention_days(self) -> Optional[pulumi.Input[int]]:
        """
        Set the number of days to retain backup data. During this time, you can restore the current version to any backup version. The value range of days is [0,30], and the default value is 1. 0 means backup is turned off. The effective policy after adjusting the backup cycle is: Extend the backup cycle: The new backup cycle takes effect on the same day. Shorten the backup cycle: The system will automatically delete backup data that has exceeded the retention cycle.
        """
        return pulumi.get(self, "retention_days")

    @retention_days.setter
    def retention_days(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "retention_days", value)

    @property
    @pulumi.getter(name="sqlMeteringMax")
    def sql_metering_max(self) -> Optional[pulumi.Input[str]]:
        """
        Set the maximum threshold of single SQL consumption, that is, set the ODPS. SQL. metering.value.max attribute. For details, see [Consumption Monitoring Alarm](https://www.alibabacloud.com/help/en/maxcompute/product-overview/consumption-control). Unit: scan volume (GB)* complexity. .
        """
        return pulumi.get(self, "sql_metering_max")

    @sql_metering_max.setter
    def sql_metering_max(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "sql_metering_max", value)

    @property
    @pulumi.getter(name="tableLifecycle")
    def table_lifecycle(self) -> Optional[pulumi.Input['ProjectPropertiesTableLifecycleArgs']]:
        """
        Set whether the lifecycle of the table in the project needs to be configured, that is, set the ODPS. table.lifecycle property,. See `table_lifecycle` below.
        """
        return pulumi.get(self, "table_lifecycle")

    @table_lifecycle.setter
    def table_lifecycle(self, value: Optional[pulumi.Input['ProjectPropertiesTableLifecycleArgs']]):
        pulumi.set(self, "table_lifecycle", value)

    @property
    @pulumi.getter
    def timezone(self) -> Optional[pulumi.Input[str]]:
        """
        Project time zone, example value: Asia/Shanghai.
        """
        return pulumi.get(self, "timezone")

    @timezone.setter
    def timezone(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "timezone", value)

    @property
    @pulumi.getter(name="typeSystem")
    def type_system(self) -> Optional[pulumi.Input[str]]:
        """
        Data type version. Value:(1/2/hive) 1: The original MaxCompute type system. 2: New type system introduced by MaxCompute 2.0. hive: the type system of the Hive compatibility mode introduced by MaxCompute 2.0.
        """
        return pulumi.get(self, "type_system")

    @type_system.setter
    def type_system(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "type_system", value)


if not MYPY:
    class ProjectPropertiesEncryptionArgsDict(TypedDict):
        algorithm: NotRequired[pulumi.Input[str]]
        """
        The encryption algorithm supported by the key, including AES256, AESCTR, and RC4.
        """
        enable: NotRequired[pulumi.Input[bool]]
        """
        Only enable function is supported. Value: (true).
        """
        key: NotRequired[pulumi.Input[str]]
        """
        The encryption algorithm Key, the Key type used by the project, including the Default Key (MaxCompute Default Key) and the self-contained Key (BYOK). The MaxCompute Default Key is the Default Key created inside MaxCompute.
        """
elif False:
    ProjectPropertiesEncryptionArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectPropertiesEncryptionArgs:
    def __init__(__self__, *,
                 algorithm: Optional[pulumi.Input[str]] = None,
                 enable: Optional[pulumi.Input[bool]] = None,
                 key: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] algorithm: The encryption algorithm supported by the key, including AES256, AESCTR, and RC4.
        :param pulumi.Input[bool] enable: Only enable function is supported. Value: (true).
        :param pulumi.Input[str] key: The encryption algorithm Key, the Key type used by the project, including the Default Key (MaxCompute Default Key) and the self-contained Key (BYOK). The MaxCompute Default Key is the Default Key created inside MaxCompute.
        """
        if algorithm is not None:
            pulumi.set(__self__, "algorithm", algorithm)
        if enable is not None:
            pulumi.set(__self__, "enable", enable)
        if key is not None:
            pulumi.set(__self__, "key", key)

    @property
    @pulumi.getter
    def algorithm(self) -> Optional[pulumi.Input[str]]:
        """
        The encryption algorithm supported by the key, including AES256, AESCTR, and RC4.
        """
        return pulumi.get(self, "algorithm")

    @algorithm.setter
    def algorithm(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "algorithm", value)

    @property
    @pulumi.getter
    def enable(self) -> Optional[pulumi.Input[bool]]:
        """
        Only enable function is supported. Value: (true).
        """
        return pulumi.get(self, "enable")

    @enable.setter
    def enable(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enable", value)

    @property
    @pulumi.getter
    def key(self) -> Optional[pulumi.Input[str]]:
        """
        The encryption algorithm Key, the Key type used by the project, including the Default Key (MaxCompute Default Key) and the self-contained Key (BYOK). The MaxCompute Default Key is the Default Key created inside MaxCompute.
        """
        return pulumi.get(self, "key")

    @key.setter
    def key(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "key", value)


if not MYPY:
    class ProjectPropertiesTableLifecycleArgsDict(TypedDict):
        type: NotRequired[pulumi.Input[str]]
        """
        Project type
        """
        value: NotRequired[pulumi.Input[str]]
        """
        The value of the life cycle, in days. The value range is 1~37231, and the default value is 37231.
        """
elif False:
    ProjectPropertiesTableLifecycleArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectPropertiesTableLifecycleArgs:
    def __init__(__self__, *,
                 type: Optional[pulumi.Input[str]] = None,
                 value: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] type: Project type
        :param pulumi.Input[str] value: The value of the life cycle, in days. The value range is 1~37231, and the default value is 37231.
        """
        if type is not None:
            pulumi.set(__self__, "type", type)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def type(self) -> Optional[pulumi.Input[str]]:
        """
        Project type
        """
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "type", value)

    @property
    @pulumi.getter
    def value(self) -> Optional[pulumi.Input[str]]:
        """
        The value of the life cycle, in days. The value range is 1~37231, and the default value is 37231.
        """
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "value", value)


if not MYPY:
    class ProjectSecurityPropertiesArgsDict(TypedDict):
        enable_download_privilege: NotRequired[pulumi.Input[bool]]
        """
        Set whether to enable the [Download permission control function](https://www.alibabacloud.com/help/en/maxcompute/user-guide/download-control), that is, set the ODPS. security.enabledownloadprivilege property.
        """
        label_security: NotRequired[pulumi.Input[bool]]
        """
        Set whether to use the [Label permission control function](https://www.alibabacloud.com/help/en/maxcompute/user-guide/label-based-access-control), that is, set the LabelSecurity attribute, which is not used by default.
        """
        object_creator_has_access_permission: NotRequired[pulumi.Input[bool]]
        """
        Sets whether to allow the creator of the object to have access to the object, I .e. sets the attribute. The default is the allowed state.
        """
        object_creator_has_grant_permission: NotRequired[pulumi.Input[bool]]
        """
        The ObjectCreatorHasGrantPermission attribute is set to allow the object creator to have the authorization permission on the object. The default is the allowed state.
        """
        project_protection: NotRequired[pulumi.Input['ProjectSecurityPropertiesProjectProtectionArgsDict']]
        """
        Project protection. See `project_protection` below.
        """
        using_acl: NotRequired[pulumi.Input[bool]]
        """
        Set whether to use the [ACL permission control function](https://www.alibabacloud.com/help/en/maxcompute/user-guide/maxcompute-permissions), that is, set the CheckPermissionUsingACL attribute, which is in use by default.
        """
        using_policy: NotRequired[pulumi.Input[bool]]
        """
        Set whether to use the Policy permission control function (https://www.alibabacloud.com/help/en/maxcompute/user-guide/policy-based-access-control-1), that is, set the CheckPermissionUsingACL attribute, which is in use by default.
        """
elif False:
    ProjectSecurityPropertiesArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectSecurityPropertiesArgs:
    def __init__(__self__, *,
                 enable_download_privilege: Optional[pulumi.Input[bool]] = None,
                 label_security: Optional[pulumi.Input[bool]] = None,
                 object_creator_has_access_permission: Optional[pulumi.Input[bool]] = None,
                 object_creator_has_grant_permission: Optional[pulumi.Input[bool]] = None,
                 project_protection: Optional[pulumi.Input['ProjectSecurityPropertiesProjectProtectionArgs']] = None,
                 using_acl: Optional[pulumi.Input[bool]] = None,
                 using_policy: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[bool] enable_download_privilege: Set whether to enable the [Download permission control function](https://www.alibabacloud.com/help/en/maxcompute/user-guide/download-control), that is, set the ODPS. security.enabledownloadprivilege property.
        :param pulumi.Input[bool] label_security: Set whether to use the [Label permission control function](https://www.alibabacloud.com/help/en/maxcompute/user-guide/label-based-access-control), that is, set the LabelSecurity attribute, which is not used by default.
        :param pulumi.Input[bool] object_creator_has_access_permission: Sets whether to allow the creator of the object to have access to the object, I .e. sets the attribute. The default is the allowed state.
        :param pulumi.Input[bool] object_creator_has_grant_permission: The ObjectCreatorHasGrantPermission attribute is set to allow the object creator to have the authorization permission on the object. The default is the allowed state.
        :param pulumi.Input['ProjectSecurityPropertiesProjectProtectionArgs'] project_protection: Project protection. See `project_protection` below.
        :param pulumi.Input[bool] using_acl: Set whether to use the [ACL permission control function](https://www.alibabacloud.com/help/en/maxcompute/user-guide/maxcompute-permissions), that is, set the CheckPermissionUsingACL attribute, which is in use by default.
        :param pulumi.Input[bool] using_policy: Set whether to use the Policy permission control function (https://www.alibabacloud.com/help/en/maxcompute/user-guide/policy-based-access-control-1), that is, set the CheckPermissionUsingACL attribute, which is in use by default.
        """
        if enable_download_privilege is not None:
            pulumi.set(__self__, "enable_download_privilege", enable_download_privilege)
        if label_security is not None:
            pulumi.set(__self__, "label_security", label_security)
        if object_creator_has_access_permission is not None:
            pulumi.set(__self__, "object_creator_has_access_permission", object_creator_has_access_permission)
        if object_creator_has_grant_permission is not None:
            pulumi.set(__self__, "object_creator_has_grant_permission", object_creator_has_grant_permission)
        if project_protection is not None:
            pulumi.set(__self__, "project_protection", project_protection)
        if using_acl is not None:
            pulumi.set(__self__, "using_acl", using_acl)
        if using_policy is not None:
            pulumi.set(__self__, "using_policy", using_policy)

    @property
    @pulumi.getter(name="enableDownloadPrivilege")
    def enable_download_privilege(self) -> Optional[pulumi.Input[bool]]:
        """
        Set whether to enable the [Download permission control function](https://www.alibabacloud.com/help/en/maxcompute/user-guide/download-control), that is, set the ODPS. security.enabledownloadprivilege property.
        """
        return pulumi.get(self, "enable_download_privilege")

    @enable_download_privilege.setter
    def enable_download_privilege(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enable_download_privilege", value)

    @property
    @pulumi.getter(name="labelSecurity")
    def label_security(self) -> Optional[pulumi.Input[bool]]:
        """
        Set whether to use the [Label permission control function](https://www.alibabacloud.com/help/en/maxcompute/user-guide/label-based-access-control), that is, set the LabelSecurity attribute, which is not used by default.
        """
        return pulumi.get(self, "label_security")

    @label_security.setter
    def label_security(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "label_security", value)

    @property
    @pulumi.getter(name="objectCreatorHasAccessPermission")
    def object_creator_has_access_permission(self) -> Optional[pulumi.Input[bool]]:
        """
        Sets whether to allow the creator of the object to have access to the object, I .e. sets the attribute. The default is the allowed state.
        """
        return pulumi.get(self, "object_creator_has_access_permission")

    @object_creator_has_access_permission.setter
    def object_creator_has_access_permission(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "object_creator_has_access_permission", value)

    @property
    @pulumi.getter(name="objectCreatorHasGrantPermission")
    def object_creator_has_grant_permission(self) -> Optional[pulumi.Input[bool]]:
        """
        The ObjectCreatorHasGrantPermission attribute is set to allow the object creator to have the authorization permission on the object. The default is the allowed state.
        """
        return pulumi.get(self, "object_creator_has_grant_permission")

    @object_creator_has_grant_permission.setter
    def object_creator_has_grant_permission(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "object_creator_has_grant_permission", value)

    @property
    @pulumi.getter(name="projectProtection")
    def project_protection(self) -> Optional[pulumi.Input['ProjectSecurityPropertiesProjectProtectionArgs']]:
        """
        Project protection. See `project_protection` below.
        """
        return pulumi.get(self, "project_protection")

    @project_protection.setter
    def project_protection(self, value: Optional[pulumi.Input['ProjectSecurityPropertiesProjectProtectionArgs']]):
        pulumi.set(self, "project_protection", value)

    @property
    @pulumi.getter(name="usingAcl")
    def using_acl(self) -> Optional[pulumi.Input[bool]]:
        """
        Set whether to use the [ACL permission control function](https://www.alibabacloud.com/help/en/maxcompute/user-guide/maxcompute-permissions), that is, set the CheckPermissionUsingACL attribute, which is in use by default.
        """
        return pulumi.get(self, "using_acl")

    @using_acl.setter
    def using_acl(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "using_acl", value)

    @property
    @pulumi.getter(name="usingPolicy")
    def using_policy(self) -> Optional[pulumi.Input[bool]]:
        """
        Set whether to use the Policy permission control function (https://www.alibabacloud.com/help/en/maxcompute/user-guide/policy-based-access-control-1), that is, set the CheckPermissionUsingACL attribute, which is in use by default.
        """
        return pulumi.get(self, "using_policy")

    @using_policy.setter
    def using_policy(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "using_policy", value)


if not MYPY:
    class ProjectSecurityPropertiesProjectProtectionArgsDict(TypedDict):
        exception_policy: NotRequired[pulumi.Input[str]]
        """
        Set [Exceptions or Trusted Items](https://www.alibabacloud.com/help/en/maxcompute/security-and-compliance/project-data-protection).
        """
        protected: NotRequired[pulumi.Input[bool]]
        """
        Whether enabled, value:(true/false).
        """
elif False:
    ProjectSecurityPropertiesProjectProtectionArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ProjectSecurityPropertiesProjectProtectionArgs:
    def __init__(__self__, *,
                 exception_policy: Optional[pulumi.Input[str]] = None,
                 protected: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[str] exception_policy: Set [Exceptions or Trusted Items](https://www.alibabacloud.com/help/en/maxcompute/security-and-compliance/project-data-protection).
        :param pulumi.Input[bool] protected: Whether enabled, value:(true/false).
        """
        if exception_policy is not None:
            pulumi.set(__self__, "exception_policy", exception_policy)
        if protected is not None:
            pulumi.set(__self__, "protected", protected)

    @property
    @pulumi.getter(name="exceptionPolicy")
    def exception_policy(self) -> Optional[pulumi.Input[str]]:
        """
        Set [Exceptions or Trusted Items](https://www.alibabacloud.com/help/en/maxcompute/security-and-compliance/project-data-protection).
        """
        return pulumi.get(self, "exception_policy")

    @exception_policy.setter
    def exception_policy(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "exception_policy", value)

    @property
    @pulumi.getter
    def protected(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether enabled, value:(true/false).
        """
        return pulumi.get(self, "protected")

    @protected.setter
    def protected(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "protected", value)


