sp_encryption help | helpkey
sp_encryption help | helpkey[, <key_name> | wildcard]
[, all_dbs | key_copy | display_cols]
sp_encryption help | 'helpkey',
{'master'|'dual master'} [, 'display_keys' | 'all_dbs'
sp_encryption 'help'[, 'servicekeyname'[, 'display_objs']]
sp_encryption 'helpextpasswd'
sp_encryption helpcol[, <table_name> | <column_name> ]
sp_encryption helpuser[, <user_name> | wildcard ][, key_copy | login_passwd_check ]
sp_encryption 'mkey_startup_file'[, {'<new_path>' | '<default_location>' | 'null'}
[, {sync_with_mem | sync_with_qrm}]]
sp_encryption 'downgrade_kek_size' [, 'true'|'false']
sp_encryption system_encr_passwd, '<newpasswd>' [,'<oldpasswd>']
helpkey
列出加密密钥属性,包括:
help
包含以用于向后兼容。包含与 helpkey 相同的输出
<key_name>
要调查的密钥的名称。列出为 <key_name> 定义的属性。如果省略 <key_name>,则会列出所有密钥的属性。
<wildcard>
列出当前数据库中与通配符模式匹配的密钥的属性。有关通配符使用的信息,请参见《参考手册:构件块》。
all_dbs
列出所有可用数据库中加密密钥的信息。只有 SSO 可以运行all_dbs。
key_copy
列出当前数据库中指定密钥的所有用户副本。输出按 <key_owner>.<key_name> 排序。包括以下内容的相关信息:
login_passwd_check
指示分配至匹配用户的密钥副本是否与用户登录口令充分同步。即密钥副本的最后更新日期要比登录口令日期晚。密钥副本使用用户的登录口令或登录关联进行加密。
display_keys
与 <system_encr_passwd> 一起使用,以显示使用系统加密口令加密的密钥和密钥副本。与 master 或 dual master 一起使用,以显示使用主密钥或双主密钥加密的密钥和密钥副本。
您必须是系统安全员、密钥管理者或数据库所有者,才能运行 sp_encryption helpkey, master | 'dual master', display_keys 以显示受主密钥或双主密钥保护的加密密钥。
display_cols
显示密钥名称、当前数据库中的所有密钥(或与通配符匹配的密钥)以及密钥加密的列。当 SSO 包括 display_cols 时,它会显示所有可用数据库中由密钥加密的列。当没有 sso_role 的用户运行 display_cols 时,仅显示当前数据库中由密钥加密的列。数据按 <key_name>、<key_owner>、<database_name>、<table_owner>、<table_name> 和 <column_name> 排序。
master
报告有关主密钥的信息。
dual master
报告有关双主密钥的信息。
servicekeyname
被设置为 syb_extpasswdkey 或 syb_syscommkey%。与 display_objs 一起使用,以显示用服务密钥加密的对象。
display_objs
显示对象所有者。
您必须是系统安全员、密钥管理者或数据库所有者,才能运行 sp_encryption helpkey, keyname, display_objs 以显示当前数据库中受 syb_extpasswdkey 或 syb_syscommkey 服务密钥保护的对象。
helpextpasswd
显示状态列中的外部口令的加密状态。加密状态为以下状态之一:
您必须是系统安全员才能运行 sp_encryption helpextpasswd,以检查外部口令的状态。
helpcol <column_name>
显示列名以及用于加密列的密钥。如果 SSO 包括 helpcol,则即使密钥不存在于当前数据库中,它也会打印该密钥的名称。如果非 SSO 用户包括 helpcol,则当密钥不存在于当前数据库中时,SAP ASE 服务器会打印密钥的 keyid,而省略 <key_name>。输出包括:<owner>.<table>.<column>、<database>.<owner>.<keyname>。该信息按 <owner>.<table>.<column> 排序。
helpuser
显示当前数据库中用户所拥有的或分配给当前数据库中用户的密钥。
mkey_startup_file
显示或设置主密钥启动文件名称和路径。sp_encryption 将主密钥启动文件设置为 <new_path> 或缺省位置。如果指定 null 或不指定任何位置,则 sp_encryption 会显示当前主密钥启动文件名称和路径。
sync_with_mem
(仅限 Cluster Edition)将服务器内存中存在的主密钥加密密钥写入主密钥启动文件中。替换当前主密钥加密密钥(如果存在)。如果将 automatic master key access 设置为 off,则还会禁用 sync_with_mem。
您必须是系统安全员才能显示、设置或同步主密钥启动文件。
sync_with_qrm
将本地主密钥启动文件更新为仲裁设备中的版本。
您必须是系统安全员才能显示、设置或同步主密钥启动文件。
downgrade_kek_size
显示或设置 downgrade kek size 配置。true 指示 SAP ASE 服务器处于 downgrade kek size 模式,false 可禁用此模式。
如果不指定任何参数,sp_encryption 会显示 downgrade_kek_size 的当前值。
您必须是系统安全员或密钥管理者才能运行此命令。
system_encr_passwd
显示当前数据库中使用系统加密口令加密的密钥和密钥副本。
system_encr_passwd, all_dbs
在设置系统加密口令的每个数据库中显示该口令的属性。输出按数据库名称排序。只有系统安全员能够运行此命令。如果未为所有数据库设置系统加密口令,SAP ASE 服务器将生成消息 19782:
The system encryption password has not been set for all
available databases
此示例显示一个名为“database encryption key”的密钥类型来指示数据库已完全加密:
1>create encryption key key1 as default for database encryption
2>go
1>sp_encryption helpkey, key1
Key Name Key Owner Key Length Key Algorithm
Key Type Pad Initialization Vector
Protected By Key Recovery
# of Key Copies
----------- ------------ ------------ -------------
-------------------------------- ------ ---------------------
-------------- ---------------- -----------------
key1 dbo 256 AES
symmetric database encryption key 0 1
master key 0 0
1>create encryption key key2 for database encryption with master key
2>create encryption key key3 for database encryption with dual_control
3>go
1>sp_encryption helpkey, 'key%'
Key Name Key Owner Key Length Key Algorithm
Key Type Pad Initialization Vector
Protected By Key Recovery
# of Key Copies
----------- ------------ ------------ -------------
-------------------------------- ------ ---------------------
-------------- ---------------- -----------------
key1 dbo 256 AES
symmetric database encryption key 0 1
master key 0 0
key2 dbo 256 AES
symmetric database encryption key 0 1
master key 0 0
key3 dbo 256 AES
symmetric database encryption key 0 1
dual_control(master key + dual master key) 0 0
1>create database encr_db1 encrypt with key1
2>create database encr_db2 encrypt with key2
3>create database encr_db3 encrypt with key3
4>go
1>sp_encryption helpkey, '%', "display_dbs"
Key Name Key Owner Encrypted Database
-------------------- --------------------------------------
key1 dbo encr_db1
key1 dbo encr_db2
key3 dbo encr_db3
使用 helpkey 参数显示当前数据库中的密钥信息。可以获取有关所有密钥或特定密钥的信息。sp_encryption 的第二个参数提供密钥名称,可包含与 SQL 模式匹配的字符。如果您不是数据库所有者,也不具有 sso_role 或 keycustodian_role,sp_encryption 将显示较少的列。
当由 SSO、密钥管理者或 DBO 运行时,这会显示当前数据库中所有基本加密密钥的属性:
sp_encryption helpkey
Key Name Key Owner Key Length Key Algorithm Key Type Pad
Init Vector Protected By Key Recovery # of Key Copies
---------- --------- ---------- -------------- -------- ----
----------- -------------------------- ------------ ---------------
tinnap_key tinnap 128 AES symmetric key 0
1 system encryption password 0 0
tinnap_key1 tinnap 128 AES symmetric default key 0
1 user Passwd 1 3
sample_key1 dbo 192 AES symmetric key 1
1 login Passwd 1 2
当由用户“tinnap”运行时,这会显示当前数据库中所有基本加密密钥的下列属性:
sp_encryption helpkey
Key Name Key Owner Key Type
-------------- --------- ------------
tinnap_key tinnap symmetric key
tinnap_key1 tinnap symmetric default key
sample_key1 dbo symmetric key
如果您不是系统安全员,也不具有 keycustodian_role,查询将显示您在当前数据库中拥有的所有基本密钥。如果未将 <user_name> 指定为第二个参数,查询将显示您拥有的基本密钥。
当由 SSO 运行时显示基本加密密钥的属性
当由 SSO、密钥管理者或 DBO 在当前数据库中运行时,会显示基本加密密钥 sample_key1 的属性:
sp_encryption helpkey, sample_key1
Key Name Key Owner Key Length Key Algorithm Key Type
Pad Init Vector Protected By Key Recovery # of Key Copies
--------- -------- --------- -------------- --------------
--- ----------- ------------ ------------- ---------------
sample_key1 dbo 192 AES symmetric Key
1 1 Login 1 2
当非特权用户“tinnap”运行此命令时,它会显示当前数据库中基本加密密钥 sample_key1 的以下属性:
sp_encryption helpkey, sample_key1
Key Name Key Owner Key Type
------------- ----------- ------------
sample_key1 dbo ymmetric key
只有 SSO 可以运行此命令:
sp_encryption helpkey, NULL, all_dbs
Db.Owner.Keyname Key Length Key Algorithm Key Type
Pad Init Vector Protected By Key Recovery #of Key Copies
------------------------ ---------- ----------- --------------------
----- ---------- ----------------- -------------- ----------------
keydb.dbo.cc_key 256 AES symmetric default key
1 1 system encr passwd 0 0
keydb.dbo.sample_key1 128 AES symmetric key
0 0 system encr passwd 1 4
keydb1.tinnap.tinnap_key 128 AES symmetric key
0 1 system encr passwd 0 0
keydb1.tinnap.tinnap_key1 128 AES symmetric default key
0 1 user password 1 3
keydb1.dbo.sample_key1 192 AES symmetric key
1 1 login passwd 1 2
显示所有可用数据库中与 %key 相似的所有基本加密密钥的属性
all_dbs 指示需要所有数据库的密钥信息。您必须具有 sso_role 才能使用 all_dbs 参数:
sp_encryption helpkey, '%key', all_dbs
Db.Owner.Keyname Key Length Key Algorithm Key Type
Pad Init Vector Protected By Key Recovery #of Key Copies
------------------------ ---------- ----------- --------------------
----- ---------- --------------- -------------- ----------------
keydb.dbo.cc_key 256 AES symmetric default key
1 1 system encr passwd 0 0
keydb1.tinnap.tinnap_key 128 AES symmetric key
0 1 system encr passwd 0 0
当由 SSO 运行时,显示数据库中名称与“tinnap%”相似的所有基本加密密钥的属性
当由 SSO、密钥管理者或 DBO 运行时,显示当前数据库中名称与“tinnap%”相似的所有基本加密密钥的属性:
sp_encryption helpkey, "tinnap%"
Key Name Key Owner Key Length Key Algorithm Key Type
Pad Init Vector Protected By Key Recovery # of Key Copies
--------- -------- --------- -------------- -----------------------
--- ----------- ------------------- ------------ ---------------
tinnap_key tinnap 128 AES symmetric key
0 1 system encr passwd 0 0
tinnap_key1 tinnap 128 AES symmetric default key 0 1 user passwd 1 3
当由用户“tinnap”运行时,会显示当前数据库中名称与“tinnap%”相似的加密密钥的以下属性:
sp_encryption helpkey, "tinnap%"
Key Name Key Owner Key Type
------------------ --------- ------------
tinnap_key tinnap symmetric key
tinnap_key1 tinnap symmetric default key
通过将 key_copy 用作第三个参数显示有关密钥副本的信息
通过将 key_copy 用作第三个参数显示有关密钥副本的信息。为第二个参数的 <keyname> 输入空值而非具体值,可查看有关所有密钥副本的信息。可在 <keyname> 中使用与模式匹配的字符(请参见前面的示例):
sp_encryption helpkey, tinnap_key1, key_copy
Owner.Keyname Assignee Protected by Key Recovery
------------------ --------- ---------------- ----------
tinnap.tinnap_key1 joesmp user passwd 0
tinnap.tinnap_key1 samcool user passwd 1
tinnap.tinnap_key1 billyg user passwd 0
当由用户“joesmp”运行时,这会显示当前数据库中分配给用户“joesmp”的所有加密密钥副本,并且如果该用户是该密钥的所有者,则还会显示该密钥名称的所有密钥副本:
sp_encryption helpkey, tinnap_key1, key_copy
Owner.Keyname Assignee Protected by Key Recovery ------------------ --------- ---------------- ------------ tinnap.tinnap_key1 joesmp user passwd 0 显示所有可用数据库中用数据库中的密钥加密的所有加密列 使用 display_cols 参数可显示所有可用数据库中用当前数据库中的密钥加密的所有加密列。如果您不具有 sso_role,查询仅显示当前数据库中由当前数据库中的密钥加密的加密列。 可使用模式匹配的字符或 <code><key_name>作为第二个参数。如果将<key_name>的模式匹配字符用作 sso_role,查询将显示所有可用数据库中由模式匹配的<key_name>加密的所有加密列。如果使用<key_name>作为第二个参数,并且您具有 sso_role,将显示所有可用数据库中由指定<key_name>加密的所有加密列:
sp_encryption helpkey, null, display_cols
Key Name Key Owner Database Name Table Owner Table Name Column Name
---------- --------- ------------- ---------- ---------- ----------
tinnap_key tinnap testdb1 tinnap t3 c3
tinnap_key1 tinnap testdb1 tinnap t4 c4
sample_key1 dbo coldb dbo t1 c1
sample_key1 dbo coldb billyg t2 c2
显示当前数据库中使用系统加密口令加密的所有密钥和密钥副本。如果您不具有上述特权,查询将显示由用户拥有或分配给相应用户的使用系统加密口令加密的密钥:
sp_encryption helpkey, system_encr_passwd, display_keys
Owner.Keyname Assignee
--------------- -------------
dbo.cc_key NULL
dbo.sample_key1 NULL
dbo.sample_key1 tinnap
在由数据库所有者或具有 keycustodian_role 或 sso_role 的用户运行时,helpuser 参数会显示当前数据库中由用户拥有的所有基本密钥:
sp_encryption helpuser
Owner.Keyname Protected by
--------------- -------------------tinnap.tinnap_key system encr passwd
tinnap.tinnap_key1 user passwd
dbo.sample_key1 login passwd
如果用户“tinnap”运行此命令,则会列出当前数据库中由此用户所拥有的所有基本密钥:
sp_encryption helpuser
Owner.Keyname Protected by
--------------- -------------------tinnap.tinnap_key system encr passwd
tinnap.tinnap_key1 user passwd
数据库所有者或具有 keycustodian_role 或 sso_role 的用户可结合使用 key_copy 和 helpuser 参数显示当前数据库中分配给一个或多个用户的密钥副本。可在 <user> 参数中使用模式匹配的字符。此查询显示当前数据库中所有用户的密钥副本:
sp_encryption helpuser, NULL, key_copy
Owner.Keyname Assignee Protected by Key Recovery
--------------------- ----------- ---------------- -----------
dbo.sample_key1 tinnap login passwd 0
tinnap.tinnap_key1 joesmp user passwd 0
dbo.sample_key1 joesmp login passwd 1
tinnap.tinnap_key1 samcool user passwd 1
tinnap.tinnap_key1 billyg user passwd 0
如果您不是数据库所有者,也不具有 keycustodian_role 或 sso_role,此查询将显示您拥有的所有密钥的副本,以及其他密钥所有者分配给您的密钥副本。例如,当用户“tinnap”运行此查询时:
sp_encryption helpuser, NULL, "key_copy"
Owner.Keyname Assignee Protected by Key Recovery
--------------------- ----------- ---------------- ---------
dbo.sample_key1 tinnap login passwd 0
tinnap.tinnap_key1 joesmp user passwd 0
tinnap.tinnap_key1 samcool user passwd 1
tinnap.tinnap_key1 billyg user passwd 0
如果您是数据库所有者或是具有 keycustodian_role 或 sso_role 的用户,helpcol 将显示当前数据库中的所有加密列以及用于加密列的密钥。如果您不具有上述特权,则当加密密钥位于其它数据库中时,helpcol 将显示 keyid 而非 <key_name>:
sp_encryption helpcol
Owner.Table.Column Db.Owner.Keyname
----------------------- ---------------------
dbo.t1.c1 keydb1.dbo.sample_key1
billyg.t2.c2 keydb.dbo.sample_key1
tinnap.t3.c3 coldb.dbo.sample_key2
如果将 helpcol 参数与 <table_name> 和 <column_name> 参数结合使用,将显示给定表中的所有加密列或特定加密列。当由具有 sso_role 的用户运行时,以下查询将显示当前数据库中表 t3 中的所有加密列,以及用于在所有可用数据库中加密列的密钥。在由不具有 sso_role 的用户运行时,如果密钥不在当前数据库中,此查询将显示该密钥的 ID 而非其名称。第二个参数可具有 [<database_name>.][<table_name>.][<column_name>] 组合:
sp_encryption helpcol, t3
Owner.Table.Column Db.Owner.Keyname
----------------------- ---------------------
tinnap.t3.c3 coldb.dbo.sample_key2
显示每个数据库的系统加密口令属性(您必须具有 sso_role 才能运行此查询):
sp_encryption helpkey, system_encr_passwd, all_dbs
Database Type of system_encr_passwd Last modified by Date
-------- -------------------------- --------------- ----------------
master persistent sa Aug 26 2008 10:05AM
显示当前数据库中所有使用主密钥加密的加密密钥(您必须具有 sso_role、keycustodian_role 或是数据库所有者,才能运行此查询):
sp_encryption helpkey,'master',display_keys
Owner.Keyname Assignee
---------------- ----------
user1.key_dual NULL
user1.key_mst NULL
user4.key_dC_pwd NULL
user4.key_dC_pwd user5
user4.key_dC_pwd user6
user4.key_dC_pwd KC_tdb1
显示为当前服务器配置的当前主密钥启动文件的名称和位置:
sp_encryption mkey_startup_file
Msg 19956, Level 16, State 1: Procedure 'sp_encryption', Line 298: The current master key startup file is:'/sybase/release/ASE-150/init/ase_encrcols_mk_l157.dat'.
显示用密钥 syb_syscommkey_123456 加密并被 user1 和 user2 拥有的三个存储过程:
sp_encryption helpkey, "syb_syscommkey%", display_objs
Key Name Key Owner Database Name
Object owner Object Name
------------ ------- -----------
------------ ----------- syb_syscommkey_1234567890ab dbo testdb
user1 sp_mysproc1
syb_syscommkey_abcdefghijkl123456 dbo testdb
user1 sp_mysproc2_
syb_syscommkey_ABCDEF123456 dbo testdb
user2 sp_mysproc3
<key_copy> 参数,才可获取有关密钥副本的信息。如果未指定 <key_copy> 参数,则 sp_encryption 仅返回有关基本密钥的信息。
<keyname>, key_copy 中的 <keyname> 为 NULL,则它会为 SSO、密钥管理者或 DBO 列出当前数据库中的所有密钥副本。如果没有特权的用户运行此命令,则它会列出当前数据库中分配给该用户的所有密钥副本,以及当前数据库中该用户所拥有密钥的所有密钥副本。
<column_name> 使用 <name>.<name>.<name> 格式,其中:
a) <name> – 如果 sp_encryption 找不到此名称的表,则它会查找具有此名称的所有列。
b) <name>.<name> – 是 <owner>.<table>。如果 sp_encryption 找不到此名称的表,则会查找名称为 <table.column> 的单个列。
c) <name>.<name>.<name> – 是 <owner>.<table>.<name>。
对于当前数据库中由这些规则确定的所有列,sp_encryption 会显示列名以及用于加密列的密钥。
sp_encryption helpcol, <column_name> 的输出是 <owner>.<table>.<column> 和 <db>.<owner>.<keyname>。当由非 SSO 用户运行时,<keyname> 表示为 <database>.<keyid>,并且密钥存在于与加密列不同的数据库中。结果集按 <owner>.<table>.<column> 排序。
sp_encryption 的限制为:
<keyname> | wildcard], all_dbs ,以获取所有数据库中的密钥属性。如果不具有 sso_role 的用户运行此命令,将收到“unauthorized user”(未授权用户)错误消息。如果密钥没有限定 keyname 或 wildcard,则 SAP ASE 服务器会返回一条消息,指出 'There are no encryption keys (key copies) like keyname in all databases'.
<keyname>, <display_cols> 时,它会列出所有可用数据库中由 <keyname> 加密的所有列。如果没有特权的用户运行此命令,则它会列出当前数据库中由 <keyname> 加密的列。
如果 SSO 运行 sp_encryption helpkey, <keyname>, <display_cols> 并且 <keyname> 值为 NULL,则它会显示所有可用数据库中的所有加密列。当没有特权的用户运行此命令时,它会显示当前数据库中的所有加密列。
<user_name> 和 <key_copy> 的情况下运行 sp_encryption helpuser, <user_name>, key_copy,则它会列出当前数据库中所有用户拥有的所有基本密钥。如果没有特权的用户在未指定 <user_name> 或 <key_copy> 的情况下运行 sp_encryption,则它会显示当前用户所拥有的基本密钥。
如果任何用户运行 sp_encryption helpuser, <user_name>,则它会列出 owner.keyname 所拥有的所有基本密钥。如果没有特权的用户运行该命令并且不拥有基本密钥,则 SAP ASE 服务器会显示信息性消息以指出此情况。
如果 SSO、密钥管理者或 DBO 运行 sp_encryption helpuser, <user_name>, <key_copy>,则它会列出分配给 <user_name> 的密钥副本。如果没有特权的用户发出此命令,则它会列出当前数据库中分配给该用户的密钥副本以及该用户所拥有的密钥的密钥副本,并在结果集中包含以下列:Owner.Keyname、Assignee、Type of Password 和 Key Recovery。输出按 Assignee 排序。
如果 sp_encryption helpuser <user_name> 的 <user_name> 为 NULL,<key_copy> 会为 SSO、密钥管理者或 DBO 列出当前数据库中的所有密钥副本。对于没有特权的用户,它会列出当前数据库中分配给该用户的所有密钥副本,以及该用户所拥有的密钥的密钥副本。
<keyname>, <key_copy> 时,它会列出当前数据库中 <keyname> 的密钥副本。如果没有特权的用户运行此命令,则它会列出分配给该用户的该 <keyname> 的密钥副本,如果该用户是密钥所有者,则会列出该 <keyname> 的密钥副本。
<system_encr_passwd>, display_keys,以接收当前数据库中由系统加密口令加密的所有密钥和密钥副本的相关信息。没有特权的用户会收到当前数据库中他们所拥有的或已分配到的基本加密密钥或密钥副本的相关信息。仅当密钥副本是为登录关联而创建时,才会使用系统加密口令进行加密。输出按 <owner>.<keyname> 排序。