# 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
from . import outputs

__all__ = [
    'PolicyPolicyRole',
    'PolicyPolicyRolePolicyScope',
    'PolicyPolicyUser',
    'PolicyPolicyUserGroup',
    'PolicyPolicyUserGroupPolicyScope',
    'PolicyPolicyUserPolicyScope',
    'RolePolicy',
    'RoleTag',
    'UserAccessKey',
    'UserLoginProfile',
    'UserPolicy',
    'UserSecurityConfig',
    'UserTag',
    'GetPolicyPolicyRoleResult',
    'GetPolicyPolicyRolePolicyScopeResult',
    'GetPolicyPolicyUserResult',
    'GetPolicyPolicyUserGroupResult',
    'GetPolicyPolicyUserGroupPolicyScopeResult',
    'GetPolicyPolicyUserPolicyScopeResult',
    'GetRolePolicyResult',
    'GetRoleTagResult',
    'GetUserAccessKeyResult',
    'GetUserLoginProfileResult',
    'GetUserPolicyResult',
    'GetUserSecurityConfigResult',
    'GetUserTagResult',
]

@pulumi.output_type
class PolicyPolicyRole(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "policyScopes":
            suggest = "policy_scopes"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PolicyPolicyRole. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PolicyPolicyRole.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PolicyPolicyRole.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 name: Optional[builtins.str] = None,
                 policy_scopes: Optional[Sequence['outputs.PolicyPolicyRolePolicyScope']] = None):
        """
        :param 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[builtins.str]:
        """
        对应用户、角色、用户组的名称。
        """
        return pulumi.get(self, "name")

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


@pulumi.output_type
class PolicyPolicyRolePolicyScope(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "projectName":
            suggest = "project_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PolicyPolicyRolePolicyScope. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PolicyPolicyRolePolicyScope.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PolicyPolicyRolePolicyScope.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 project_name: Optional[builtins.str] = None):
        """
        :param 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[builtins.str]:
        """
        项目名。
        """
        return pulumi.get(self, "project_name")


@pulumi.output_type
class PolicyPolicyUser(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "policyScopes":
            suggest = "policy_scopes"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PolicyPolicyUser. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PolicyPolicyUser.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PolicyPolicyUser.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 name: Optional[builtins.str] = None,
                 policy_scopes: Optional[Sequence['outputs.PolicyPolicyUserPolicyScope']] = None):
        """
        :param 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[builtins.str]:
        """
        对应用户、角色、用户组的名称。
        """
        return pulumi.get(self, "name")

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


@pulumi.output_type
class PolicyPolicyUserGroup(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "policyScopes":
            suggest = "policy_scopes"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PolicyPolicyUserGroup. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PolicyPolicyUserGroup.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PolicyPolicyUserGroup.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 name: Optional[builtins.str] = None,
                 policy_scopes: Optional[Sequence['outputs.PolicyPolicyUserGroupPolicyScope']] = None):
        """
        :param 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[builtins.str]:
        """
        对应用户、角色、用户组的名称。
        """
        return pulumi.get(self, "name")

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


@pulumi.output_type
class PolicyPolicyUserGroupPolicyScope(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "projectName":
            suggest = "project_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PolicyPolicyUserGroupPolicyScope. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PolicyPolicyUserGroupPolicyScope.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PolicyPolicyUserGroupPolicyScope.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 project_name: Optional[builtins.str] = None):
        """
        :param 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[builtins.str]:
        """
        项目名。
        """
        return pulumi.get(self, "project_name")


@pulumi.output_type
class PolicyPolicyUserPolicyScope(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "projectName":
            suggest = "project_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PolicyPolicyUserPolicyScope. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PolicyPolicyUserPolicyScope.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PolicyPolicyUserPolicyScope.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 project_name: Optional[builtins.str] = None):
        """
        :param 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[builtins.str]:
        """
        项目名。
        """
        return pulumi.get(self, "project_name")


@pulumi.output_type
class RolePolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "policyName":
            suggest = "policy_name"
        elif key == "policyType":
            suggest = "policy_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in RolePolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        RolePolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        RolePolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 policy_name: Optional[builtins.str] = None,
                 policy_type: Optional[builtins.str] = None):
        """
        :param builtins.str policy_name: 策略名。
        :param 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[builtins.str]:
        """
        策略名。
        """
        return pulumi.get(self, "policy_name")

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


@pulumi.output_type
class RoleTag(dict):
    def __init__(__self__, *,
                 key: Optional[builtins.str] = None,
                 value: Optional[builtins.str] = None):
        """
        :param builtins.str key: 标签键。
        :param 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[builtins.str]:
        """
        标签键。
        """
        return pulumi.get(self, "key")

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


