使用者与安全性管理

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
使用者与安全性管理
建立与管理使用者登入账户
管理数据库存取权限
管理数据库角色
安全性账户授权
本章总结
本章将学习在 Microsoft SQL Server 2000 环境下管理使用者并确保安全性。安全性管理和备份、回复计划、容量规模及空间管理一样,都是 DBA 例行的工作。少了系统的安全性,数据就会遗失或被破坏。
本章涵盖了使用者和安全性管理有关的主题。我们会学习建立与管理使用者登入账户,以及不同的验证模式;另外还将学习 SQL Server 使用者 ID。 使用者登入账户 (user login)是用来验证使用者是否允许存取该 SQL Server,可透过 Microsoft Windows NT、Microsoft Windows 2000 或 SQL Server 来验证。 使用者ID (user ID)分配使用者权限,用来在个别数据库中存取特定对象。使用者 ID 与使用者登入账户相关,不过两者可以设定一样的名称,也可以设定不一样的名称,这些稍后将在本章讨论。本章学习在 SQL Serve r中分配的不同类型权限,以及如何使用权限。另外也会学习利用角色简化使用者的管理工作。最后会学到的是 SQL Server 2000 安全账户授权。在看完本章后,您应具备管理使用者登入账户和安全性的常识。
建立与管理使用者登入账户
 
现在先透过使用者登入账户,开始管理使用者与安全性的第一步。本节会介绍登入账户的重要性,以及用于维持登入账户的验证模式。接着我们会介绍三种建立登入的方法:使用 SQL Server Enterprise Manager、使用 Transact-SQL(T-SQL),以及使用 建立登入精灵 。最后回学习利用 Enterprise Manager 和T-SQL建立新的使用者账户。
建立使用者登入账户的原因
 
使用者登入账户可达到保护数据的目的,避免数据库被未验证过的使用者有意或无意的更改。利用使用者登入账户可识别 SQL Server 中的每一个授权使用者。每个使用者登入账户都拥有一组唯一的名称和密码。如果没有使用者登入账户,所有对 SQL Server 的连接将使用同一个识别符号,这样就无法根据不同层级的使用者设立不同层级的安全存取范围。
使用者登入账户可设定不同层级的安全存取,也就是用不同的登入账户就有不同存取对象和执行功能的权限。我们可对某些数据库对象加密,例如将预存程序和检视对未验证使用者隐藏定义。使用者登入账户可以允许特定层级的使用者插入或更新新信息至数据库数据表,而一般层级的使用者只能用只读方式存取数据表。
让我们回到 第 18 章 的范例,了解登入账户如何限制数据的存取。范例中利用检视表限制对特定数据的存取。假定一个 Employee 资料表中包含职员姓名、电话号码、办公室号码、等级、工资、奖金等信息,为避免使用者存取数据表中的机密数据,要先建立检视表,只包含如职员姓名、电话号码及办公室号码等较不机密的信息,透过使用者登入账户限制存取基底数据表的数据,仅允许检视表数据的存取。当然,如果没有利用使用者登入账户做控管,而允许任何使用者存取检视表或数据表,就失去了使用检视表的意义。
验证模式
 
验证模式有两种:Microsoft Windows 验证和混合模式验证。在 Windows 验证模式中,操作系统会负责验证使用者,在 SQL Server 中利用操作系统的验证决定使用者的权限。在混合模式验证中,Windows NT/2000 和 SQL Server 同时负责验证使用者。在存取 SQL Server 之前,必须先登入 Windows NT/2000 账户。因此选择验证模式前,必须决定是否要使用双重的验证。让我们更详细的了解这两种验证模式,然后学习执行这些模式。
Windows 验证
 
在 Windows 验证中,SQL Server 透过 Microsoft Windows NT/2000 来提供登入的安全性。当使用者登入 Windows NT/2000,同时确认了使用者账户身份。然后 SQL Server 将验证使用者是否为 Windows NT/2000 确认的使用者,然后依验证身分给与数据库存取的权限。SQL Server 的登入程序结合了 Windows 的安全登入程序,透过 Windows NT/2000 提供的复杂加密过程,建置了网络安全性属性。由于 SQL Server 和 Windows 的登入安全性验证是结合在一起的,所以这种方式不再需要别的验证方法。用来登入的唯一密码就是 Windows NT/2000 的密码。
Windows 验证是比混合验证模式更好的安全性方法,因为它提供了附加的安全性特性,包括安全确认、加密密码、稽核、密码到期时间、最小密码长度,以及在特定次数的失败登入后自动锁定账户。
混合模式验证
 
