# 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 builtins
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__ = [
    'PolicyPolicyRoleArgs',
    'PolicyPolicyRoleArgsDict',
    'PolicyPolicyRolePolicyScopeArgs',
    'PolicyPolicyRolePolicyScopeArgsDict',
    'PolicyPolicyUserArgs',
    'PolicyPolicyUserArgsDict',
    'PolicyPolicyUserGroupArgs',
    'PolicyPolicyUserGroupArgsDict',
    'PolicyPolicyUserGroupPolicyScopeArgs',
    'PolicyPolicyUserGroupPolicyScopeArgsDict',
    'PolicyPolicyUserPolicyScopeArgs',
    'PolicyPolicyUserPolicyScopeArgsDict',
    'RolePolicyArgs',
    'RolePolicyArgsDict',
    'RoleTagArgs',
    'RoleTagArgsDict',
    'UserAccessKeyArgs',
    'UserAccessKeyArgsDict',
    'UserLoginProfileArgs',
    'UserLoginProfileArgsDict',
    'UserPolicyArgs',
    'UserPolicyArgsDict',
    'UserSecurityConfigArgs',
    'UserSecurityConfigArgsDict',
    'UserTagArgs',
    'UserTagArgsDict',
]

MYPY = False

if not MYPY:
    class PolicyPolicyRoleArgsDict(TypedDict):
        name: NotRequired[pulumi.Input[builtins.str]]
        """
        对应用户、角色、用户组的名称。
        """
        policy_scopes: NotRequired[pulumi.Input[Sequence[pulumi.Input['PolicyPolicyRolePolicyScopeArgsDict']]]]
elif False:
    PolicyPolicyRoleArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class PolicyPolicyRoleArgs:
    def __init__(__self__, *,
                 name: Optional[pulumi.Input[builtins.str]] = None,
                 policy_scopes: Optional[pulumi.Input[Sequence[pulumi.Input['PolicyPolicyRolePolicyScopeArgs']]]] = None):
        """
        :param pulumi.Input[builtins.str] name: 对应用户、角色、用户组的名称。
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if policy_scopes is not None:
            pulumi.set(__self__, "policy_scopes", policy_scopes)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        对应用户、角色、用户组的名称。
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="policyScopes")
    def policy_scopes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['PolicyPolicyRolePolicyScopeArgs']]]]:
        return pulumi.get(self, "policy_scopes")

    @policy_scopes.setter
    def policy_scopes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['PolicyPolicyRolePolicyScopeArgs']]]]):
        pulumi.set(self, "policy_scopes", value)


if not MYPY:
    class PolicyPolicyRolePolicyScopeArgsDict(TypedDict):
        project_name: NotRequired[pulumi.Input[builtins.str]]
        """
        项目名。
        """
elif False:
    PolicyPolicyRolePolicyScopeArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class PolicyPolicyRolePolicyScopeArgs:
    def __init__(__self__, *,
                 project_name: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] project_name: 项目名。
        """
        if project_name is not None:
            pulumi.set(__self__, "project_name", project_name)

    @property
    @pulumi.getter(name="projectName")
    def project_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        项目名。
        """
        return pulumi.get(self, "project_name")

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


if not MYPY:
    class PolicyPolicyUserArgsDict(TypedDict):
        name: NotRequired[pulumi.Input[builtins.str]]
        """
        对应用户、角色、用户组的名称。
        """
        policy_scopes: NotRequired[pulumi.Input[Sequence[pulumi.Input['PolicyPolicyUserPolicyScopeArgsDict']]]]
elif False:
    PolicyPolicyUserArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class PolicyPolicyUserArgs:
    def __init__(__self__, *,
                 name: Optional[pulumi.Input[builtins.str]] = None,
                 policy_scopes: Optional[pulumi.Input[Sequence[pulumi.Input['PolicyPolicyUserPolicyScopeArgs']]]] = None):
        """
        :param pulumi.Input[builtins.str] name: 对应用户、角色、用户组的名称。
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if policy_scopes is not None:
            pulumi.set(__self__, "policy_scopes", policy_scopes)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        对应用户、角色、用户组的名称。
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="policyScopes")
    def policy_scopes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['PolicyPolicyUserPolicyScopeArgs']]]]:
        return pulumi.get(self, "policy_scopes")

    @policy_scopes.setter
    def policy_scopes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['PolicyPolicyUserPolicyScopeArgs']]]]):
        pulumi.set(self, "policy_scopes", value)