@pulumi.output_type
class UserAccessKey(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "accessKeyId":
            suggest = "access_key_id"
        elif key == "createdTime":
            suggest = "created_time"
        elif key == "requestTime":
            suggest = "request_time"
        elif key == "updatedTime":
            suggest = "updated_time"
        elif key == "userName":
            suggest = "user_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in UserAccessKey. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        UserAccessKey.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        UserAccessKey.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 access_key_id: Optional[builtins.str] = None,
                 created_time: Optional[builtins.str] = None,
                 region: Optional[builtins.str] = None,
                 request_time: Optional[builtins.str] = None,
                 service: Optional[builtins.str] = None,
                 status: Optional[builtins.str] = None,
                 updated_time: Optional[builtins.str] = None,
                 user_name: Optional[builtins.str] = None):
        """
        :param builtins.str access_key_id: 访问密钥ID。
        :param builtins.str created_time: 访问密钥创建时间。
        :param builtins.str region: 最近一次使用的服务区域。
        :param builtins.str request_time: 访问密钥最近一次使用时间。
        :param builtins.str service: 最近一次使用的服务名称。
        :param builtins.str status: 访问密钥状态。Active代表启用，Inactive代表禁用。
        :param builtins.str updated_time: 访问密钥更新时间。
        :param 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[builtins.str]:
        """
        访问密钥ID。
        """
        return pulumi.get(self, "access_key_id")

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

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

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

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

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

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

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


@pulumi.output_type
class UserLoginProfile(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "createDate":
            suggest = "create_date"
        elif key == "lastLoginDate":
            suggest = "last_login_date"
        elif key == "lastLoginIp":
            suggest = "last_login_ip"
        elif key == "lastResetPasswordTime":
            suggest = "last_reset_password_time"
        elif key == "loginAllowed":
            suggest = "login_allowed"
        elif key == "loginLocked":
            suggest = "login_locked"
        elif key == "passwordExpireAt":
            suggest = "password_expire_at"
        elif key == "passwordResetRequired":
            suggest = "password_reset_required"
        elif key == "safeAuthExemptDuration":
            suggest = "safe_auth_exempt_duration"
        elif key == "safeAuthExemptRequired":
            suggest = "safe_auth_exempt_required"
        elif key == "safeAuthExemptUnit":
            suggest = "safe_auth_exempt_unit"
        elif key == "safeAuthFlag":
            suggest = "safe_auth_flag"
        elif key == "safeAuthType":
            suggest = "safe_auth_type"
        elif key == "updateDate":
            suggest = "update_date"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in UserLoginProfile. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        UserLoginProfile.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        UserLoginProfile.__key_warning(key)
        return super().get(key, default)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


@pulumi.output_type
class UserPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "policyName":
            suggest = "policy_name"
        elif key == "policyType":
            suggest = "policy_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in UserPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        UserPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        UserPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 policy_name: Optional[builtins.str] = None,
                 policy_type: Optional[builtins.str] = None):
        """
        :param builtins.str policy_name: 权限策略名称，长度1~64，支持英文、数字和+=,.@-_符号。
        :param 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[builtins.str]:
        """
        权限策略名称，长度1~64，支持英文、数字和+=,.@-_符号。
        """
        return pulumi.get(self, "policy_name")

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