在混合模式验证中,使用者可以用 Windows 验证或 SQL Server 验证来存取SQL Server。当有一个来自非安全系统的连接时,SQL Server 会验证这个登入,检验是否设定过这个 SQL Server 登入账户。这个账户验证在 SQL Server 中执行,根据储存在数据库中的使用者名称和密码进行检验。在尝试连接 SQL Server 时,系统会提示使用者提供使用者名称和密码。如果没有提供这些信息,SQL Server 系统会拒绝该使用者的存取。
在您执行 Windows 95/98 时无法使用 Windows 验证模式,因此在这些平台上您必须使用 SQL Server 验证(用混合模式验证)。此外,Web 应用程序需要 SQL Server 验证(透过 Internet Information Server,或称为 IIS),因为这些应用程序的使用者并不一定都在同一个网域中,因此就不能依靠 Windows 安全性,这时就需要使用 SQL Server 安全性。其它需要存取数据库的应用程序也同样需要 SQL Server 验证:一些应用程序的开发人员会因为它们的应用程序结构简单而喜欢使用 SQL Server 安全装置。在使用 SQL Server 安全装置时(在信任网络中),应用程序的开发人员不再需要提供应用程序自身的安全性验证,这样可以简化他们的工作。
设定验证模式
 
请依下列步骤,用 Enterprise Manager 设定验证模式:
1. 开启 Enterprise Manager 窗口,在左边窗格中的服务器名称上按一下鼠标右钮,并从快捷菜单中选择 内容 ,进入 SQL Server 属性窗口。按一下 安全性 页签,如图34-1所示。
 
 
图34-1 「SQL Server属性」窗口的「安全性」页签
2. 在这个页签中,选择安全性方法和启动服务账户。在 安全性 区域中,指定是否使用 Windows NT/2000 和 SQL Server(混合模式)验证,或只使用 Windows NT/2000 验证。这里可以指定登入稽核层级。登入稽核层级指定保留哪些登入时的记录。应该根据安全性需要选择稽核等级,有四个等级可使用:
o  无 预设选项;不执行登入稽核。
 
o  成功 记录所有成功的登入尝试。
 
o  失败 记录所有失败的登入尝试。
 
o  全部 记录所有的登入尝试。
 
________________________________________
说明
稽核层级是一个数据库属性,同样的,这个设定将套用到所有的登入上。
________________________________________
3. 在 启动服务账户 区域中,指定在启动 SQL Server 服务时使用的 Windows NT 账户。可使用内建的本机系统账户,或指定一个账户后提供密码。按 确定 接受设定。
登入账户和使用者
 
接下来的几个章节中将学习建立登入账户和使用者。在开始之前,需要先了解何谓登入账户和使用者。这里仅将这两个字词简要的定义。
我们可以看到,要连到数据库中,可能会需要 Windows NT/2000 使用者账户,或许同时也许需要使用 SQL Server 验证。不论使用的是 Windows NT/2000 验证或混合模式验证,连接到 SQL Server 的账户都被称为「登入」账户。除了 SQL Server 登入账户,每个数据库会分配一组指定的使用者,这些使用者是虚拟账户。这些虚拟账户提供 SQL Server 登入账户一个别名。例如在 Northwind 数据库中,也许有使用者的名称为 manager ,而这个使用者名称和 SQL Server 登入账户 guest 有关;在 pubs 数据库中,可能有使用者名称也是 manager ,而这个使用者名称却与 SQL Server 登入账户 sa 有关。在预设情况下,SQL Server 登入账户和数据库使用者 ID 设定没有相关,因此并没有任何权限。
建立 SQL Server 登入账户
 
大部分的管理任务可以使用多种方法执行,而建立使用者登入账户也不例外。您能透过三种途径的任何一种来建立登入:使用 Enterprise Manager、使用 T-SQL 或使用 Create SQL Server Login Wizard。在本节中,您将学到如何使用这三种方法建立 SQL Server 登入账户。
利用 Enterprise Manager 建立 SQL Server 登入账户
 