if not MYPY:
    class PolicyPolicyUserGroupArgsDict(TypedDict):
        name: NotRequired[pulumi.Input[builtins.str]]
        """
        对应用户、角色、用户组的名称。
        """
        policy_scopes: NotRequired[pulumi.Input[Sequence[pulumi.Input['PolicyPolicyUserGroupPolicyScopeArgsDict']]]]
elif False:
    PolicyPolicyUserGroupArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class PolicyPolicyUserGroupArgs:
    def __init__(__self__, *,
                 name: Optional[pulumi.Input[builtins.str]] = None,
                 policy_scopes: Optional[pulumi.Input[Sequence[pulumi.Input['PolicyPolicyUserGroupPolicyScopeArgs']]]] = None):
        """
        :param pulumi.Input[builtins.str] name: 对应用户、角色、用户组的名称。
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if policy_scopes is not None:
            pulumi.set(__self__, "policy_scopes", policy_scopes)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        对应用户、角色、用户组的名称。
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="policyScopes")
    def policy_scopes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['PolicyPolicyUserGroupPolicyScopeArgs']]]]:
        return pulumi.get(self, "policy_scopes")

    @policy_scopes.setter
    def policy_scopes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['PolicyPolicyUserGroupPolicyScopeArgs']]]]):
        pulumi.set(self, "policy_scopes", value)


if not MYPY:
    class PolicyPolicyUserGroupPolicyScopeArgsDict(TypedDict):
        project_name: NotRequired[pulumi.Input[builtins.str]]
        """
        项目名。
        """
elif False:
    PolicyPolicyUserGroupPolicyScopeArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class PolicyPolicyUserGroupPolicyScopeArgs:
    def __init__(__self__, *,
                 project_name: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] project_name: 项目名。
        """
        if project_name is not None:
            pulumi.set(__self__, "project_name", project_name)

    @property
    @pulumi.getter(name="projectName")
    def project_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        项目名。
        """
        return pulumi.get(self, "project_name")

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


if not MYPY:
    class PolicyPolicyUserPolicyScopeArgsDict(TypedDict):
        project_name: NotRequired[pulumi.Input[builtins.str]]
        """
        项目名。
        """
elif False:
    PolicyPolicyUserPolicyScopeArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class PolicyPolicyUserPolicyScopeArgs:
    def __init__(__self__, *,
                 project_name: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] project_name: 项目名。
        """
        if project_name is not None:
            pulumi.set(__self__, "project_name", project_name)

    @property
    @pulumi.getter(name="projectName")
    def project_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        项目名。
        """
        return pulumi.get(self, "project_name")

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


if not MYPY:
    class RolePolicyArgsDict(TypedDict):
        policy_name: NotRequired[pulumi.Input[builtins.str]]
        """
        策略名。
        """
        policy_type: NotRequired[pulumi.Input[builtins.str]]
        """
        策略类型，策略类型。System代表系统预设策略，Custom代表自定义策略。
        """
elif False:
    RolePolicyArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RolePolicyArgs:
    def __init__(__self__, *,
                 policy_name: Optional[pulumi.Input[builtins.str]] = None,
                 policy_type: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] policy_name: 策略名。
        :param pulumi.Input[builtins.str] policy_type: 策略类型，策略类型。System代表系统预设策略，Custom代表自定义策略。
        """
        if policy_name is not None:
            pulumi.set(__self__, "policy_name", policy_name)
        if policy_type is not None:
            pulumi.set(__self__, "policy_type", policy_type)

    @property
    @pulumi.getter(name="policyName")
    def policy_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        策略名。
        """
        return pulumi.get(self, "policy_name")

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

    @property
    @pulumi.getter(name="policyType")
    def policy_type(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        策略类型，策略类型。System代表系统预设策略，Custom代表自定义策略。
        """
        return pulumi.get(self, "policy_type")

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


if not MYPY:
    class RoleTagArgsDict(TypedDict):
        key: NotRequired[pulumi.Input[builtins.str]]
        """
        标签键。
        """
        value: NotRequired[pulumi.Input[builtins.str]]
        """
        标签值。
        """