@pulumi.output_type
class UserSecurityConfig(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "safeAuthClose":
            suggest = "safe_auth_close"
        elif key == "safeAuthExemptDuration":
            suggest = "safe_auth_exempt_duration"
        elif key == "safeAuthType":
            suggest = "safe_auth_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in UserSecurityConfig. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        UserSecurityConfig.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        UserSecurityConfig.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 safe_auth_close: Optional[builtins.float] = None,
                 safe_auth_exempt_duration: Optional[builtins.float] = None,
                 safe_auth_type: Optional[builtins.str] = None):
        """
        :param builtins.float safe_auth_close: 是否开启操作保护。0代表开启，1代表关闭。
        :param builtins.float safe_auth_exempt_duration: 操作保护的豁免时间，完成验证后在豁免时间内将不再进行验证。支持设置5至30，默认值为10。单位为分钟。
        :param 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[builtins.float]:
        """
        是否开启操作保护。0代表开启，1代表关闭。
        """
        return pulumi.get(self, "safe_auth_close")

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

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


@pulumi.output_type
class UserTag(dict):
    def __init__(__self__, *,
                 key: Optional[builtins.str] = None,
                 value: Optional[builtins.str] = None):
        """
        :param builtins.str key: 标签键。
        :param 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[builtins.str]:
        """
        标签键。
        """
        return pulumi.get(self, "key")

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


@pulumi.output_type
class GetPolicyPolicyRoleResult(dict):
    def __init__(__self__, *,
                 created_time: builtins.str,
                 description: builtins.str,
                 display_name: builtins.str,
                 entities_id: builtins.int,
                 name: builtins.str,
                 policy_scopes: Sequence['outputs.GetPolicyPolicyRolePolicyScopeResult']):
        """
        :param builtins.str created_time: 策略绑定时间。
        :param builtins.str description: 策略描述。
        :param builtins.str display_name: 显示名称。
        :param builtins.int entities_id: 唯一标识。
        :param builtins.str name: 对应用户、角色、用户组的名称。
        :param Sequence['GetPolicyPolicyRolePolicyScopeArgs'] policy_scopes: 策略绑定的项目列表。
        """
        pulumi.set(__self__, "created_time", created_time)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "entities_id", entities_id)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "policy_scopes", policy_scopes)

    @property
    @pulumi.getter(name="createdTime")
    def created_time(self) -> builtins.str:
        """
        策略绑定时间。
        """
        return pulumi.get(self, "created_time")

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        策略描述。
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> builtins.str:
        """
        显示名称。
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="entitiesId")
    def entities_id(self) -> builtins.int:
        """
        唯一标识。
        """
        return pulumi.get(self, "entities_id")

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

    @property
    @pulumi.getter(name="policyScopes")
    def policy_scopes(self) -> Sequence['outputs.GetPolicyPolicyRolePolicyScopeResult']:
        """
        策略绑定的项目列表。
        """
        return pulumi.get(self, "policy_scopes")


@pulumi.output_type
class GetPolicyPolicyRolePolicyScopeResult(dict):
    def __init__(__self__, *,
                 created_time: builtins.str,
                 policy_scope_type: builtins.str,
                 project_display_name: builtins.str,
                 project_name: builtins.str):
        """
        :param builtins.str created_time: 项目授权时间。
        :param builtins.str policy_scope_type: 授权类型。Global代表全局授权，Project代表按项目授权。
        :param builtins.str project_display_name: 项目显示名。
        :param builtins.str project_name: 项目名。
        """
        pulumi.set(__self__, "created_time", created_time)
        pulumi.set(__self__, "policy_scope_type", policy_scope_type)
        pulumi.set(__self__, "project_display_name", project_display_name)
        pulumi.set(__self__, "project_name", project_name)

    @property
    @pulumi.getter(name="createdTime")
    def created_time(self) -> builtins.str:
        """
        项目授权时间。
        """
        return pulumi.get(self, "created_time")

    @property
    @pulumi.getter(name="policyScopeType")
    def policy_scope_type(self) -> builtins.str:
        """
        授权类型。Global代表全局授权，Project代表按项目授权。
        """
        return pulumi.get(self, "policy_scope_type")

    @property
    @pulumi.getter(name="projectDisplayName")
    def project_display_name(self) -> builtins.str:
        """
        项目显示名。
        """
        return pulumi.get(self, "project_display_name")

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


@pulumi.output_type
class GetPolicyPolicyUserResult(dict):
    def __init__(__self__, *,
                 created_time: builtins.str,
                 description: builtins.str,
                 display_name: builtins.str,
                 entities_id: builtins.int,
                 name: builtins.str,
                 policy_scopes: Sequence['outputs.GetPolicyPolicyUserPolicyScopeResult']):
        """
        :param builtins.str created_time: 策略绑定时间。
        :param builtins.str description: 策略描述。
        :param builtins.str display_name: 显示名称。
        :param builtins.int entities_id: 唯一标识。
        :param builtins.str name: 对应用户、角色、用户组的名称。
        :param Sequence['GetPolicyPolicyUserPolicyScopeArgs'] policy_scopes: 策略绑定的项目列表。
        """
        pulumi.set(__self__, "created_time", created_time)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "entities_id", entities_id)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "policy_scopes", policy_scopes)

    @property
    @pulumi.getter(name="createdTime")
    def created_time(self) -> builtins.str:
        """
        策略绑定时间。
        """
        return pulumi.get(self, "created_time")

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        策略描述。
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> builtins.str:
        """
        显示名称。
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="entitiesId")
    def entities_id(self) -> builtins.int:
        """
        唯一标识。
        """
        return pulumi.get(self, "entities_id")

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

    @property
    @pulumi.getter(name="policyScopes")
    def policy_scopes(self) -> Sequence['outputs.GetPolicyPolicyUserPolicyScopeResult']:
        """
        策略绑定的项目列表。
        """
        return pulumi.get(self, "policy_scopes")