要利用 Enterprise Manager 建立 SQL Server 登入账户,请按照下列步骤操作:
1. 在 Enterprise Manager 窗口的左边窗格中,展开服务器群组、服务器,然后展开 安全性 数据夹。在 登入 上按一下鼠标右钮,然后在快捷菜单中选择 新增登入 ,进入 SQL Server 登入属性窗口,如图34-2所示。在 一般 页签的 名称 文字方块中键入SQL Server登入账户。如果使用的是Windows验证,那么这个名称必须是有效的Windows NT或Windows 2000账户名称。接下来在 网域 文字方块中指定 Windows NT 或 Windows 2000 的网域。在预设区域指定使用者使用的预设数据库和语言。在 验证 区域中,指定是否使用 Windows NT 或 Windows 2000 账户,或者使用 SQL Server 验证。如果选择 SQL Server 验证,则使用混合模式验证。
 
 
图34-2 「SQL Server 登入属性」窗口的「一般」页签
2. 按一下 服务器角色 页签,如图34-3所示。在这个页签中可以指定新的登入选取的服务器角色,在可使用的角色清单中选择。按一下 属性 允许检视和修改所选取的角色。(有关角色的讨论将在本章的 <管理数据库角色> 一节中进行。)
 
 
图34-3 「SQL Server 登入属性」窗口的「服务器角色」页签
3. 选取 数据库存取 页签,如图34-4所示。这个页签可指定权限使用者可以存取的数据库。(数据库权限将在 <管理数据库存取权限> 一节中说明。)您可选择多个数据库以及对于这些数据库可用的角色。按 属性 就能检视和管理数据库角色属性。
 
 
图34-4 「SQL Server 登入属性」窗口的「数据库存取」页签
4. 完成指定选项之后,按一下 确定 储存登入账户。要看新的登入账户和其它登入账户,可以在 Enterprise Manager 中选取 登入 数据夹。在右边的选单中会列出所有登入账户。
使用 T-SQL 建立登入账户
 
使用 T-SQL 可以建立登入账户,需要使用 sp_addlogin 预存程序或sp_grantlogin 预存程序。sp_addlogin 预存程序只能将 SQL Server 验证过的使用者加入 SQL Server 数据库中。sp_grantlogin 预存程序则可以将 Windows NT/2000 验证过的使用者加入。
sp_addlogin 预存程序的语法如下:
sp_addlogin  [@loginame =] 'login'
        [ , [ @passwd = ] 'password'  ]
        [ , [ @defdb = ] 'database'  ]
        [ , [@deflanguage = ] 'language'  ]
        [ , [ @sid = ]'sid'  ]
        [ , [ @encryptopt = ] 'encryptionoption'  ]
可选择的参数如下:
•   密码 指定 SQL Server 登入账户密码。默认值为 NULL。
 
•   数据库 指定登入账户的预设数据库。默认值为 master 数据库。
 
•   语言 指定登入账户的预设语言。默认值为现有的 SQL Server 语言设定。
 
•   安全性识别码 (sid) 指定安全性识别码(一个唯一的数值)。如果没有指定这个数值,系统将会自动产生一个数值。使用者通常不使用 sid 参数,但是管理员可能在一些情况下会使用到 sid 。当 DBA 执行疑难排解任务时,可能需要使用 sid ,以确定正在检查哪个登入账户。 sid 参数是登入账户的内部识别码。
 
•  encryptopt_option 指定是否在系统数据表中将密码加密。默认值为NULL,表示密码被加密。指定 skip_encryption 表示密码没有加密。如果指定 skip_encryption_old,那么在较早版本的 SQL Server 中已加密的密码将不再被加密。只有在想要避免加密系统数据表中的密码时,才需要更改这个设定。
 