elif False:
    RoleTagArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RoleTagArgs:
    def __init__(__self__, *,
                 key: Optional[pulumi.Input[builtins.str]] = None,
                 value: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] key: 标签键。
        :param pulumi.Input[builtins.str] value: 标签值。
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签键。
        """
        return pulumi.get(self, "key")

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

    @property
    @pulumi.getter
    def value(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签值。
        """
        return pulumi.get(self, "value")

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


if not MYPY:
    class UserAccessKeyArgsDict(TypedDict):
        access_key_id: NotRequired[pulumi.Input[builtins.str]]
        """
        访问密钥ID。
        """
        created_time: NotRequired[pulumi.Input[builtins.str]]
        """
        访问密钥创建时间。
        """
        region: NotRequired[pulumi.Input[builtins.str]]
        """
        最近一次使用的服务区域。
        """
        request_time: NotRequired[pulumi.Input[builtins.str]]
        """
        访问密钥最近一次使用时间。
        """
        service: NotRequired[pulumi.Input[builtins.str]]
        """
        最近一次使用的服务名称。
        """
        status: NotRequired[pulumi.Input[builtins.str]]
        """
        访问密钥状态。Active代表启用，Inactive代表禁用。
        """
        updated_time: NotRequired[pulumi.Input[builtins.str]]
        """
        访问密钥更新时间。
        """
        user_name: NotRequired[pulumi.Input[builtins.str]]
        """
        访问密钥Secret。
        """
