blob: be3025f0c4addca3aab6892cc5ba04b2cdfc2ceb [file] [log] [blame]
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
syntax = "proto2";
option optimize_for = LITE_RUNTIME;
package enterprise_management;
message DevicePolicyRefreshRateProto {
// In milliseconds.
optional int64 device_policy_refresh_rate = 1;
}
message UserWhitelistProto {
// If a UserWhitelistProto is included in the ChromeDeviceSettingsProto but
// the user_whitelist field is empty then no user can sign-in.
repeated string user_whitelist = 1;
}
message AllowNewUsersProto {
// Determines whether we allow arbitrary users to log into the device.
// This interacts with the UserWhitelistProto as follows:
// allow_new_users | user_whitelist | anyone can log in
//-----------------+--------------------+------------------
// present, true | not present | Yes
//-----------------+--------------------+------------------
// present, true | present | Yes
//-----------------+--------------------+------------------
// present, false | not present | (Broken) Yes
//-----------------+--------------------+------------------
// present, false | present | No, W/L enforced
//-----------------+--------------------+------------------
// not present | not present | Yes
//-----------------+--------------------+------------------
// not present | present, empty | Yes
//-----------------+--------------------+------------------
// not present | present, non-empty | No, W/L enforced
//-----------------+--------------------+------------------
optional bool allow_new_users = 1 [default = true];
}
message GuestModeEnabledProto {
// Determines if guests are allowed to log in to the device.
optional bool guest_mode_enabled = 1 [default = true];
}
message ShowUserNamesOnSigninProto {
// Determines if we show pods for existing users on the sign in screen.
optional bool show_user_names = 1 [default = true];
}
message DataRoamingEnabledProto {
// Determines if cellular data roaming is enabled.
optional bool data_roaming_enabled = 1 [default = false];
}
message OBSOLETE_DeviceProxySettingsProto {
// One of "direct", "auto_detect", "pac_script", "fixed_servers", "system"
optional string OBSOLETE_proxy_mode = 1 [deprecated = true];
optional string OBSOLETE_proxy_server = 2 [deprecated = true];
optional string OBSOLETE_proxy_pac_url = 3 [deprecated = true];
optional string OBSOLETE_proxy_bypass_list = 4 [deprecated = true];
}
// This is used by chromeos, make sure to do cleanup there before marking it as
// obsolette.
message CameraEnabledProto {
optional bool camera_enabled = 1;
}
message MetricsEnabledProto {
optional bool metrics_enabled = 1;
}
message ReleaseChannelProto {
// One of "stable-channel", "beta-channel", or "dev-channel"
optional string release_channel = 1;
// If |release_channel_delegated| is set to true and the |release_channel|
// field is not set or left empty, the user can select the channel. If the
// |release_channel| is specified it will always override users choice!
optional bool release_channel_delegated = 2;
}
message DeviceOpenNetworkConfigurationProto {
// The network configuration blob. This is a JSON string as specified by ONC.
optional string open_network_configuration = 1;
}
message NetworkHostnameProto {
// The device hostname template. It might contain following
// patterns that would be substituted by the device:
// ASSET_ID, SERIAL_NUM, MAC_ADDR, and string after substitution should
// be a valid hostname.
optional string device_hostname_template = 1;
}
// Policies to turn on portions of the device status reports.
message DeviceReportingProto {
optional bool report_version_info = 1 [default = true];
optional bool report_activity_times = 2 [default = true];
optional bool report_boot_mode = 3 [default = true];
optional bool report_location = 4 [default = false];
optional bool report_network_interfaces = 5 [default = true];
optional bool report_users = 6 [default = true];
optional bool report_hardware_status = 7 [default = true];
optional bool report_session_status = 8 [default = true];
optional bool report_os_update_status = 10 [default = false];
optional bool report_running_kiosk_app = 11 [default = false];
optional bool report_power_status = 12 [default = false];
optional bool report_storage_status = 13 [default = false];
optional bool report_board_status = 14 [default = false];
// Frequency to report device status, default to 3 hours.
optional int64 device_status_frequency = 9 [default = 10800000];
}
message EphemeralUsersEnabledProto {
// Determines whether users should be treated as ephemeral. In ephemeral users
// mode, no cryptohome is created for the user, but a tmpfs mount is used
// instead such that upon logout all user state is discarded.
optional bool ephemeral_users_enabled = 1;
}
// Details of an extension to install as part of the AppPack.
message OBSOLETE_AppPackEntryProto {
optional string OBSOLETE_extension_id = 1 [deprecated = true];
optional string OBSOLETE_update_url = 2 [deprecated = true];
// This field was added but never used and there are no plans to support it
// eventually either.
optional bool OBSOLETE_online_only = 3 [deprecated = true];
}
message OBSOLETE_AppPackProto {
// List of extensions to install as part of the AppPack.
repeated OBSOLETE_AppPackEntryProto app_pack = 1 [deprecated = true];
}
// This is a special policy for kiosk/retail mode that specifies what apps
// should be pinned to the launcher. For regular accounts, pinned apps are
// controlled through user policy.
message OBSOLETE_PinnedAppsProto {
// App IDs for the apps to pin.
repeated string OBSOLETE_app_id = 1 [deprecated = true];
}
message OBSOLETE_ForcedLogoutTimeoutsProto {
// All timeouts are specified in milliseconds.
// Specifies the timeout before an idle user session is terminated.
// If this field is omitted or set to 0, no logout on idle will be performed.
optional int64 OBSOLETE_idle_logout_timeout = 1 [deprecated = true];
// Specifies the duration of a warning countdown before the user is logged out
// because of idleness as specified by the |idle_logout_timeout| value.
// This field is only used if |idle_logout_timeout| != 0 is specified.
optional int64 OBSOLETE_idle_logout_warning_duration = 2 [deprecated = true];
}
message OBSOLETE_ScreenSaverProto {
// Specifies the extension ID which is to be used as a screen saver on the
// login screen if no user activity is present. Only respected if the device
// is in RETAIL mode.
optional string OBSOLETE_screen_saver_extension_id = 1 [deprecated = true];
// Specifies the timeout before the screen saver is activated. If this field
// is omitted or set to 0, no screen-saver will be started.
// Measured in milliseconds.
optional int64 OBSOLETE_screen_saver_timeout = 2 [deprecated = true];
}
// Enterprise controls for auto-update behavior of Chrome OS.
message AutoUpdateSettingsProto {
reserved 13;
// True if we don't want the device to auto-update (target_version_prefix is
// ignored in this case).
optional bool update_disabled = 1;
// Specifies the prefix of the target version we want the device to
// update to, if it's on an older version. If the device is already on
// a version with the given prefix, then there's no effect. If the device is
// on a higher version, the behavior depends on |rollback_to_target_version|.
// The format of this version can be one of the following:
// ---------------------------------------------------------------------
// "" (or not set at all): update to latest version available.
// 1412.: update to any minor version of 1412 (e.g. 1412.24.34 or 1412.60.2)
// 1412.2.: update to any minor version of 1412.2 (e.g. 1412.2.34 or 1412.2.2)
// 1412.24.34: update to this specific version only
// ---------------------------------------------------------------------
optional string target_version_prefix = 2;
// The Chrome browser version (e.g. "17.*") corresponding to the
// target_version_prefix above. The target_version_prefix is the internal OS
// version that external users normally are not aware of. This display_name
// can be used by the devices to display a message to end-users about the auto
// update setting.
optional string target_version_display_name = 3;
// Specifies the number of seconds up to which a device may randomly
// delay its download of an update from the time the update was first pushed
// out to the server. The device may wait a portion of this time in terms
// of wall-clock-time and the remaining portion in terms of the number of
// update checks. In any case, the scatter is upper bounded by a constant
// amount of time so that a device does not ever get stuck waiting to download
// an update forever.
optional int64 scatter_factor_in_seconds = 4;
// Enumerates network connection types.
enum ConnectionType {
CONNECTION_TYPE_ETHERNET = 0;
CONNECTION_TYPE_WIFI = 1;
CONNECTION_TYPE_WIMAX = 2;
CONNECTION_TYPE_BLUETOOTH = 3;
CONNECTION_TYPE_CELLULAR = 4;
}
// The types of connections that are OK to use for OS updates. OS updates
// potentially put heavy strain on the connection due to their size and may
// incur additional cost. Therefore, they are by default not enabled for
// connection types that are considered expensive, which include WiMax,
// Bluetooth and Cellular at the moment.
repeated ConnectionType allowed_connection_types = 5;
// This has been replaced by |reboot_after_update| below.
optional bool OBSOLETE_reboot_after_update = 6 [deprecated = true];
// True if AU payloads can be downloaded via HTTP. False otherwise.
optional bool http_downloads_enabled = 7 [default = false];
// True if the device should reboot automatically when an update has been
// applied and a reboot is required to complete the update process.
//
// Note: Currently, automatic reboots are only enabled while the login screen
// is being shown or a kiosk app session is in progress. This will change in
// the future and the policy will always apply, regardless of whether a
// session of any particular type is in progress or not.
optional bool reboot_after_update = 8;
// True if AU payloads may be shared with and consumed from other devices
// on the LAN, using p2p. False otherwise.
optional bool p2p_enabled = 9 [default = false];
// The possible types of rollback.
enum RollbackToTargetVersion {
// No value set. Default is ROLLBACK_DISABLED.
ROLLBACK_UNSPECIFIED = 0;
// No rollback should happen if |target_version_prefix| specifies an older
// version than the currently installed Chrome OS version. If this is the
// case, the device will still respect |target_version_prefix|, so it will
// not update Chrome OS.
ROLLBACK_DISABLED = 1;
// If |target_version_prefix| specifies an older version than the currently
// installed Chrome OS version, the device should roll back to a Chrome OS
// version starting with |target_version_prefix|. The device does a full
// powerwash during the rollback, including TPM reset.
ROLLBACK_AND_POWERWASH = 2;
// If |target_version_prefix| specifies an older version than the currently
// installed Chrome OS version, the device should roll back to a Chrome OS
// version starting with |target_version_prefix|.
// If possible, the device tries to carry over device-level configuration
// including network credentials during the rollback process.
// If that is not possible, rolls back with a full powerwash.
ROLLBACK_AND_RESTORE_IF_POSSIBLE = 3;
// If |target_version_prefix| specifies an older version than the currently
// installed Chrome OS version and it's possible to carry over device-level
// configuration such as network credentials during the rollback process
// and skipping OOBE after the rollback, the device rolls back to a Chrome
// OS version starting with |target_version_prefix|.
// If this is not possible, the device will stay on the current version
// (same as ROLLBACK_DISABLED).
ROLLBACK_ONLY_IF_RESTORE_POSSIBLE = 4;
}
// Specifies what should happen if |target_version_prefix| specifies an older
// version than the currently installed Chrome OS version.
optional RollbackToTargetVersion rollback_to_target_version = 10
[default = ROLLBACK_DISABLED];
// Specifies the number of Chrome milestones rollback should be allowed,
// starting from the stable version at any time. Setting this policy prevents
// firmware and kernel rollback protection to apply for at least this number
// of milestones.
optional int32 rollback_allowed_milestones = 11 [default = 0];
// Specifies the time intervals during which the device is not allowed to do
// automatic update checks. This is a JSON string, for details see
// "DeviceAutoUpdateTimeRestrictions" in policy_templates.json.
optional string disallowed_time_intervals = 12;
// Specifies how much of the fleet to update per day as a json
// string that contains a list of pairs <day, percentage>. For more
// details and examples, see "DeviceUpdateStagingSchedule" in
// policy_templates.json.
optional string staging_schedule = 14;
}
message OBSOLETE_StartUpUrlsProto {
// Specifies the URLs to be loaded on login to the anonymous account used if
// the device is in RETAIL mode.
repeated string OBSOLETE_start_up_urls = 1 [deprecated = true];
}
message SystemTimezoneProto {
// Specifies an owner-determined timezone that applies to the login screen and
// all users. Valid values are listed in "timezone_settings.cc". Additionally,
// timezones from the "IANA Time Zone Database" (e.g. listed on wikipedia)
// that are equivalent to one of the timezones in "timezone_settings.cc" are
// valid. In case of an invalid value, the setting is still activated with a
// fallback timezone (currently "GMT"). In case of an empty string or if no
// value is provided, the timezone device setting is inactive. In that case,
// the currently active timezone will remain in use however users can change
// the timezone and the change is persistent. Thus a change by one user
// affects the login-screen and all other users.
optional string timezone = 1;
// This allows domain administrators to control the timezone settings for
// their devices.
enum AutomaticTimezoneDetectionType {
USERS_DECIDE = 0;
DISABLED = 1;
IP_ONLY = 2;
SEND_WIFI_ACCESS_POINTS = 3;
SEND_ALL_LOCATION_INFO = 4;
};
optional AutomaticTimezoneDetectionType timezone_detection_type = 2;
}
message SystemUse24HourClockProto {
// Specifies an owner-determined clock format that applies to the login
// screen and is used as a default for all user sessions. Users can still
// override the format to use for their account.
//
// True and false select a 24 and 12 hour clock format, respectively. The
// default format for the case the setting is not present is 24 hour clock.
optional bool use_24hour_clock = 1;
}
// Parameters for Kiosk App device-local accounts.
message KioskAppInfoProto {
// Indicates the Kiosk App for the corresponding device-local account. The
// string value should be a valid 32-character Chrome App identifier and
// specifies the Kiosk App to download and run.
optional string app_id = 1;
// Optional extension update URL to download the Kiosk App package from. If
// not specified, the app will be downloaded from the standard Chrome Web
// Store update URL.
optional string update_url = 2;
}
// Describes which Android application is to be launched.
message AndroidKioskAppInfoProto {
// Package name (must be present).
// In the event this is the only field that is specified, runtime may use
// PackageManager.getLaunchIntentForPackage() to start the app. See
// https://developer.android.com/reference/android/content/pm/PackageManager.html
// Example of the package name: "com.android.camera". Do not include "app:"
// prefix in the package name.
optional string package_name = 1;
// Class name (optional). If present, class name is to be combined with
// package name to form a ComponentName. See
// https://developer.android.com/reference/android/content/ComponentName.html
optional string class_name = 2;
// Action (optional). The third parameter required for creating an Intent.
// If omitted, runtime may choose a reasonable default action
// (e.g. android.intent.action.MAIN).
// If package and action are specified, but not the class name, runtime may
// use PackageManager.queryIntentActivity() to find out the class name.
optional string action = 3;
// Display name (optional).
// User-friendly app name that should be used in Chrome UI where kiosk app
// name is shown. Chrome side could override the string with an updated
// value that it will get from Google Play when the app will be installed.
optional string display_name = 4;
}
// Describes a single device-local account.
message DeviceLocalAccountInfoProto {
// Deprecated: Account identifier for a public session device-local account.
// Old code didn't have the |type| field, so it can't handle new types of
// device-local accounts gracefully (i.e. ignoring unsupported types). New
// code should instead set type to ACCOUNT_TYPE_PUBLIC_SESSION and write the
// identifier to the |account_id| field below. If the |type| field is present,
// |deprecated_public_session_id| will be ignored.
optional string deprecated_public_session_id = 1;
// Identifier for the device-local account. This is an opaque identifier that
// is used to distinguish different device-local accounts configured. All
// configured accounts on a device must have unique identifiers.
optional string account_id = 2;
// Indicates the type of device-local account.
enum AccountType {
// A login-less, policy-configured browsing session.
ACCOUNT_TYPE_PUBLIC_SESSION = 0;
// An account that serves as a container for a single full-screen
// Chrome app.
ACCOUNT_TYPE_KIOSK_APP = 1;
// An account that serves as a container for a single full-screen
// Android app.
ACCOUNT_TYPE_KIOSK_ANDROID_APP = 2;
};
// The account type.
optional AccountType type = 3;
// Kiosk App parameters, relevant if |type| is ACCOUNT_TYPE_KIOSK_APP.
optional KioskAppInfoProto kiosk_app = 4;
// Kiosk App parameters, relevant if |type| is ACCOUNT_TYPE_KIOSK_ANDROID_APP
optional AndroidKioskAppInfoProto android_kiosk_app = 5;
}
message DeviceLocalAccountsProto {
// The list of device-local accounts (i.e. accounts without an associated
// cloud-backed profile) that are available on the device.
repeated DeviceLocalAccountInfoProto account = 1;
// The identifier of the device-local account to which the device
// should be logged in automatically. Should be equal to one of the
// ids in DeviceLocalAccountInfoProto.
optional string auto_login_id = 2;
// The amount of time, in milliseconds, that should elapse at the signin
// screen without user interaction before automatically logging in.
optional int64 auto_login_delay = 3;
// Whether the keyboard shortcut to prevent zero-delay auto-login should be
// enabled or not. By default, the user has 3 seconds to press a shortcut
// to prevent auto-login, which is useful to sign-in to a regular user session
// and configure the machine. If this policy is set to false then this
// shortcut is disabled and there is no way to skip auto-login.
optional bool enable_auto_login_bailout = 4 [default = true];
// Whether network configuration should be offered or not when the device
// does not have access to the Internet. If the policy is omitted or set to
// true, the network configuration will be offered. Otherwise, only an error
// message is displayed.
// Note: If both this policy and enable_auto_login_bailout policy above is
// set to false, there are chances that the device might become totally
// unusable when there is no Internet access and has to go through the
// recovery process.
// If the device is offline at startup then the network configuration screen
// is always shown, before auto-login kicks in.
optional bool prompt_for_network_when_offline = 5 [default = true];
}
message AllowRedeemChromeOsRegistrationOffersProto {
// Chrome OS Registration service provides way for chromeos device users
// to redeem electronic offers provided by service provider.
// This value determines if users are allowed to redeem offers through
// Chrome OS Registration service.
optional bool allow_redeem_offers = 1 [default = true];
}
message StartUpFlagsProto {
// Specifies the flags that should be applied to Google Chrome when it starts.
// The specified flags are applied on the login screen only. Flags set via
// this policy do not propagate into user sessions.
repeated string flags = 1;
}
message UptimeLimitProto {
// This has been replaced by |uptime_limit| below.
optional int64 OBSOLETE_uptime_limit = 1 [deprecated = true];
// Sets the length of device uptime after which an automatic reboot is
// scheduled. An automatic reboot is scheduled at the selected time but may be
// delayed on the device by up to 24 hours, e.g. if a user is currently using
// the device or an app/extension has requested reboots to be inhibited
// temporarily. The policy value should be specified in seconds.
//
// Note: Currently, automatic reboots are only enabled while the login screen
// is being shown or a kiosk app session is in progress. This will change in
// the future and the policy will always apply, regardless of whether a
// session of any particular type is in progress or not.
optional int64 uptime_limit = 2;
}
message VariationsParameterProto {
// The string for the restrict parameter to be appended to the Variations URL
// when pinging the Variations server.
optional string parameter = 1;
}
message AttestationSettingsProto {
// Attestation involves proving that a cryptographic key is protected by a
// legitimate Chrome OS TPM and reporting the operating mode of the platform.
// This setting enables enterprise attestation features at a device level. If
// this is enabled a machine key will be generated and certified by the Chrome
// OS CA. If this setting is disabled, even users with attestation settings
// enabled will not be able to use those features on the device.
optional bool attestation_enabled = 1 [default = false];
// Chrome OS devices can use remote attestation (Verified Access) to get a
// certificate issued by the Chrome OS CA that asserts the device is eligible
// to play protected content. This process involves sending hardware
// endorsement information to the Chrome OS CA which uniquely identifies the
// device. This setting allows this feature to be disabled for the device
// regardless of any user-specific settings.
optional bool content_protection_enabled = 2 [default = true];
}
message AccessibilitySettingsProto {
// Sets the default state of the large cursor accessibility feature on the
// login screen. If this policy is set to true, the large cursor will be
// enabled when the login screen is shown. If this policy is set to false, the
// large cursor will be disabled when the login screen is shown. Users can
// temporarily override this setting by enabling or disabling the large
// cursor. However, the user's choice is not persistent and the default is
// restored whenever the login screen is shown anew or the user remains idle
// on the login screen for a minute. If this policy is left unset, the large
// cursor is disabled when the login screen is first shown. Users can enable
// or disable the large cursor anytime and its status on the login screen is
// persisted between users.
optional bool login_screen_default_large_cursor_enabled = 1;
// Sets the default state of the spoken feedback accessibility feature on the
// login screen. If this policy is set to true, spoken feedback will be
// enabled when the login screen is shown. If this policy is set to false,
// spoken feedback will be disabled when the login screen is shown. Users can
// temporarily override this setting by enabling or disabling spoken feedback.
// However, the user's choice is not persistent and the default is restored
// whenever the login screen is shown anew or the user remains idle on the
// login screen for a minute. If this policy is left unset, spoken feedback is
// disabled when the login screen is first shown. Users can enable or disable
// spoken feedback anytime and its status on the login screen is persisted
// between users.
optional bool login_screen_default_spoken_feedback_enabled = 2;
// Sets the default state of the high contrast mode accessibility feature on
// the login screen. If this policy is set to true, high contrast mode will be
// enabled when the login screen is shown. If this policy is set to false,
// high contrast mode will be disabled when the login screen is shown. Users
// can temporarily override this setting by enabling or disabling high
// contrast mode. However, the user's choice is not persistent and the default
// is restored whenever the login screen is shown anew or the user remains
// idle on the login screen for a minute. If this policy is left unset, high
// contrast mode is disabled when the login screen is first shown. Users can
// enable or disable high contrast mode anytime and its status on the login
// screen is persisted between users.
optional bool login_screen_default_high_contrast_enabled = 3;
// Enumerates the screen magnifier types.
enum ScreenMagnifierType {
// Screen magnifier disabled.
SCREEN_MAGNIFIER_TYPE_NONE = 0;
// Full-screen magnifier enabled.
SCREEN_MAGNIFIER_TYPE_FULL = 1;
};
// Sets the default type of screen magnifier that is enabled on the login
// screen. If this policy is set, it controls the type of screen magnifier
// that is enabled when the login screen is shown. Users can temporarily
// override this setting by enabling or disabling the screen magnifier.
// However, the user's choice is not persistent and the default is restored
// whenever the login screen is shown anew or the user remains idle on the
// login screen for a minute. If this policy is left unset, the screen
// magnifier is disabled when the login screen is first shown. Users can
// enable or disable the screen magnifier anytime and its status on the login
// screen is persisted between users.
optional ScreenMagnifierType login_screen_default_screen_magnifier_type = 4;
// Sets the default state of the on-screen keyboard accessibility feature on
// the login screen. If this policy is set to true, the on-screen keyboard
// will be enabled when the login screen is shown. If this policy is set to
// false, the on-screen keyboard will be disabled when the login screen is
// shown. Users can temporarily override this setting by enabling or disabling
// the on-screen keyboard. However, the user's choice is not persistent and
// the default is restored whenever the login screen is shown anew or the user
// remains idle on the login screen for a minute. If this policy is left
// unset, the on-screen keyboard is disabled when the login screen is first
// shown. Users can enable or disable the on-screen keyboard anytime and its
// status on the login screen is persisted between users.
optional bool login_screen_default_virtual_keyboard_enabled = 5;
}
message SupervisedUsersSettingsProto {
// Defines whether supervised users can be created on the device.
optional bool supervised_users_enabled = 1;
}
message LoginScreenPowerManagementProto {
// Configures power management on the login screen. The policy should be
// specified as a string that expresses the individual settings in JSON
// format, conforming to the following schema:
// {
// "type": "object",
// "properties": {
// "AC": {
// "description": "Power management settings applicable only when
// running on AC power",
// "type": "object",
// "properties": {
// "Delays": {
// "type": "object",
// "properties": {
// "ScreenDim": {
// "description": "The length of time without user input after
// which the screen is dimmed, in milliseconds",
// "type": "integer",
// "minimum": 0
// },
// "ScreenOff": {
// "description": "The length of time without user input after
// which the screen is turned off, in
// milliseconds",
// "type": "integer",
// "minimum": 0
// },
// "Idle": {
// "description": "The length of time without user input after
// which the idle action is taken, in
// milliseconds",
// "type": "integer",
// "minimum": 0
// }
// }
// },
// "IdleAction": {
// "description": "Action to take when the idle delay is reached",
// "enum": [ "Suspend", "Shutdown", "DoNothing" ]
// }
// }
// },
// "Battery": {
// "description": "Power management settings applicable only when
// running on battery power",
// "type": "object",
// "properties": {
// "Delays": {
// "type": "object",
// "properties": {
// "ScreenDim": {
// "description": "The length of time without user input after
// which the screen is dimmed, in milliseconds",
// "type": "integer",
// "minimum": 0
// },
// "ScreenOff": {
// "description": "The length of time without user input after
// which the screen is turned off, in
// milliseconds",
// "type": "integer",
// "minimum": 0
// },
// "Idle": {
// "description": "The length of time without user input after
// which the idle action is taken, in
// milliseconds",
// "type": "integer",
// "minimum": 0
// }
// }
// },
// "IdleAction": {
// "description": "Action to take when the idle delay is reached",
// "enum": [ "Suspend", "Shutdown", "DoNothing" ]
// }
// }
// },
// "LidCloseAction": {
// "description": "Action to take when the lid is closed",
// "enum": [ "Suspend", "Shutdown", "DoNothing" ]
// },
// "UserActivityScreenDimDelayScale": {
// "description": "Percentage by which the screen dim delay is scaled
// when user activity is observed while the screen is
// dimmed or soon after the screen has been turned off",
// "type": "integer",
// "minimum": 0
// }
// }
// }
optional string login_screen_power_management = 1;
}
message AutoCleanupSettigsProto {
// Deprecated. There is only one disk-full cleanup strategy: LRU.
optional string clean_up_strategy = 1;
}
// Settings that control low-level functions of the system.
message SystemSettingsProto {
// Whether developer mode is allowed on the device. If the device owner sets
// this flag to true, the system will refuse to boot and show an error screen
// when the developer switch is turned on.
optional bool block_devmode = 1;
}
// Settings that control login for SAML users.
message SAMLSettingsProto {
// Whether cookies set by a SAML IdP should be transferred to users' profiles
// every time a user authenticates via SAML during login. If false, cookies
// are transferred during each user's first login only.
optional bool transfer_saml_cookies = 1;
}
message RebootOnShutdownProto {
// Determines whether the device automatically reboots whenever the user shuts
// it down. If this flag is set to true, shutdown is forbidden and UI elements
// trigger a device reboot instead of a power off. This policy affects
// shutdowns triggered from the UI only. If the user shuts down the device
// using the power button, it will not automatically reboot, even if the
// policy is enabled.
optional bool reboot_on_shutdown = 1 [default = false];
}
// Settings that control whether a device would send heartbeat messages to GCM,
// and how frequently to send these.
message DeviceHeartbeatSettingsProto {
// Whether the device should send heartbeat messages. The default is false.
optional bool heartbeat_enabled = 1 [default = false];
// How frequently devices send heartbeats back to server. The unit is in
// milliseconds. The default is 2 minutes.
optional int64 heartbeat_frequency = 2 [default = 120000];
}
message ExtensionCacheSizeProto {
// Specifies the maximum extension cache size, in bytes. The default is 256
// MiB. The minimum allowed value is 1 MiB, smaller values will get ignored.
optional int64 extension_cache_size = 1;
}
message LoginScreenDomainAutoCompleteProto {
// If this policy is not configured or set to a blank string,
// no autocomplete option during user sign-in flow will be shown.
// If this policy is set to a string representing a domain name, an
// autocomplete option during user sign-in will be shown allowing the user
// to type in only their user name without the domain name extension. The user
// will be able to overwrite this domain name extension.
optional string login_screen_domain_auto_complete = 1;
}
// Settings that control whether a device would send system logs to the server.
message DeviceLogUploadSettingsProto {
// Whether the device should send system logs. The default is false.
optional bool system_log_upload_enabled = 1 [default = false];
}
// This setting is controlled by the device policy DisplayRotationDefault.
// If the policy is set and therefore display_rotation_default contains a value,
// all displays will be rotated clockwise to the specified orientation at
// reboot, when first connected, or when the setting is changed.
// If the optional field |Rotation display_rotation_default = 1| is not present,
// no changes are done to the rotation.
message DisplayRotationDefaultProto {
// This enum corresponds to gfx::Display::Rotation in ui/gfx/display.h.
enum Rotation {
ROTATE_0 = 0;
ROTATE_90 = 1;
ROTATE_180 = 2;
ROTATE_270 = 3;
};
optional Rotation display_rotation_default = 1;
}
// This setting is configured by the device policy DeviceDisplayResolution.
// If |device_display_resolution| contains a value, then it's treated as a JSON
// object that uses the schema defined for DeviceDisplayResolution policy.
// Example of the policy value:
// {
// "external_width": 1920,
// "external_height": 1080,
// "external_scale_percentage": 50,
// "internal_scale_percentage": 150,
// "recommended": true
// }
// It sets a 1920x1080 display mode for any external displays and
// scales them to 50%, also scales the built-in display to 150%.
// If "recommended" flag is set to true, user is able to override
// any settings via the settings page.
message DeviceDisplayResolutionProto {
optional string device_display_resolution = 1;
}
// Settings that control whether to allow Chrome to be pinned to a specific
// version according to the auto-launched kiosk app’s requirement.
message AllowKioskAppControlChromeVersionProto {
optional bool allow_kiosk_app_control_chrome_version = 1 [default = false];
}
// Settings that control the flow of the login authentication to be either via
// GAIA (default), or via an interstitial screen that can redirect to a SAML IdP
// endpoint or return back to the default GAIA flow.
message LoginAuthenticationBehaviorProto {
enum LoginBehavior {
GAIA = 0;
SAML_INTERSTITIAL = 1;
};
optional LoginBehavior login_authentication_behavior = 1 [default = GAIA];
}
// Identifiers of a USB device or device family.
message UsbDeviceIdProto {
// USB Vendor Identifier (aka idVendor).
optional int32 vendor_id = 1;
// USB Product Identifier (aka idProduct).
optional int32 product_id = 2;
}
// This setting contains the list of USB devices to detach from the kernel
// drivers in order to use them in web applications.
// The list is used by the permission_broker daemon.
message UsbDetachableWhitelistProto {
repeated UsbDeviceIdProto id = 1;
}
message AllowBluetoothProto {
// Policy which controls whether Bluetooth is available.
optional bool allow_bluetooth = 1 [default = true];
}
// Settings that control whether a device can download hardware configuration
// files from the Quirks Server.
message DeviceQuirksDownloadEnabledProto {
optional bool quirks_download_enabled = 1;
}
// A list of security origins for SAML login pages that are allowed to
// access the webcam. No login pages will be allowed to access the
// webcam if the list is empty.
message LoginVideoCaptureAllowedUrlsProto {
repeated string urls = 1;
}
// Settings that control whether a device can connect to a 802.11r enabled
// WiFi network.
message DeviceWiFiFastTransitionEnabledProto {
optional bool device_wifi_fast_transition_enabled = 1;
}
message NetworkThrottlingEnabledProto {
optional bool enabled = 1 [default = false];
optional int32 upload_rate_kbits = 2 [default = 0];
optional int32 download_rate_kbits = 3 [default = 0];
}
// A list of apps to install from the webstore on the login page. It is a list
// of strings, each string contains an extension ID and an update URL, delimited
// by a semicolon.
message DeviceLoginScreenAppInstallListProto {
repeated string device_login_screen_app_install_list = 1;
}
// A list of allowed locales on the login screen.
message LoginScreenLocalesProto {
repeated string login_screen_locales = 1;
}
// A list of allowed input methods on the login screen.
message LoginScreenInputMethodsProto {
repeated string login_screen_input_methods = 1;
}
// The url and hash specified in JSON format that can be used to set the
// device-level wallpaper on the login screen before any user logs in.
message DeviceWallpaperImageProto {
optional string device_wallpaper_image = 1;
}
// Migration strategy for the case when ARC(N+) needs the ext4 encryption while
// the device used ecryptfs in the past.
message DeviceEcryptfsMigrationStrategyProto {
enum MigrationStrategy {
// Default value, unspecified.
UNSET = 0;
// ARC is not allowed, no data migration needed.
DISALLOW_ARC = 1;
// The data migration is allowed, opening the possibility to use ARC.
ALLOW_MIGRATION = 2;
};
optional MigrationStrategy migration_strategy = 1;
}
// This setting controls how the on-board secure element hardware can be used
// to provide a second-factor authentication in addition to the TPM
// functionality.
message DeviceSecondFactorAuthenticationProto {
enum U2fMode {
// Default value, unspecified.
UNSET = 0;
// Feature disabled.
DISABLED = 1;
// U2F as defined by the FIDO Alliance specification:
// https://fidoalliance.org/specs/fido-u2f-v1.1-id-20160915.zip
U2F = 2;
// U2F plus extensions for individual attestation certificate.
U2F_EXTENDED = 3;
};
optional U2fMode mode = 1;
}
message CastReceiverNameProto {
// The name advertised as a Google Cast destination by the device,
// up to 24 characters. If the name is empty, the device name will
// be used.
optional string name = 1;
}
// Day of the week and time in milliseconds since the start of the day.
message WeeklyTimeProto {
enum DayOfWeek {
DAY_OF_WEEK_UNSPECIFIED = 0;
MONDAY = 1;
TUESDAY = 2;
WEDNESDAY = 3;
THURSDAY = 4;
FRIDAY = 5;
SATURDAY = 6;
SUNDAY = 7;
}
// Day of week.
optional DayOfWeek day_of_week = 1;
// Time of day in milliseconds from beginning of the day.
optional int32 time = 2;
}
// Start and end of an interval represented by WeeklyTimes
message WeeklyTimeIntervalProto {
optional WeeklyTimeProto start = 1;
optional WeeklyTimeProto end = 2;
}
// Allow less restricted using of Chromebooks that are managed by school,
// while the device is not at school ("OffHours").
message DeviceOffHoursProto {
// List of intervals when ignored policies are not applied. These intervals
// are in the timezone specified by the timezone string.
repeated WeeklyTimeIntervalProto intervals = 1;
// Timezone in the same format as SystemTimezoneProto.timezone.
// If timezone isn't set then "GMT" will be used
optional string timezone = 2;
// List of policy proto tags which settings are ignored during OffHours
// mode. List contains policy proto tags from ChromeDeviceSettingsProto
// (i.e. proto tag = 1 means device_policy_refresh_rate policy).
// Proto tags are used because they are consistent identifiers.
// During OffHoursMode default settings of ignored policies are used.
repeated int32 ignored_policy_proto_tags = 3;
}
// The url and hash specified in JSON format that can be used to retrieve
// the device-level printers configuration file.
message DeviceNativePrintersProto {
// External policy blob encoded as JSON.
optional string external_policy = 1;
}
// The policy which determines the type of access restriction that is applied to
// the devicel-level printers list.
message DeviceNativePrintersAccessModeProto {
enum AccessMode {
ACCESS_MODE_BLACKLIST = 0; // Use NatvePrintersBlacklistProto.
ACCESS_MODE_WHITELIST = 1; // Use NaviePrintersWhitelistProto.
ACCESS_MODE_ALL = 2; // Allow access to all specified printers.
}
// The type of access which is applied to the device-level printer list.
optional AccessMode access_mode = 1;
}
// A collection of ids defining the printers which are explicitly disallowed for
// the device.
message DeviceNativePrintersBlacklistProto {
// A collection of ids for which are explicitly disallowed.
repeated string blacklist = 1;
}
// A collection of ids defining the printers which are explicitly allowed for
// the device.
message DeviceNativePrintersWhitelistProto {
// A collection of ids for the list of printers which are accessible.
repeated string whitelist = 1;
}
// Settings to control the behavior of the TPM firmware update functionality.
message TPMFirmwareUpdateSettingsProto {
// Whether the user is allowed to invoke the update via powerwash. This flow
// performs a powerwash operation (which implies a TPM clear), followed by
// installation of the TPM firmware update. As a result of the powerwash, all
// writable data on the device will be cleared.
optional bool allow_user_initiated_powerwash = 1;
// Whether the user is allowed to invoke a variant of the update flow that
// clears the TPM to install the firmware update, but preserves device-wide
// state (including enrollment). User data will not be preserved in this flow.
optional bool allow_user_initiated_preserve_device_state = 2;
}
// Settings to control the minimum version that is allowed to sign in / stay
// in session.
message MinimumRequiredVersionProto {
// Value is chrome_version string, e.g. 61.0.3163.120
// The client will use prefix matching to compare its version against the
// value of this field.
optional string chrome_version = 1;
}
// Specifies a list of rules to automatically select certificates on SAML IdP
// pages on the sign-in screen.
message DeviceLoginScreenAutoSelectCertificateForUrls {
// Each entry is one rule, which must be a stringified JSON dictionary.
// Each dictionary must have the form { "pattern": "$URL_PATTERN", "filter" :
// $FILTER }. $FILTER restricts from which client certificates the browser
// will automatically select. Independent of the filter, only certificates
// will be selected that match the server's certificate request. If $FILTER
// has the form { "ISSUER": { "CN": "$ISSUER_CN" } }, additionally only client
// certificates are selected that are issued by a certificate with the
// CommonName $ISSUER_CN. If $FILTER is the empty dictionary {}, the selection
// of client certificates is not additionally restricted.
repeated string login_screen_auto_select_certificate_rules = 1;
};
// Setting that controls whether unaffiliated users are allowed to use ARC
// (true by default)
message UnaffiliatedArcAllowedProto {
optional bool unaffiliated_arc_allowed = 1;
}
// Allowed encryption types for requesting Kerberos tickets from Active
// Directory servers. Applies to Active Directory management mode only.
message DeviceKerberosEncryptionTypesProto {
enum Types {
ENC_TYPES_ALL = 0; // AES + RC4_HMAC.
ENC_TYPES_STRONG = 1; // AES only.
ENC_TYPES_LEGACY = 2; // RC4_HMAC only.
// Next ID to use: 3
}
optional Types types = 1 [default = ENC_TYPES_STRONG];
}
// Specifies how user policy from device GPOs interacts with user policy from
// user GPOs. In 'MERGE' mode, device GPOs take preference in case of conflicts.
// Applies to Active Directory management mode only.
message DeviceUserPolicyLoopbackProcessingModeProto {
enum Mode {
USER_POLICY_MODE_DEFAULT = 0; // Only take user policy from user GPOs.
USER_POLICY_MODE_MERGE = 1; // Merge device GPOs on top of user GPOs.
USER_POLICY_MODE_REPLACE = 2; // Only take user policy from device GPOs.
// Next ID to use: 3
}
optional Mode mode = 1 [default = USER_POLICY_MODE_DEFAULT];
}
// Specifies a list of origins. Each of the specified origins will run in its
// own process on the sign-in screen.
message DeviceLoginScreenIsolateOriginsProto {
// A comma-separated list of the origins to be run in a separate process on
// the sign-in screen.
// If the value of this policy does not match the value of the user policy
// IsolateOrigins, the chrome process will be restarted on user sign-in to
// apply the value specified by the user policy.
optional string isolate_origins = 1;
}
// Specifies if each site should run in its own process on the sign-in screen.
message DeviceLoginScreenSitePerProcessProto {
// If true, each site will run in its own process on the sign-in screen.
// If the value of this policy does not match the value of the user policy
// SitePerProcess, the chrome process will be restarted on user sign-in to
// apply the value specified by the user policy.
optional bool site_per_process = 1;
}
// Setting to control if running virtual machines on Chrome OS is allowed.
message VirtualMachinesAllowedProto {
optional bool virtual_machines_allowed = 1 [default = true];
}
// Specifies if and how often Active Directory machine (computer) account
// passwords are changed in the AuthPolicy daemon in Chrome OS.
// Applies to Active Directory management mode only.
message DeviceMachinePasswordChangeRateProto {
optional int32 rate_days = 1;
}
// Specifies how long cached Active Directory Group Policy Objects (GPOs) may be
// reused until they are re-downloaded (a version change also forces a
// re-download).
// Applies to Active Directory management mode only.
message DeviceGpoCacheLifetimeProto {
optional int32 lifetime_hours = 1;
}
// Specifies how long cached Active Directory authentication data may be reused
// until it is refreshed. This can significantly speed up user authentication.
// Applies to Active Directory management mode only.
message DeviceAuthDataCacheLifetimeProto {
optional int32 lifetime_hours = 1;
}
// Setting to control the authentication type for newly added users which log in
// via SAML.
message SamlLoginAuthenticationTypeProto {
enum Type {
TYPE_DEFAULT = 0; // Implementation-defined default config.
TYPE_CLIENT_CERTIFICATE = 1; // Client certificate authentication.
// Next ID to use: 2
}
optional Type saml_login_authentication_type = 1 [default = TYPE_DEFAULT];
}
// Setting that controls whether unaffiliated users are allowed to run Crostini
// (true by default)
message DeviceUnaffiliatedCrostiniAllowedProto {
optional bool device_unaffiliated_crostini_allowed = 1;
}
// Setting that controls whether PluginVm is allowed to run on this device.
message PluginVmAllowedProto {
optional bool plugin_vm_allowed = 1;
}
// Setting that specifies PluginVm license key for this device.
message PluginVmLicenseKeyProto {
optional string plugin_vm_license_key = 1;
}
// Setting that controls whether the device should reboot when user sign out.
message DeviceRebootOnUserSignoutProto {
enum RebootOnSignoutMode {
// No value set. Default is NEVER.
REBOOT_ON_SIGNOUT_MODE_UNSPECIFIED = 0;
// Do not reboot on signout.
NEVER = 1;
// Reboot on signout if an ARC session was active during the user session.
ARC_SESSION = 2;
// Always reboot on signout.
ALWAYS = 3;
}
optional RebootOnSignoutMode reboot_on_signout_mode = 1 [default = NEVER];
}
// Setting that controls whether wilco diagnostics and telemetry controller is
// allowed on this device.
message DeviceWilcoDtcAllowedProto {
optional bool device_wilco_dtc_allowed = 1;
}
message ChromeDeviceSettingsProto {
reserved 61;
optional DevicePolicyRefreshRateProto device_policy_refresh_rate = 1;
optional UserWhitelistProto user_whitelist = 2;
optional GuestModeEnabledProto guest_mode_enabled = 3;
optional OBSOLETE_DeviceProxySettingsProto device_proxy_settings = 4
[deprecated = true];
optional CameraEnabledProto camera_enabled = 5;
optional ShowUserNamesOnSigninProto show_user_names = 6;
optional DataRoamingEnabledProto data_roaming_enabled = 7;
optional AllowNewUsersProto allow_new_users = 8;
optional MetricsEnabledProto metrics_enabled = 9;
optional ReleaseChannelProto release_channel = 10;
optional DeviceOpenNetworkConfigurationProto open_network_configuration = 11;
optional DeviceReportingProto device_reporting = 12;
optional EphemeralUsersEnabledProto ephemeral_users_enabled = 13;
optional OBSOLETE_AppPackProto app_pack = 14 [deprecated = true];
optional OBSOLETE_ForcedLogoutTimeoutsProto forced_logout_timeouts = 15
[deprecated = true];
optional OBSOLETE_ScreenSaverProto login_screen_saver = 16
[deprecated = true];
optional AutoUpdateSettingsProto auto_update_settings = 17;
optional OBSOLETE_StartUpUrlsProto start_up_urls = 18 [deprecated = true];
optional OBSOLETE_PinnedAppsProto pinned_apps = 19 [deprecated = true];
optional SystemTimezoneProto system_timezone = 20;
optional DeviceLocalAccountsProto device_local_accounts = 21;
optional AllowRedeemChromeOsRegistrationOffersProto allow_redeem_offers = 22;
optional StartUpFlagsProto start_up_flags = 23;
optional UptimeLimitProto uptime_limit = 24;
optional VariationsParameterProto variations_parameter = 25;
optional AttestationSettingsProto attestation_settings = 26;
optional AccessibilitySettingsProto accessibility_settings = 27;
optional SupervisedUsersSettingsProto supervised_users_settings = 28;
optional LoginScreenPowerManagementProto login_screen_power_management = 29;
optional SystemUse24HourClockProto use_24hour_clock = 30;
optional AutoCleanupSettigsProto auto_clean_up_settings = 31;
optional SystemSettingsProto system_settings = 32;
optional SAMLSettingsProto saml_settings = 33;
optional RebootOnShutdownProto reboot_on_shutdown = 34;
optional DeviceHeartbeatSettingsProto device_heartbeat_settings = 35;
optional ExtensionCacheSizeProto extension_cache_size = 36;
optional LoginScreenDomainAutoCompleteProto
login_screen_domain_auto_complete = 37;
optional DeviceLogUploadSettingsProto device_log_upload_settings = 38;
optional DisplayRotationDefaultProto display_rotation_default = 39;
optional AllowKioskAppControlChromeVersionProto
allow_kiosk_app_control_chrome_version = 40;
optional LoginAuthenticationBehaviorProto login_authentication_behavior = 41;
optional UsbDetachableWhitelistProto usb_detachable_whitelist = 42;
optional AllowBluetoothProto allow_bluetooth = 43;
optional DeviceQuirksDownloadEnabledProto quirks_download_enabled = 44;
optional LoginVideoCaptureAllowedUrlsProto login_video_capture_allowed_urls =
45;
optional DeviceLoginScreenAppInstallListProto
device_login_screen_app_install_list = 46;
optional NetworkThrottlingEnabledProto network_throttling = 47;
optional DeviceWallpaperImageProto device_wallpaper_image = 48;
optional LoginScreenLocalesProto login_screen_locales = 49;
optional LoginScreenInputMethodsProto login_screen_input_methods = 50;
optional DeviceEcryptfsMigrationStrategyProto
device_ecryptfs_migration_strategy = 51;
optional DeviceSecondFactorAuthenticationProto
device_second_factor_authentication = 52;
optional CastReceiverNameProto cast_receiver_name = 53;
optional DeviceOffHoursProto device_off_hours = 54;
optional DeviceNativePrintersProto native_device_printers = 55;
optional DeviceNativePrintersAccessModeProto
native_device_printers_access_mode = 56;
optional DeviceNativePrintersBlacklistProto native_device_printers_blacklist =
57;
optional DeviceNativePrintersWhitelistProto native_device_printers_whitelist =
58;
optional TPMFirmwareUpdateSettingsProto tpm_firmware_update_settings = 59;
optional MinimumRequiredVersionProto minimum_required_version = 60;
optional DeviceLoginScreenAutoSelectCertificateForUrls
device_login_screen_auto_select_certificate_for_urls = 62;
optional UnaffiliatedArcAllowedProto unaffiliated_arc_allowed = 63;
optional NetworkHostnameProto network_hostname = 64;
optional DeviceKerberosEncryptionTypesProto device_kerberos_encryption_types =
65;
optional DeviceUserPolicyLoopbackProcessingModeProto
device_user_policy_loopback_processing_mode = 66;
optional DeviceLoginScreenIsolateOriginsProto
device_login_screen_isolate_origins = 67;
optional DeviceLoginScreenSitePerProcessProto
device_login_screen_site_per_process = 68;
optional VirtualMachinesAllowedProto virtual_machines_allowed = 69;
optional DeviceMachinePasswordChangeRateProto
device_machine_password_change_rate = 70;
optional SamlLoginAuthenticationTypeProto saml_login_authentication_type = 71;
optional DeviceUnaffiliatedCrostiniAllowedProto
device_unaffiliated_crostini_allowed = 72;
optional DeviceWiFiFastTransitionEnabledProto
device_wifi_fast_transition_enabled = 73;
optional DeviceDisplayResolutionProto device_display_resolution = 74;
optional PluginVmAllowedProto plugin_vm_allowed = 75;
optional DeviceGpoCacheLifetimeProto device_gpo_cache_lifetime = 76;
optional DeviceAuthDataCacheLifetimeProto device_auth_data_cache_lifetime =
77;
optional PluginVmLicenseKeyProto plugin_vm_license_key = 78;
optional DeviceRebootOnUserSignoutProto device_reboot_on_user_signout = 79;
optional DeviceWilcoDtcAllowedProto device_wilco_dtc_allowed = 80;
}