下面是一个简单的新增登入账户的范例:
EXEC sp_addlogin 'PatB'
记住在预存程序名称前要使用 EXEC 关键词。
下面是一个较复杂的新增登入账户范例。
sp_addlogin 'SharonR','mypassword','Northwind','us_english'
这个命令建立了名叫 SharonR 的使用者,使用 mypassword 密码。预设数据库为 Northwind,预设语言为 U.S. English。一般而言,让 SQL Server 来建立安全性识别比您自己来建立要好些。
sp_grantlogin 预存程序有下列语法:
sp_grantlogin 'login_name'
使用 sp_grantlogin 预存程序的范例如下:
EXEC sp_grantlogin 'MOUNTAIN_DEW/DickB'
在增加了这些登入账户之后,在左边的窗格中选取 登入 数据夹,以便在Enterprise Manger 中检视这些登入账户。
使用建立登入精灵
 
可依下列步骤,利用 建立登入精灵 建立 SQL Server 登入账户:
1. 展开一个服务器群组,并选取一个服务器。在 工具 菜单中选择 精灵 。在 选择精灵 对话框中展开 数据库 数据夹,选择 建立登入精灵 ,如图34-5所示,按 确定 。此时将显示 欢迎使用建立登入精灵 ,如图34-6所示。
 
 
图34-5 选择精灵画面

 
 
图34-6 欢迎使用建立登入精灵画面
2. 按 下一步 进入 选取这个登入的验证模式 画面,如图34-7所示。在这个画面中,您可以指定是否使用 Windows 验证或 SQL Server 验证(混合模式)。
 
 
图34-7 选取这个登入的验证模式画面
3. 按 下一步 进入 使用Windows NT的账户验证 画面或 使用SQL Server的验证 画面,出现的画面取决于步骤 2 中选取的验证模式。图34-8显示稍后的画面。在这个画面中指定登入 ID 和密码。如果选择的是 Windows NT 验证,请键入网域名称和使用者账户名称。
 
 
图34-8 使用 SQL Server 的验证画面
4. 按 下一步 ,显示 同意对安全性角色的存取 画面,如图34-9所示。在这个画面中,可以选取分配到该登入账户上的数据库角色。
 
 
图34-9 同意对安全性角色的存取画面
5. 按 下一步 进入 同意对数据库进行存取画面 ,如图34-10所示。在这个画面中可以选取登入账户可以存取的数据库。
 
 
图34-10 同意对数据库进行存取画面
6. 按 下一步 进入 完成建立登入精灵 画面,如图34-11所示,这里可以在文字方块中检查摘要信息。要变更设定可按 上一步 回到之前的画面,按 完成 即可完成建立新登入账户。
 
 
图34-11 完成建立登入精灵画面
建立 SQL Server 使用者
 
SQL Server 使用者可以利用 Enterprise Manager 或 T-SQL 建立。(在 SQL Server 中并没有用来完成这项设定的精灵)。本节中将利用这两种方式建立 SQL Server 使用者。请记住,SQL Server 使用者是为特定的数据库所定义,且特定的使用者登入名称对该数据库有不同的使用权限。SQL Server 使用者 ID 可被视为 SQL Server 登入账户的同义词,但是在登入时两者并不需要使用相同的名称。
________________________________________
说明
建立 SQL Server 使用者前,必须先为该使用者定义 SQL Server 登入账户,因为使用者名称需参照 SQL Server 登入账户。
________________________________________
使用 Enterprise Manager 建立使用者
 
与 SQL Server 登入账户不同的是,登入账户是在 Enterprise Manager 的 Security 数据夹中建立的,而 SQL Server 使用者则在 Enterprise Manager 左侧选单的指定数据库档案夹中建立。要使用 Enterprise Manager 建立使用者,请按照下列步骤操作:
1. 在需要建立使用者的数据库上按一下鼠标右钮,在快捷菜单中选择 新增 ,然后选择 数据库使用者 ,进入 数据库使用者属性 窗口,如图34-12所示。在 登入名称 下拉式清单中键入一个有效的 SQL Server 登入账户名称,并在 使用者名称 文字方块中键入新的使用者名称。在 数据库角色使用权限 清单中选取合适的复选框,为新使用者分配数据库角色。在本章的后面可以看到,为这些角色分配权限,便能够将权限套用到使用者上。
 
 
图34-12 数据库使用者属性画面
2. 按下 属性 按钮进入 数据库角色属性 画面,如图34-13所示。在这个窗口中可以更改选取的数据库角色。这个任务将在本章的 <管理数据库角色> 一节中解释。
 
 
图34-13 数据库角色属性画面
3. 在我们完成了这些设定选项后,按两次 确定 即可建立数据库使用者。
使用 T-SQL 建立使用者
 