elif False:
    UserAccessKeyArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class UserAccessKeyArgs:
    def __init__(__self__, *,
                 access_key_id: Optional[pulumi.Input[builtins.str]] = None,
                 created_time: Optional[pulumi.Input[builtins.str]] = None,
                 region: Optional[pulumi.Input[builtins.str]] = None,
                 request_time: Optional[pulumi.Input[builtins.str]] = None,
                 service: Optional[pulumi.Input[builtins.str]] = None,
                 status: Optional[pulumi.Input[builtins.str]] = None,
                 updated_time: Optional[pulumi.Input[builtins.str]] = None,
                 user_name: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] access_key_id: 访问密钥ID。
        :param pulumi.Input[builtins.str] created_time: 访问密钥创建时间。
        :param pulumi.Input[builtins.str] region: 最近一次使用的服务区域。
        :param pulumi.Input[builtins.str] request_time: 访问密钥最近一次使用时间。
        :param pulumi.Input[builtins.str] service: 最近一次使用的服务名称。
        :param pulumi.Input[builtins.str] status: 访问密钥状态。Active代表启用，Inactive代表禁用。
        :param pulumi.Input[builtins.str] updated_time: 访问密钥更新时间。
        :param pulumi.Input[builtins.str] user_name: 访问密钥Secret。
        """
        if access_key_id is not None:
            pulumi.set(__self__, "access_key_id", access_key_id)
        if created_time is not None:
            pulumi.set(__self__, "created_time", created_time)
        if region is not None:
            pulumi.set(__self__, "region", region)
        if request_time is not None:
            pulumi.set(__self__, "request_time", request_time)
        if service is not None:
            pulumi.set(__self__, "service", service)
        if status is not None:
            pulumi.set(__self__, "status", status)
        if updated_time is not None:
            pulumi.set(__self__, "updated_time", updated_time)
        if user_name is not None:
            pulumi.set(__self__, "user_name", user_name)

    @property
    @pulumi.getter(name="accessKeyId")
    def access_key_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        访问密钥ID。
        """
        return pulumi.get(self, "access_key_id")

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

    @property
    @pulumi.getter(name="createdTime")
    def created_time(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        访问密钥创建时间。
        """
        return pulumi.get(self, "created_time")

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

    @property
    @pulumi.getter
    def region(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        最近一次使用的服务区域。
        """
        return pulumi.get(self, "region")

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

    @property
    @pulumi.getter(name="requestTime")
    def request_time(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        访问密钥最近一次使用时间。
        """
        return pulumi.get(self, "request_time")

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

    @property
    @pulumi.getter
    def service(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        最近一次使用的服务名称。
        """
        return pulumi.get(self, "service")

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

    @property
    @pulumi.getter
    def status(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        访问密钥状态。Active代表启用，Inactive代表禁用。
        """
        return pulumi.get(self, "status")

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

    @property
    @pulumi.getter(name="updatedTime")
    def updated_time(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        访问密钥更新时间。
        """
        return pulumi.get(self, "updated_time")

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

    @property
    @pulumi.getter(name="userName")
    def user_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        访问密钥Secret。
        """
        return pulumi.get(self, "user_name")

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


if not MYPY:
    class UserLoginProfileArgsDict(TypedDict):
        create_date: NotRequired[pulumi.Input[builtins.str]]
        """
        登录配置创建时间。
        """
        last_login_date: NotRequired[pulumi.Input[builtins.str]]
        """
        上次登录时间。
        """
        last_login_ip: NotRequired[pulumi.Input[builtins.str]]
        """
        上次登录IP。
        """
        last_reset_password_time: NotRequired[pulumi.Input[builtins.float]]
        """
        上次重置密码的时间，上次重置密码的时间。0代表未设置过密码，非0代表过期时间的时间戳。
        """
        login_allowed: NotRequired[pulumi.Input[builtins.bool]]
        """
        是否允许登录，是否允许登录。true代表允许，false代表不允许，默认为false。
        """
        login_locked: NotRequired[pulumi.Input[builtins.bool]]
        """
        登录是否被锁定。true代表已锁定，false代表未锁定。管理员设置错误密码重试次数限制后，用户命中后登录会被锁定。
        """
        password: NotRequired[pulumi.Input[builtins.str]]
        """
        登录密码。
        """
        password_expire_at: NotRequired[pulumi.Input[builtins.float]]
        """
        密码过期时间。0代表永不过期，非0代表过期时间的时间戳。
        """
        password_reset_required: NotRequired[pulumi.Input[builtins.bool]]
        """
        下次登录是否需要重设密码，下次登录是否需要重设密码。true代表允许，false代表不允许，默认为false。
        """
        safe_auth_exempt_duration: NotRequired[pulumi.Input[builtins.float]]
        """
        登录保护豁免时长，登录保护豁免时长。支持设置1至7（天），或1至168（小时），或5至1440（分钟）。单位设置请参考SafeAuthExemptUnit参数。
        """
        safe_auth_exempt_required: NotRequired[pulumi.Input[builtins.float]]
        """
        是否开启登录保护豁免，是否开启登录保护豁免。0代表不开启，1代表开启。开启登录保护豁免后，验证完成后一定时间内登录将不再进行验证。
        """
        safe_auth_exempt_unit: NotRequired[pulumi.Input[builtins.float]]
        """
        登录保护豁免的时间单位，登录保护豁免的时间单位。0代表分钟，1代表小时，2代表天。
        """
        safe_auth_flag: NotRequired[pulumi.Input[builtins.bool]]
        """
        是否开启登录保护，是否开启登录保护。true代表开启，false代表不开启，默认为false。
        """
        safe_auth_type: NotRequired[pulumi.Input[builtins.str]]
        """
        登录保护类型，登录保护类型。phone代表手机验证，email代表邮箱验证，vmfa代表验证MFA设备验证。支持设置多种操作保护类型，以英文逗号分隔。可选vmfa, phone, email, 多个选项逗号隔开。
        """
        update_date: NotRequired[pulumi.Input[builtins.str]]
        """
        登录配置更新时间。
        """
elif False:
    UserLoginProfileArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class UserLoginProfileArgs:
    def __init__(__self__, *,
                 create_date: Optional[pulumi.Input[builtins.str]] = None,
                 last_login_date: Optional[pulumi.Input[builtins.str]] = None,
                 last_login_ip: Optional[pulumi.Input[builtins.str]] = None,
                 last_reset_password_time: Optional[pulumi.Input[builtins.float]] = None,
                 login_allowed: Optional[pulumi.Input[builtins.bool]] = None,
                 login_locked: Optional[pulumi.Input[builtins.bool]] = None,
                 password: Optional[pulumi.Input[builtins.str]] = None,
                 password_expire_at: Optional[pulumi.Input[builtins.float]] = None,
                 password_reset_required: Optional[pulumi.Input[builtins.bool]] = None,
                 safe_auth_exempt_duration: Optional[pulumi.Input[builtins.float]] = None,
                 safe_auth_exempt_required: Optional[pulumi.Input[builtins.float]] = None,
                 safe_auth_exempt_unit: Optional[pulumi.Input[builtins.float]] = None,
                 safe_auth_flag: Optional[pulumi.Input[builtins.bool]] = None,
                 safe_auth_type: Optional[pulumi.Input[builtins.str]] = None,
                 update_date: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] create_date: 登录配置创建时间。
        :param pulumi.Input[builtins.str] last_login_date: 上次登录时间。
        :param pulumi.Input[builtins.str] last_login_ip: 上次登录IP。
        :param pulumi.Input[builtins.float] last_reset_password_time: 上次重置密码的时间，上次重置密码的时间。0代表未设置过密码，非0代表过期时间的时间戳。
        :param pulumi.Input[builtins.bool] login_allowed: 是否允许登录，是否允许登录。true代表允许，false代表不允许，默认为false。
        :param pulumi.Input[builtins.bool] login_locked: 登录是否被锁定。true代表已锁定，false代表未锁定。管理员设置错误密码重试次数限制后，用户命中后登录会被锁定。
        :param pulumi.Input[builtins.str] password: 登录密码。
        :param pulumi.Input[builtins.float] password_expire_at: 密码过期时间。0代表永不过期，非0代表过期时间的时间戳。
        :param pulumi.Input[builtins.bool] password_reset_required: 下次登录是否需要重设密码，下次登录是否需要重设密码。true代表允许，false代表不允许，默认为false。
        :param pulumi.Input[builtins.float] safe_auth_exempt_duration: 登录保护豁免时长，登录保护豁免时长。支持设置1至7（天），或1至168（小时），或5至1440（分钟）。单位设置请参考SafeAuthExemptUnit参数。
        :param pulumi.Input[builtins.float] safe_auth_exempt_required: 是否开启登录保护豁免，是否开启登录保护豁免。0代表不开启，1代表开启。开启登录保护豁免后，验证完成后一定时间内登录将不再进行验证。
        :param pulumi.Input[builtins.float] safe_auth_exempt_unit: 登录保护豁免的时间单位，登录保护豁免的时间单位。0代表分钟，1代表小时，2代表天。
        :param pulumi.Input[builtins.bool] safe_auth_flag: 是否开启登录保护，是否开启登录保护。true代表开启，false代表不开启，默认为false。
        :param pulumi.Input[builtins.str] safe_auth_type: 登录保护类型，登录保护类型。phone代表手机验证，email代表邮箱验证，vmfa代表验证MFA设备验证。支持设置多种操作保护类型，以英文逗号分隔。可选vmfa, phone, email, 多个选项逗号隔开。
        :param pulumi.Input[builtins.str] update_date: 登录配置更新时间。
        """
        if create_date is not None:
            pulumi.set(__self__, "create_date", create_date)
        if last_login_date is not None:
            pulumi.set(__self__, "last_login_date", last_login_date)
        if last_login_ip is not None:
            pulumi.set(__self__, "last_login_ip", last_login_ip)
        if last_reset_password_time is not None:
            pulumi.set(__self__, "last_reset_password_time", last_reset_password_time)
        if login_allowed is not None:
            pulumi.set(__self__, "login_allowed", login_allowed)
        if login_locked is not None:
            pulumi.set(__self__, "login_locked", login_locked)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if password_expire_at is not None:
            pulumi.set(__self__, "password_expire_at", password_expire_at)
        if password_reset_required is not None:
            pulumi.set(__self__, "password_reset_required", password_reset_required)
        if safe_auth_exempt_duration is not None:
            pulumi.set(__self__, "safe_auth_exempt_duration", safe_auth_exempt_duration)
        if safe_auth_exempt_required is not None:
            pulumi.set(__self__, "safe_auth_exempt_required", safe_auth_exempt_required)
        if safe_auth_exempt_unit is not None:
            pulumi.set(__self__, "safe_auth_exempt_unit", safe_auth_exempt_unit)
        if safe_auth_flag is not None:
            pulumi.set(__self__, "safe_auth_flag", safe_auth_flag)
        if safe_auth_type is not None:
            pulumi.set(__self__, "safe_auth_type", safe_auth_type)
        if update_date is not None:
            pulumi.set(__self__, "update_date", update_date)

    @property
    @pulumi.getter(name="createDate")
    def create_date(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        登录配置创建时间。
        """
        return pulumi.get(self, "create_date")

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

    @property
    @pulumi.getter(name="lastLoginDate")
    def last_login_date(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        上次登录时间。
        """
        return pulumi.get(self, "last_login_date")

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

    @property
    @pulumi.getter(name="lastLoginIp")
    def last_login_ip(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        上次登录IP。
        """
        return pulumi.get(self, "last_login_ip")

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

    @property
    @pulumi.getter(name="lastResetPasswordTime")
    def last_reset_password_time(self) -> Optional[pulumi.Input[builtins.float]]:
        """
        上次重置密码的时间，上次重置密码的时间。0代表未设置过密码，非0代表过期时间的时间戳。
        """
        return pulumi.get(self, "last_reset_password_time")

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

    @property
    @pulumi.getter(name="loginAllowed")
    def login_allowed(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        是否允许登录，是否允许登录。true代表允许，false代表不允许，默认为false。
        """
        return pulumi.get(self, "login_allowed")

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

    @property
    @pulumi.getter(name="loginLocked")
    def login_locked(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        登录是否被锁定。true代表已锁定，false代表未锁定。管理员设置错误密码重试次数限制后，用户命中后登录会被锁定。
        """
        return pulumi.get(self, "login_locked")

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

    @property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        登录密码。
        """
        return pulumi.get(self, "password")

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

    @property
    @pulumi.getter(name="passwordExpireAt")
    def password_expire_at(self) -> Optional[pulumi.Input[builtins.float]]:
        """
        密码过期时间。0代表永不过期，非0代表过期时间的时间戳。
        """
        return pulumi.get(self, "password_expire_at")

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

    @property
    @pulumi.getter(name="passwordResetRequired")
    def password_reset_required(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        下次登录是否需要重设密码，下次登录是否需要重设密码。true代表允许，false代表不允许，默认为false。
        """
        return pulumi.get(self, "password_reset_required")

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

    @property
    @pulumi.getter(name="safeAuthExemptDuration")
    def safe_auth_exempt_duration(self) -> Optional[pulumi.Input[builtins.float]]:
        """
        登录保护豁免时长，登录保护豁免时长。支持设置1至7（天），或1至168（小时），或5至1440（分钟）。单位设置请参考SafeAuthExemptUnit参数。
        """
        return pulumi.get(self, "safe_auth_exempt_duration")

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

    @property
    @pulumi.getter(name="safeAuthExemptRequired")
    def safe_auth_exempt_required(self) -> Optional[pulumi.Input[builtins.float]]:
        """
        是否开启登录保护豁免，是否开启登录保护豁免。0代表不开启，1代表开启。开启登录保护豁免后，验证完成后一定时间内登录将不再进行验证。
        """
        return pulumi.get(self, "safe_auth_exempt_required")

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

    @property
    @pulumi.getter(name="safeAuthExemptUnit")
    def safe_auth_exempt_unit(self) -> Optional[pulumi.Input[builtins.float]]:
        """
        登录保护豁免的时间单位，登录保护豁免的时间单位。0代表分钟，1代表小时，2代表天。
        """
        return pulumi.get(self, "safe_auth_exempt_unit")

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

    @property
    @pulumi.getter(name="safeAuthFlag")
    def safe_auth_flag(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        是否开启登录保护，是否开启登录保护。true代表开启，false代表不开启，默认为false。
        """
        return pulumi.get(self, "safe_auth_flag")

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

    @property
    @pulumi.getter(name="safeAuthType")
    def safe_auth_type(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        登录保护类型，登录保护类型。phone代表手机验证，email代表邮箱验证，vmfa代表验证MFA设备验证。支持设置多种操作保护类型，以英文逗号分隔。可选vmfa, phone, email, 多个选项逗号隔开。
        """
        return pulumi.get(self, "safe_auth_type")

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

    @property
    @pulumi.getter(name="updateDate")
    def update_date(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        登录配置更新时间。
        """
        return pulumi.get(self, "update_date")

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


if not MYPY:
    class UserPolicyArgsDict(TypedDict):
        policy_name: NotRequired[pulumi.Input[builtins.str]]
        """
        权限策略名称，长度1~64，支持英文、数字和+=,.@-_符号。
        """
        policy_type: NotRequired[pulumi.Input[builtins.str]]
        """
        权限策略类型，策略类型。System代表系统预设策略，Custom代表自定义策略。
        """
elif False:
    UserPolicyArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class UserPolicyArgs:
    def __init__(__self__, *,
                 policy_name: Optional[pulumi.Input[builtins.str]] = None,
                 policy_type: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] policy_name: 权限策略名称，长度1~64，支持英文、数字和+=,.@-_符号。
        :param pulumi.Input[builtins.str] policy_type: 权限策略类型，策略类型。System代表系统预设策略，Custom代表自定义策略。
        """
        if policy_name is not None:
            pulumi.set(__self__, "policy_name", policy_name)
        if policy_type is not None:
            pulumi.set(__self__, "policy_type", policy_type)

    @property
    @pulumi.getter(name="policyName")
    def policy_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        权限策略名称，长度1~64，支持英文、数字和+=,.@-_符号。
        """
        return pulumi.get(self, "policy_name")

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

    @property
    @pulumi.getter(name="policyType")
    def policy_type(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        权限策略类型，策略类型。System代表系统预设策略，Custom代表自定义策略。
        """
        return pulumi.get(self, "policy_type")

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


if not MYPY:
    class UserSecurityConfigArgsDict(TypedDict):
        safe_auth_close: NotRequired[pulumi.Input[builtins.float]]
        """
        是否开启操作保护。0代表开启，1代表关闭。
        """
        safe_auth_exempt_duration: NotRequired[pulumi.Input[builtins.float]]
        """
        操作保护的豁免时间，完成验证后在豁免时间内将不再进行验证。支持设置5至30，默认值为10。单位为分钟。
        """
        safe_auth_type: NotRequired[pulumi.Input[builtins.str]]
        """
        操作保护类型。phone代表手机验证，email代表邮箱验证，vmfa代表验证MFA设备验证。支持设置多种操作保护类型，以英文逗号分隔。
        """
elif False:
    UserSecurityConfigArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class UserSecurityConfigArgs:
    def __init__(__self__, *,
                 safe_auth_close: Optional[pulumi.Input[builtins.float]] = None,
                 safe_auth_exempt_duration: Optional[pulumi.Input[builtins.float]] = None,
                 safe_auth_type: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.float] safe_auth_close: 是否开启操作保护。0代表开启，1代表关闭。
        :param pulumi.Input[builtins.float] safe_auth_exempt_duration: 操作保护的豁免时间，完成验证后在豁免时间内将不再进行验证。支持设置5至30，默认值为10。单位为分钟。
        :param pulumi.Input[builtins.str] safe_auth_type: 操作保护类型。phone代表手机验证，email代表邮箱验证，vmfa代表验证MFA设备验证。支持设置多种操作保护类型，以英文逗号分隔。
        """
        if safe_auth_close is not None:
            pulumi.set(__self__, "safe_auth_close", safe_auth_close)
        if safe_auth_exempt_duration is not None:
            pulumi.set(__self__, "safe_auth_exempt_duration", safe_auth_exempt_duration)
        if safe_auth_type is not None:
            pulumi.set(__self__, "safe_auth_type", safe_auth_type)

    @property
    @pulumi.getter(name="safeAuthClose")
    def safe_auth_close(self) -> Optional[pulumi.Input[builtins.float]]:
        """
        是否开启操作保护。0代表开启，1代表关闭。
        """
        return pulumi.get(self, "safe_auth_close")

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

    @property
    @pulumi.getter(name="safeAuthExemptDuration")
    def safe_auth_exempt_duration(self) -> Optional[pulumi.Input[builtins.float]]:
        """
        操作保护的豁免时间，完成验证后在豁免时间内将不再进行验证。支持设置5至30，默认值为10。单位为分钟。
        """
        return pulumi.get(self, "safe_auth_exempt_duration")

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

    @property
    @pulumi.getter(name="safeAuthType")
    def safe_auth_type(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        操作保护类型。phone代表手机验证，email代表邮箱验证，vmfa代表验证MFA设备验证。支持设置多种操作保护类型，以英文逗号分隔。
        """
        return pulumi.get(self, "safe_auth_type")

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


if not MYPY:
    class UserTagArgsDict(TypedDict):
        key: NotRequired[pulumi.Input[builtins.str]]
        """
        标签键。
        """
        value: NotRequired[pulumi.Input[builtins.str]]
        """
        标签值。
        """
elif False:
    UserTagArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class UserTagArgs:
    def __init__(__self__, *,
                 key: Optional[pulumi.Input[builtins.str]] = None,
                 value: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] key: 标签键。
        :param pulumi.Input[builtins.str] value: 标签值。
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签键。
        """
        return pulumi.get(self, "key")

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

    @property
    @pulumi.getter
    def value(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签值。
        """
        return pulumi.get(self, "value")

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