@pulumi.output_type
class GetPolicyPolicyUserGroupResult(dict):
    def __init__(__self__, *,
                 created_time: builtins.str,
                 description: builtins.str,
                 display_name: builtins.str,
                 entities_id: builtins.int,
                 name: builtins.str,
                 policy_scopes: Sequence['outputs.GetPolicyPolicyUserGroupPolicyScopeResult']):
        """
        :param builtins.str created_time: 策略绑定时间。
        :param builtins.str description: 策略描述。
        :param builtins.str display_name: 显示名称。
        :param builtins.int entities_id: 唯一标识。
        :param builtins.str name: 对应用户、角色、用户组的名称。
        :param Sequence['GetPolicyPolicyUserGroupPolicyScopeArgs'] policy_scopes: 策略绑定的项目列表。
        """
        pulumi.set(__self__, "created_time", created_time)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "entities_id", entities_id)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "policy_scopes", policy_scopes)

    @property
    @pulumi.getter(name="createdTime")
    def created_time(self) -> builtins.str:
        """
        策略绑定时间。
        """
        return pulumi.get(self, "created_time")

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        策略描述。
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> builtins.str:
        """
        显示名称。
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="entitiesId")
    def entities_id(self) -> builtins.int:
        """
        唯一标识。
        """
        return pulumi.get(self, "entities_id")

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

    @property
    @pulumi.getter(name="policyScopes")
    def policy_scopes(self) -> Sequence['outputs.GetPolicyPolicyUserGroupPolicyScopeResult']:
        """
        策略绑定的项目列表。
        """
        return pulumi.get(self, "policy_scopes")


@pulumi.output_type
class GetPolicyPolicyUserGroupPolicyScopeResult(dict):
    def __init__(__self__, *,
                 created_time: builtins.str,
                 policy_scope_type: builtins.str,
                 project_display_name: builtins.str,
                 project_name: builtins.str):
        """
        :param builtins.str created_time: 项目授权时间。
        :param builtins.str policy_scope_type: 授权类型。Global代表全局授权，Project代表按项目授权。
        :param builtins.str project_display_name: 项目显示名。
        :param builtins.str project_name: 项目名。
        """
        pulumi.set(__self__, "created_time", created_time)
        pulumi.set(__self__, "policy_scope_type", policy_scope_type)
        pulumi.set(__self__, "project_display_name", project_display_name)
        pulumi.set(__self__, "project_name", project_name)

    @property
    @pulumi.getter(name="createdTime")
    def created_time(self) -> builtins.str:
        """
        项目授权时间。
        """
        return pulumi.get(self, "created_time")

    @property
    @pulumi.getter(name="policyScopeType")
    def policy_scope_type(self) -> builtins.str:
        """
        授权类型。Global代表全局授权，Project代表按项目授权。
        """
        return pulumi.get(self, "policy_scope_type")

    @property
    @pulumi.getter(name="projectDisplayName")
    def project_display_name(self) -> builtins.str:
        """
        项目显示名。
        """
        return pulumi.get(self, "project_display_name")

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


@pulumi.output_type
class GetPolicyPolicyUserPolicyScopeResult(dict):
    def __init__(__self__, *,
                 created_time: builtins.str,
                 policy_scope_type: builtins.str,
                 project_display_name: builtins.str,
                 project_name: builtins.str):
        """
        :param builtins.str created_time: 项目授权时间。
        :param builtins.str policy_scope_type: 授权类型。Global代表全局授权，Project代表按项目授权。
        :param builtins.str project_display_name: 项目显示名。
        :param builtins.str project_name: 项目名。
        """
        pulumi.set(__self__, "created_time", created_time)
        pulumi.set(__self__, "policy_scope_type", policy_scope_type)
        pulumi.set(__self__, "project_display_name", project_display_name)
        pulumi.set(__self__, "project_name", project_name)

    @property
    @pulumi.getter(name="createdTime")
    def created_time(self) -> builtins.str:
        """
        项目授权时间。
        """
        return pulumi.get(self, "created_time")

    @property
    @pulumi.getter(name="policyScopeType")
    def policy_scope_type(self) -> builtins.str:
        """
        授权类型。Global代表全局授权，Project代表按项目授权。
        """
        return pulumi.get(self, "policy_scope_type")

    @property
    @pulumi.getter(name="projectDisplayName")
    def project_display_name(self) -> builtins.str:
        """
        项目显示名。
        """
        return pulumi.get(self, "project_display_name")

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


@pulumi.output_type
class GetRolePolicyResult(dict):
    def __init__(__self__, *,
                 policy_name: builtins.str,
                 policy_type: builtins.str):
        """
        :param builtins.str policy_name: 策略名。
        :param builtins.str policy_type: 策略类型，策略类型。System代表系统预设策略，Custom代表自定义策略。
        """
        pulumi.set(__self__, "policy_name", policy_name)
        pulumi.set(__self__, "policy_type", policy_type)

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

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


@pulumi.output_type
class GetRoleTagResult(dict):
    def __init__(__self__, *,
                 key: builtins.str,
                 value: builtins.str):
        """
        :param builtins.str key: 标签键。
        :param builtins.str value: 标签值。
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)

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

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


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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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


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

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

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

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


@pulumi.output_type
class GetUserTagResult(dict):
    def __init__(__self__, *,
                 key: builtins.str,
                 value: builtins.str):
        """
        :param builtins.str key: 标签键。
        :param builtins.str value: 标签值。
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)

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

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