要使用 T-SQL 建立数据库使用者,可以执行 sp_adduse 预存程序。这个预存程序可以在 ISQL 或 OSQL 中执行,语法如下:
sp_adduser [ @loginame = ] 'login'
     [ , [ @name_in_db = ] 'user' ]
   [ , [ @grpname = ] 'group' ]
Login 这个参数是 SQL Server 登入账户的名称,是必须提供的数据。user 变量是新的使用者名称,group 则是新使用者所隶属的群组或角色。如果没有指定 user 值,那么它的值会与 login 参数相同。
下面的命令建立了一个新的数据库使用者,其名称为 JackR 和 Windows NT 或Windows 2000 账户 FORT_WORTH/DB_User:
sp_adduser 'FORT_WORTH/DB_User', 'JackR'
FORT_WORTH 是系统或者网域名称,而 DB_User 是 Windows NT 或Windows 2000 账户名称。
管理数据库存取权限
 
 存取权限 (permissions)用来控制数据库对象的存取,并指定可操作特定数据库操作的使用者。可以将服务器和数据库存取权限都设定。服务器存取权限允许 DBA 执行数据库管理任务,数据库存取权限则是用来允许或者禁止存取数据库对象和陈述式。本节中将讨论存取权限的类型,以及如何分配存取权限。
服务器存取权限
 
服务器存取权限是分配给 DBA,允许DBA执行管理任务。这些存取权限定义在固定服务器角色。使用者登入账户也可以分配给固定服务器角色,但是这些角色不能被更改。(在本章稍后的 <使用固定的服务器角色> 一节中将讨论服务器角色。)服务器存取权限包括 SHUTDOWN、CREATE DATABASE、BACKUP DATABASE 和 CHECKPOINT 存取权限。服务器存取权限只能授权 DBA 作为执行管理任务使用,而不需要更改或者授予个人使用者。
数据库对象存取权限
 
数据库对象权限是权限类型中,属于允许数据库对象存取的类型。在存取数据表或检视使用 SQL 陈述式(如 SELECT、INSERT、UPDATE 和 DELETE)存取对象时,就需要使用对象存取权限。使用 EXECUTE 陈述式执行预存程序时也需要对象存取权限。
使用 Enterprise Manager 指定对象存取权限
 
要使用 Enterprise Manager 将数据库对象存取权限授予使用者,请按照下列步骤操作:
1. 展开服务器群组,展开一个服务器,展开需要分配存取权限的数据库,然后选取 使用者 数据夹。在右边窗格中会列出使用者。请在使用者名称上按一下鼠标右钮,并从快捷菜单中选择 内容 ,进入 数据库使用者属性 窗口,如图34-14所示。
 
 
图34-14 「数据库使用者属性」窗口
2. 按下 权限 按钮,进入 数据库使用者属性 窗口,如图34-15所示。(也可以在使用者名称上按一下鼠标右钮,从快捷菜单中选择 所有工作 ,然后选择 管理使用权限 来进入这个个窗口)。这里可以管理分配该使用者的存取权限,可以为该使用者分配多种存取权限,利用画面中的复选框指定 SELECT、INSERT、UPDATE、DELETE、EXEC 和 Declarative Referential Integrity(DRI)窗体数据列的存取权限。这些对象列在 对象 数据列中。也可以使用画面上方的选项来列出所有的对象,或只显示这个使用者有权限的对象。
 
 
图34-15 数据库使用者属性窗口中的权限窗口
使用 T-SQL 分配对象存取权限
 
执行 GRANT 陈述式,可利用 T-SQL 将对象存取权限指定给使用者。GRANT陈述式的语法如下:
GRANT  {ALL |  permission}
       [ column ON  {table | view} ] |
       [ ON table(column) ] |
       [ ON view(column) ] |
       [ ON  {stored_procedure | extended_procedure} ]
TO security_account
       [ WITH GRANT OPTION ]
       [ AS  {group | role} ]
security_account 参数必须是下列账户类型之一:
•  Microsoft SQL Server使用者
 
•  Microsoft SQL Server角色
 
•  Microsoft Windows NT 或 Windows 2000 使用者
 
•  Windows NT 或 Windows 2000 群组
 
使用 GRANT OPTION 关键词允许使用者将该权限授予其它使用者。这在授予存取权限给其它的 DBA 时很有用。然而,应该要小心使用 GRANT 选项。
AS 选项指定要执行 GRANT 陈述式的权限。GRANT 陈述式必须在使用者或角色有被授予权限时才能执行。
GRANT 陈述式可以按照下面的方式使用:
GRANT SELECT , INSERT, UPDATE
ON Customers
TO Guest
WITH GRANT OPTION
AS Accounting
因为 Accounting 角色可以在 Customers 资料表上授予存取权限,所以要使用AS Accounting 选项。GRANT OPTION 关键词让 MaryW 可将存取权限授予其它的使用者。
________________________________________
相关信息
要检视 GRANT 陈述式中指定的存取权限清单,请参阅< 在线丛书 >索引中的GRANT。
________________________________________
使用 T-SQL 撤销对象存取权限
 
您可以用 T-SQL REVOKE 命令来撤销使用者的对象存取权限。REVOKE 陈述式的语法如下:
REVOKE [ GRANT OPTION FOR ]
      { ALL [ PRIVILEGES ] | permission }
            [ column  ON  {table | view} ] |
            [ ON table(column) ] |
            [ ON view(column) ] |
            [ ON   {stored_procedure | extended_procedure} ]
{ TO | FROM }  security_account
            [ CASCADE ]
            [ AS  {group | role}  ]
security_account 参数必须是下列账户类型之一:
•  Microsoft SQL Server 使用者
 
•  Microsoft SQL Server 角色
 
•  Microsoft Windows NT 或 Windows 2000 使用者
 
•  Windows NT 或 Windows 2000 群组
 
与撤销存取权限相同,GRANT OPTION FOR 选项允许您撤销之前用 GRANT OPTION 关键词授予的存取权限。AS 选项指定要执行 REVOKE 陈述式的权限。
以下是使用 REVOKE 陈述式的范例:
REVOKE ALL
ON     Customers
TO     MaryW
REVOKE AL L陈述式将移除在 Customers 数据表中使用者 MaryW 拥有的所有存取权限。
________________________________________
相关信息
要检视在 REVOKE 陈述式中指定的存取权限清单,请查阅《在线丛书》索引中的 REVOKE。
________________________________________
数据库陈述式存取权限
 
除了数据库对象存取权限,您还可以分配陈述式存取权限。对象存取权限让使用者存取数据库中现存的对象,而陈述式存取权限则授权使用者建立数据库对象,包括数据库和数据表。陈述式存取权限如下:
•   BACKUP DATABASE 执行 BACKUP DATABASE 命令
 
•   BACKUP LOG 执行 BACKUP LOG 命令
 
•   CREATE DATABASE 用来建立新的数据库
 
•   CREATE DEFAULT 用来建立可关联至字段的默认值
 
•   CREATE PROCEDURE 用来建立预存程序
 
•   CREATE RULE 用来建立规则
 
•   CREATE TABLE 用来建立新的数据表
 
•   CREATE VIEW 用来建立新的检视
 
陈述式存取权限可以用 Enterprise Manager 或 T-SQL 分配。
使用 Enterprise Manager 分配陈述式存取权限
 
要使用 Enterprise Manager 为使用者授予数据库的陈述式存取权限,请按照下列步骤操作:
1. 展开一个服务器群组,展开一个服务器,然后展开 数据库 数据夹。在需要分配存取权限的数据库上按一下鼠标右钮,并从快捷菜单中选择 内容 ,显示数据库的属性窗口,如图34-16所示。
 
 
图34-16 数据库的属性窗口
2. 选取 权限 页签,如图34-17所示。在这里可以为存取该数据库的使用者分配存取权限。这些数据列包含复选框,规定了所要分配的陈述式存取权限,而 使用者/角色 字段列出了存取这个数据库的使用者和角色。
 
 
图34-17 数据库属性窗口的权限页签
使用 T-SQL 分配陈述式存取权限
  共2页: 上一页 1 [2] 下一页 <script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值