自动化运行工具——puppet详解(二)

ASP .NET 中的身份验证:.NET 安全性指导

[日期:2004-06-08] 来源:MSDN 作者: [字体: ]

摘要

本文研究了布置服务器应用程序时思量安全性的主要。Internet Information
Services 和 ASP .NET
均提供了普洱模型,以便你对用户展开适宜的身份验证,并在应用程序中收获不错的平安环境。


目录

  • 简介
  • 安全性思虑
  • IIS 和 ASP .NET 之间的关联
  • 身份验证方法
  • Web 服务的安全性
  • 代码访问安全性
  • 大路安全性
  • 别的音讯
  • 附录 A

简介

甭管对应用程序设计者如故开发人士,安全性都是关怀的重大难点。您供给保险存款和储蓄敏感音讯的应用程序,既要幸免恶意抨击,又要提防竞争敌手窃取音讯或知识产权。在为您的应用程序设计安全模型时,您必要从业务角度领悟安全须求,以及选定的安全模型在品质、可伸缩性和配备上所具有的意思。


安全性思考

设若你在统一筹划服务器应用程序,那么您的设计规范应涵盖三个缓解安全题材的部分。在应用程序的功效规范中,您应该思量以下项目并尽量交由化解方案:

  • 有惊无险目的。通晓您要维护的对象并确认保障您可以证实它。
  • 平安危机。精晓您的应用程序的欠缺。您还必须理解那一个弱点对业务的秘闻风险程度。
  • 身份验证。那1进程接受用户凭据,并基于内定的发布机构来验证凭据。用户的(大概地下的应用程序或微型总计机的)标识被号称安全当事者。客户端必须提供证据,以便服务器验证当事者的标识。确认标识后,应用程序就能授权当事者访问系统财富。本文档的下壹节将讲述各样规范,它们有助于你选取合适的身份验证机制。
  • 权限。那一历程明确已表明的标识是不是能够访问某一特定财富。
  • 保卫安全数量传输。在数额经过网络时对数据开展加密,能够保险数量在传输进度中不被翻开和改动。您必须思虑传输进度中要求的多少加密级别。
  • 依傍。那第2建工公司制允许服务器进度使用客户端的景德镇凭据来运营。当服务器模拟客户端时,服务器的持有操作均选拔客户端的凭证进行。模拟差异意服务器代表客户端访问远程财富。该操作必要运用代理。
  • 代办。和效仿1样,代理允许服务器进度使用客户端的广元凭据来运作。不过,代理的功效更强硬,它同意服务器进度以客户端格局来呼叫其余统计机。
  • 操作系统安全性。它指建立适合的访问控制列表 (Access Control List,
    ACL)
    和互连网安全措施,避防患侵犯者访问受保证的财富。您必须为适龄的财富设置适当的
    ACL,从而只允许相关的当事人举办走访。
  • 维护物理访问。是指将你的服务器总计机放在二个有惊无险的屋子中。您不应忽视那么些大旨问题。
  • 代码访问安全性。它同意依照代码的根源及代码标识的任何特色来鲜明代码的可相信度。您应该精通怎么创制和谐的造访许可。

IIS 和 ASP .NET 之间的涉嫌

在计划应用程序时,您应了然 Internet Information Services (IIS)身份验证和
Microsoft ASP
.NET安全结构之间的关联。那将允许您恰本地验证您的用户,并在应用程序中得到不错的攀枝花条件。请留意,ASP
.NET 应用程序的安全体署和
IIS的平安布局是完全独立的,它们得以独立选拔,也足以组合使用。

IIS 在 IIS 元数据库中维护与安全性相关的配置安装,而 ASP .NET 在
XML配置文件中保险安全(或其余)配置安装。这一般会在安全性方面简化应用程序的计划,但应用程序接纳的安全模型则须求经过配备文件(Web.config)
正确配置 IIS 元数据库和你的 ASP .NET 应用程序。

图 1 证实了 IIS 和 ASP .NET 之间的关系。

澳门美高梅手机网站 1

图 一:IIS 和 ASP .NET 之间的安全性关乎

ASP .NET 身份验证提供程序和 IIS 安全性

ASP .NET
通过动用身份验证提供程序来兑出现份验证,身份验证提供程序是验证凭据和贯彻其余安全成效(例如生成
Cookie)的代码模块。ASP .NET 帮忙以下三种身份验证提供程序:

  • 表单身份验证。使用该提供程序,能够使用客户端重定向将未通过身份验证的恳求重定向到钦定的HTML
    表单。然后,用户能够提供登录凭据,并将表单发送回服务器。若是应用程序验证了请求(使用应用程序特定的逻辑),ASP
    .NET将时有爆发1个Cookie,个中蕴藏凭据或用来重新申请客户标识的密钥。后续发出的乞请在标头指导该
    Cookie,那就意味着从此不再须求身份验证。
  • Passport 身份验证。那是二个由
    Microsoft提供的汇聚身份验证服务,它为加入的站点提供单纯的登录程序和成员服务。ASP
    .NET 与 Microsoft Passport 软件开签发承包合约(SDK) 相结合,为 Passport
    用户提供了类似表单身份验证的效力。
  • Windows 身份验证。该提供程序行使了 IIS 的身份验证成效。当 IIS
    落成身份验证后,ASP .NET 使用已注明标识的符号来授权访问。

要在 ASP .NET
应用程序中应用某种钦点的身份验证提供程序,您必须在应用程序配置文件中开创如下项:

// web.config 文件
<authentication mode = "[Windows/Cookie/Passport/None]">
</authentication>

除身份验证外,ASP
.NET还提供了模拟机制以树立应用程序线程的自贡标志。能不能够得到不错的标记取决于你是还是不是恰本地配置了
IIS 身份验证、ASP .NET身份验证提供程序和 ASP .NET 模拟设置。图 2 展现了
IIS 身份验证和 ASP .NET 提供程序之间最可能的整合。

澳门美高梅手机网站 2

图 二:ASP .NET 和 IIS 安全设置矩阵

应用 Windows 帐户实行身份验证

假如你布置接纳 Microsoft Windows NT 域控制器或 Microsoft Windows2000Active Directory 帐户来开始展览用户身份验证,您应该结合使用 IIS 身份验证和
ASP .NET Windows提供程序(见图
2)。使用该办法,您不用编写任何特定身份验证代码。当使用该形式求证时,ASP
.NET依照已表明用户在应用程序环境中社团并附加3个 Windows Principal
对象。那样,ASP
.NET线程就可见作为已表明用户运营,并可收获用户的组成员身份。

在一些意况下,您或者希望忽略 IIS 身份验证,而执行自定义的缓解方案。使用
ASP .NET也可以兑现那一对象。例如,您能够编写自定义 ISAPI 过滤器,依照Active Directory 检查用户凭据,并手动成立Windows Principal
对象。除那种办法外,还有其余部分方法可以选用,可是与向来利用
.NET提供程序相比较,它们都要求编制越来越多的代码。

使用非 Windows 帐户进行身份验证

一旦您布署在应用层举行用户身份验证,并且用户未有 Windows
帐户,则相似应将 IIS 配置为运用匿名验证。在那种安顿下,请思考以下 .NET
身份验证模块:

  • 无:在素有不表明用户时或支付自定义说西楚码时采取。
  • 表单:在急需为用户提供登录页时使用。
  • Passport:在选拔 Passport 服务时接纳。

萧规曹随和代理

在模拟景况下,ASP .NET
应用程序可以运用客户端标识以客户端的身价有接纳地执行。模拟一般用来能源访问控制。您应仔细思考是或不是供给效法,因为它将消耗额外的服务器能源。代理是一种比模拟更有力的款式,它同意服务器进度以客户端的身份走访远程财富。

要是启用模拟,ASP .NET 将从 IIS 收到模拟标记。与价值观的 Active
ServerPages (ASP) 相比较,使用 ASP .NET 将使你在 Web
应用程序中更常见地操纵模拟。那种控制是通过在应用程序的Web.config
文件中钦定值来促成的。

在钦命所需的模仿设置时,有以下多个选项:

  • 启用模拟。在那种场馆下,ASP .NET 将效仿由 IIS
    传递给它的标记,该标记大概是已证实的用户,也说不定是匿名 Internet
    用户帐户。 <identity impersonate=”true”/>
  • 启用模拟,使用钦命的特定模拟标识。在那种情景下,ASP .NET
    将效仿使用安插的标识生成的符号。此时不使用客户端标记(纵然有)。

    <identity impersonate="true" username="domain\user" password="pwd"/>
    
  • 剥夺模拟。此选项是默许设置,以便与 ASP 向后相当。在那种情景下,ASP
    .NET 线程将运用应用程序匡助进度的历程标记(暗中认可情形下为 IIS
    系统帐户)来运作,而不思量接纳的是 IIS 和 ASP .NET
    身份验证的何种组合。

    <identity impersonate="false"/>
    

假如应用程序驻留在 UNC 共享中,ASP .NET 将直接模拟 IIS UNC
标记以访问该共享,除非动用了安排帐户。倘诺提供了显式配置的帐户,ASP .NET
将事先利用该帐户。

表 一 呈现了基于三种不一样的
Web.config配置来推行请求的线程标记。请留意,IUS福睿斯_SE昂CoraVEBMWX三帐户表示已布置用于匿名访问当前 U昂CoraL 的帐户(即,该帐户不必是
IUSTucson_帐户)。进度帐户是应用程序帮忙进程运营时使用的帐户:私下认可情形下,该帐户为系统帐户,除非举行越发布置。

表 1:ASP 和 IIS 配置的 ASP 线程标记

澳门美高梅手机网站 3

应用程序标识

建议你使用专门布署的帐户来运营 ASP .NET
应用程序协助进度(aspnet_wp.exe),该帐户的权柄比私下认可系统帐户低。首要缘由有多个。第一,若是出现安全题材,侵袭者未有管理权限。第叁,它同意应用程序服务提供者
(ASP)
使用较低权限的帐户运转应用程序,因而寄宿的应用程序不会毁掉服务器计算机的完整性或执行需求管理员权限的操作。

要运用内定帐户运转 ASP
支持进度,须求在\WINNT\Microsoft.NET\Framework\Version\Config
文件夹下的根配置文件(machine.config) 中添加二个 <processModel>
成分,如下所示:

<system.web>
  <processModel enable="true" username="domain\user" password="pwd"/>
</system.web>

除钦命特定的用户帐户外,您还是能够将
username属性设置为五个特别识别的值“SYSTEM”和“MACHINE”之1。无论设为哪个值,密码属性必须设为“AutoGenerate”,因为不要求钦定凭据。“SYSTEM”设置(暗许)使用系统帐户运维帮助进度,而“MACHINE”使用名称中带前缀
ASPNET的独特帐户运营支持进度。该帐户与 IWAM_MACHINENAME 帐户相同,IIS
寄放标准 ASP 应用程序时行使IWAM_MACHINENAME 帐户来运作 dllhost.exe
的实例。ASPNET 帐户在 .NET 的安装过程中创立。

倘若你使用自定义帐户,该帐户必须具有对以下目录的必需访问权限。

  • 对 %installroot%\ASP .NET
    权且文件目录具有读/写访问权限。该根目录下的子目录用于动态编写翻译输出。
  • 对 %temp%
    目录具有读/写访问权限。在动态编写翻译进度中,编写翻译器将应用该目录。
  • 对应用程序目录具有读访问权限。
  • 对 %installroot% 层次结构具有读访问权限,以允许访问系统先后集。

请留意,相关的 ACE 是在安装 ASPNET 帐户的历程中定义的。

万1您使用尤其安顿的历程帐户,您应询问它对运用模拟的界定。纵然您能够继续模拟客户端标识,但你无法运用模拟的扩大格局(其钦赐的模仿帐户已在应用程序的
Web.config 文件中定义)。那是因为该选项供给救助进度具有
SE_TCB_NAME(“作为操作系统的1部分运维”)
权限,而权力较低的进程标识1般不享有此权限。针对各种请求的模拟依然有效,因为
IIS创制了登录会话,并将效仿标记直接传送给救助进度。请留心,此限制仅适用于
Windows 两千 和 Windows NT肆。Microsoft Windows XP
蕴含有增强功用,允许在不抱有此权限的图景下转移特定的登录会话。

详细消息,请阅读《.NET 框架开发职员指南》的以下章节:

  • ASP .NET 安全性的办事原理
  • ASP .NET 身份验证
  • ASP .NET 配置概念
  • 整合使用 IIS 身份验证与 ASP .NET 模拟

至于 IIS 伍.0 中身份验证的详细消息,请参阅小说 Internet Information
Services 5.0 身份验证方法(英文)。


身份验证方法

在 .NET Web
应用程序中能够动用各个身份验证选项。例如,您能够采取选取某种受支持的 IIS
身份验证机制,或在应用程序代码中执行身份验证。选取身份验证方法时,应思索以下壹些或具备因素:

  • 服务器和客户端操作系统
  • 客户端浏览器类型
  • 用户数量、地方、用户名以及密码数据库类型
  • 铺排考虑,如应用程序是依照 Internet 依旧Intranet,及其是否位于防火墙之后。
  • 应用程序类型,如,是交互式网址依旧非交互式 Web 服务
  • 要爱戴的多寡的敏感度
  • 质量和可伸缩性因素
  • 身份验证供给。例如,您愿意拥有用每户平均可选择应用程序;或期待限制有些区域仅供注册用户选取,而另壹对区域“仅限管理员使用”。

规定身份验证方法

行使附录A中的流程图,有助于你依照具体应用程序的须要鲜明最符合的身份验证方法。要运用该流程图,请先回答关于用户群和配备模型性质的难题。图的结尾处为适龄的备选身份验证方法。

反省完流程图后,您应研商以下小节。那一个小节提供了有关种种身份验证方法的更详细消息,并提供越发的辅导以帮忙你优化决策程序。在本节将要甘休之际,您应该能够选出叁个备选身份验证方法。

流程图决策点解释

  • 用户是还是不是必须登录?是或不是必要用户名和密码以访问站点或劳务?
  • 是还是不是要求性格化?站点是不是足以不须求用户登录而提供性子化内容?
  • 用户帐户?用户帐户是储存于 Windows NT 域帐户、Active
    Directory,仍然别的数据存款和储蓄区,例如关系型数据库、其余LDAP(轻便目录访问协议)目录服务或 XML 文件?
  • 内需单1登录依然无缝登录?您是或不是期待用户从登录页登录,或索要活动进行身份验证?例如,在自动化的小卖部对同盟社
    (B贰B) 交易中或然需求活动身份验证。
  • 您是还是不是须要安全登录?您的系统是不是须求使黑客极难通过互连网来盗用用户名和密码?那么些决策一般是基于站点上可用数据的敏感度来做出的。
  • 应用程序将在 Internet
    上运维吧?应用程序是或不是位于防火墙之后(用户未经过域身份验证),或应用程序将依据Intranet(最后用户可能早就过域身份验证)?
  • 您是还是不是必要代理安全环境?您是否要求工作组件与呼叫方标识共同运转?假使是如此,则要求效法。而且,倘使你需求拜访系统能源(例如新闻队列、数据库或远程计算机中的文件系统),则须求代理级其他效仿。
  • 服务器和客户端是或不是仅运行 Windows 三千?运营条件中的计算机是同等运维Windows 两千,依旧会有客户端运维着其他操作系统(如 Windows 九x 和
    Windows NT 四.0)?

匿名身份验证

接纳匿名身份验证,服务器不请求客户端向其发送用户凭据。假设您的站点或劳务可供公开使用,而你不用知道呼叫方的标识,那么那便是一个好的选项。同时,也不会出于与扶助的身份验证机制不相称而导致浏览器限制。全体用每户平均可访问布署为匿名身份验证的站点。值得注意的是,即便你只怕已配备了
IIS 以拓展匿名身份验证,但身份验证大概是在 ASP .NET
层举行,而那并不是实在的匿名身份验证。本节假诺IIS
和应用程序均不须求登录。

特出应用方案

以下情况下,您应考虑使用匿名身份验证:

  • 随便对于登录依然政工逻辑组件,您都不供给掌握呼叫方的名字和/或密码。
  • 你所保险的新闻被认为是“公有的”。

以下景况下,您不应记挂动用匿名身份验证:

  • 你须求选用登录名和密码以限制用户群。

其它思量

挑选匿名身份验证时,您还应考虑以下难点。

站点中仅包罗天性化内容

一旦你设计的站点仅包蕴天性化内容,则匿名身份验证恐怕是1个好选拔。例如,音信站点能够依据用户的邮编来提供地点音讯,而不须要用户分明登录。本性化功用能够通过运用独立于身份验证的
Cookie 来推行。有关 Cookie的详细信息,请参阅本文书档案后边的 Cookie 一节。

模拟

当使用匿名身份验证时,应用程序线程将运转为:

  • 内部匿名 Internet 帐户 IUSLacrosse_MACHINENAME。
  • 在 IIS 中为匿名用户配置的帐户。
  • IIS 系统帐户。

只要您的应用程序使用其余财富,例如 COM+ 组件、数据库、音讯队列或 UNC
文件共享,您要求为匿名用户启用相应权限。假诺是如此,请缅想以下选项:

  • 设置域控制器以富含全体 Web
    和应用程序服务器。配置匿名用户以作为域用户运转,并拥有访问相应财富的权柄。此办法中的帐户管理是汇聚进行的,由此更易于管理。
  • 1经你不在域中运作,则足以在每种 Web
    和应用程序服务器中开创1个装有同等名字和密码的用户。由于重复帐户的管制比较复杂,所以并不引入那种方式。

性能

应用匿名网站而不应用 ASP .NET
模拟将带来最棒品质,不过应用程序配置的安全性最差。

实现

要贯彻匿名身份验证,应为匿名身份验证配置 IIS
并配备适当的匿名用户帐户。使用 Web.config 文件配置 ASP .NET
以利用无身份验证。

//web.config 文件
<system.web>
   <authentication mode="None" />
</system.web>

主导身份验证

当 IIS 配置为着力身份验证时,它将指令浏览器通过 HTTP
发送用户凭据。密码和用户名使用Base6四编码方法举行编码。纵然密码已经编码,但由于其解密相对较不难,所以如故是不安全的。浏览器将通过对话框提醒用户,然后重新发出原始匿名请求和提供的证据(包括用户名和密码)。弹出式登录对话框不自然符合您的用户界面设计必要。大多数Internet 浏览器帮忙宗旨身份验证。

名列前茅应用方案

以下情况下,您应思虑动用基自身份验证:

  • 你的用户拥有 Windows NT 域或 Active Directory 帐户。
  • 您要求支持多少个浏览器类型,包罗 Netscape Navigator 和富有版本的
    Internet Explorer(包涵 Pocket PC 和 Windows CE 平台)。
  • 您要求援救通过 Internet 实行身份验证。
  • 你须求在应用程序代码中走访明文密码。
  • 你要求帮助代理。

以下情状下,您不应思量选取基自身份验证:

  • 亟需安全登录且不选择安全通道,例如由平安套接字层 (SSL) 提供的坦途。
  • 你的用户存款和储蓄在自定义数据库中,并且未有 Windows 帐户。
  • 您要求一个自定义表单作为登录页提供给用户。

其余思量

采纳基本人份验证时,您还应怀想以下难点:

使用基本人份验证代理

您可以选拔基本身份验证从1个总括机代理另3个(但不用跨越一个)。代理会产生是因为
IIS服务器将经过调用 Win3贰 API LogonUser 达成地点登录。由于 IIS
拥有用户的当众密码,它能够响应远程总结机的挑衅,允许Web服务器代表客户端操作。纵然您供给代理别的电脑的克拉玛依环境(超过单个跃点),则必须本地登录到呼叫链中的其余电脑。通过采纳基本身份验证能够达成那一点,因为你能够访问用户的名字和当面密码,而名字和公开密码可以传递给其它应用程序(例如基于
ISAPI 或 CGI 的应用程序)。

有限协理宗旨身份验证

值得注意的是,密码的破译相对简单,由此你应将主导身份验证的选取范围在非安全或至多是半日喀则的应用程序中。

您能够因而与 SSL 结合来爱惜中央身份验证。那将防备密码被破译。近年来的浩大
Internet 应用程序都构成使用了大旨身份验证和 SSL。

实现

要落到实处主旨身份验证,应在 IIS 内对其展开布局,并确定保障您的用户在 Web
服务器上有所“本地登录”权限。假若您的 ASP .NET
应用程序必要当作经过基自己份验证的用户来运营,请使用以下 Web.config
文件配置。

// web.config 文件
<system.web>
   <authentication mode="Windows" />
</system.web>

差不多身份验证

简言之身份验证是 Windows 3000 和 IIS
五.0的新职能。这种身份验证格局能够加密用户的密码音讯并提供壹种体制以便幸免少数常见的服务器攻击(如回看攻击)。简要身份验证不像基自己份验证那样采纳公开通过网络发送凭据。相反,它使用一种由
奥德赛SA 开发的散列机制,称为
MD伍。(有关详细音讯,请参阅位于http://www.ietf.org/rfc/rfc1321.txt
的“MD5 信息简要算法” 。)就算它对于
Internet来说是二个一蹴而就的身份验证选拔,但客户端和服务器的供给范围了它的大规模接纳。IIS
与中央身份验证差异,而与 NTLM 和 Kerberos类似。它不在本地登录 Web
服务器,因而无法实施代理。

一流应用方案

以下处境下,您应怀念使用简便身份验证:

  • 您的 Web 服务器运转 Windows 三千,并且您的用户在 Active Directory
    中储存有 Windows 帐户。
  • 您抱有的客户端均采纳 .NET 平台或 Internet Explorer 五.x。
  • 你需求比基自己份验证更加强劲的密码加密方法。
  • 您要求援救通过 Internet 举办身份验证。

以下处境下,您不应思索使用简便身份验证:

  • 您的某个客户端采纳非 .NET 或 Internet Explorer
    伍.0(或更加高版本)的阳台。
  • 你的用户在 Active Directory 中并未存储 Windows 帐户。
  • 您要求代理。

其余记挂

采取不难身份验证时,您还应思索以下难点。

澳门美高梅手机网站,保障简要身份验证

简不难单身份验证的指标是提供比基本人份验证更安全的报到方法。然则,它没有与
SSL、NTLM、Kerberos 或评释身份验证相结合的骨干身份验证安全。

通过 SSL
使用简便身份验证是三个康宁的化解方案,但是其配备须要近年来范围了它的广小运用。

简不难单身份验证的特定平台要求

简言之身份验证要求客户端运营 .NET 或 Internet Explorer
5.x。用户帐户必须存款和储蓄在 Active Directory 中,且 Active Directory
必须针对简要身份验证实行布署。

实现

您必须为简单身份验证配置 IIS。有关详情,请参阅 Microsoft 知识库文章Q222028,设置简要身份验证以利用 Internet Information Services
5.0(英文)。

借使你的 ASP .NET 应用程序需求当作已拓展 IIS
简要身份验证的表达用户来运维,请使用以下 Web.config 配置:

// web.config 文件
<system.web>
<authentication mode="Windows" />
</system.web>

要在 Windows 三千中选用简易身份验证,服务器必须能访问设置为拓展简短身份验证的 Active
Directory 服务器。

至于简要身份验证的详细新闻,请参阅 奥迪Q伍FC 206九 规范
(http://www.ietf.org/rfc/rfc2069.txt)。

集成 Windows 身份验证

合并 Windows 身份验证(使用 NTLM 挑衅/响应或 Kerberos)涉及对全数Windows
NT 域或 Active
Directory帐户的用户实行身份验证。与中央身份验证和简易身份验证分歧,在该情势中加密密码不经过互联网发送,由此越发安全。假设服务器中装置有
ActiveDirectory 服务,且浏览器与 Kerberos V5 身份验证协议包容,则将采用Kerberos V5协议和挑衅/响应协议,不然将仅使用挑衅/响应协议。该方法最适合
Intranet 环境。在那种条件中,用户和
Web服务器总计机在同二个域中,管理员能够保障每台总括机均运转 Microsoft
Internet Explorer 版本 三.0一 或越来越高版本。

出色应用方案

以下情状下,您应怀想动用集成 Windows 身份验证:

  • 你的用户拥有 Windows NT 域或 Active Directory 帐户。
  • 您的应用程序运营于 Intranet 上(在防火墙后)。
  • 拥有客户端均运维 Internet Explorer 版本 三.01 或越来越高版本。
  • 您须要执行代理(那亟需 Kerberos)。
  • 你需求为域用户使用无缝登录程序(例如,未有弹出式登录对话框)。

以下情况下,您不应思考使用集成 Windows 身份验证:

  • 你的用户帐户是储存在外部数据库中,而不是储存在 Windows NT 域数据库或
    Active Directory 中。
  • 你必要协理通过 Internet 进行身份验证。
  • 您的客户端选拔 Netscape Navigator 或任何非 Microsoft 浏览器。
  • 您须求获得客户的公开密码。

其余考虑

挑选集成 Windows 身份验证时,还应思量以下难点。

NTLM 和 Kerberos 的安全级别

那二种协议均中度安全。对于 NTLM 和 Kerberos
协议,密码不通过互联网传输。NTLM 使用1种搦战/响应机制。Kerberos
甚至尤其安全,因为它支持相互印证(即,客户端能够证实其与之报导的服务器)。

代办难点

NTLM 协议不扶助代理。当客户端的凭据传送到
IIS服务器之后,它们不可能被传送到后端服务器进行身份验证。可是,Kerberos帮助代理,允许四个下游总括机的任何进度代理客户端凭据。例如,您可以使用
Kerberos 将 Web 用户的证据提需要 COM+中间层,并经过该层到达 Microsoft
SQL Server 数据库(配置为 Windows 集成安全性)。ActiveDirectory
的默许配置中未启用 Kerberos
身份验证。在支配将其看成代理化解方案从前,您必须确定保证您的环境支持Kerberos。

Internet 的使用

NTLM 和 Kerberos 协议在 Internet 中均不常用。要在 Internet
中运用Kerberos,关键难题是平安授权须求汇聚并对具备用户可用。只有功底设备成功才能落到实处那或多或少。铺排Internet 的另1个题材是非Microsoft
浏览器不支持这几个协议。对于特定的客户群,那说不定会是三个范围因素。

质量和可伸缩性

Kerberos 比
NTLM快。可是,那两种协议均比基本身份验证或少数自定义身份验证方法慢。假设您希望大量用户同时登录,就要求细致设计
Active
Directory的安插。假使您拥有数百万的潜在用户,则您能够设想动用高质量数据库(如
SQLServer)来存款和储蓄用户的名字和密码。假设你在多层应用程序中代理安全条件,就不小概会遇见可伸缩性难点。越发是,不可能动用数据库连接池等中间层消除方案。

实现

要落到实处 Kerberos 或 NTLM,您必要配备 IIS 以应用集成 Windows
身份验证。要是您供给帮忙运营非 Internet Explorer
的客户端,则能够启用基本人份验证以结合 NTLM 或 Kerberos。

配置 Kerberos 时,您需求思虑那几个特定细节:

  • 客户端和服务器必须都在同样 Windows 两千 域中运作 Windows 三千。
  • 务必启用客户端的用户帐户以应用代理。
  • 总得启用服务器的帐户以应用代理。

若是您的 ASP .NET 应用程序必要作为已由 IIS 使用集成 Windows
身份验证举行过证实的用户来运作,请使用以下 Web.config 配置:

// web.config 文件
<system.web>
   <authentication mode="Windows" />
</system.web>

至于使用 Kerberos 的详细音信,请参阅:

  • Windows 2000 中的 Kerberos 组件(英文)
  • Kerberos 说明(英文)

申明身份验证

注脚是设置在处理器中的数字“密钥”。总计机试图访问服务器时,密钥将电动传递以对用户实行身份验证。客户端证书可被映射到域或
Active Directory 中的 Windows 帐户。借使你在 ASP .NET 中利用
Windows身份验证提供程序,应用程序线程将用作注解所映射的用户运转。您也可在
ASP
.NET中贯彻自定义身份验证,例如,您能够行使证书内含有的电子邮件地址(或近似的唯一字段)。从客户端的见识来看,安全性是无缝的,因为客户端不供给采取登录页来报到。那就使得证书在自动化业务流程方面成为四个有魔力的选择。

非凡应用方案

以下意况下,您应牵记使用证书身份验证:

  • 您所保证的数据丰富灵活,您须要特别安全的缓解方案。
  • 你须要互相身份验证。
  • 你愿意第二方能够管理服务器和申明拥有者之间的关系。
  • 你希望实现无缝的客户端交互,例如自动 B二B 交易。

以下情况下,您不应思量使用证书身份验证:

  • 发表和治本客户端证书的资本超越了扩展安全性所得到的价值。

任何考虑

慎选证书身份验证时,您还应思虑以下难题。

部署

您要求将客户端证书物理安顿在客户端工作站中。有各个艺术能够拓展此布置,从
Web 铺排到从 CD-ROM
安装证书。经常是安插的题材导致了注脚情势的应用不及其余与 SSL
相结合的身份验证格局大面积。

映射到 Windows 帐户

能够将注明映射到域或 Active Directory
帐户。若是急需对各自用户举行身份验证,能够使用1种叫做“壹对一映射”的技能,将证书映射到独门帐户。假若运用
Active Directory 映射,则对1对一映射一向不界定。

即使急需表达来自特定组或公司的具有用户,则能够使用多对壹映射,例如,将有着包括同一集团名称的用户映射到叁个帐户。

譬如,思索以下 B2B 方案:

  • 协作社 A 允许其搭档集团 B 查看其部分内部网址。
  • 商店 B 的总结机安装有证书。
  • 多对1映射的结果是,ASP .NET 应用程序将作为通用的“CompanyB” Windows
    帐户运转。

关于证件的铁画银钩音信,请参阅由 迈克尔 霍华德 所著的《设计 Microsoft
Windows 2000 基于 Web 的双鸭山应用程序》。

实现

你必须配备 IIS 以进行证件身份验证。有关将公共密钥证书映射到 Windows 2000用户帐户的详细音讯,请参阅将证件映射到用户帐户的安分守纪指南(英文)。

Passport 身份验证

Passport 身份验证是由 Microsoft 提供的集中身份验证服务。使用
Passport时,在一些意况下您不要实现协调的身份验证代码、登录页和用户表。Passport
使用 Cookie 机制工作。如若客户端以前曾经通过了Passport
验证,则允许它们访问您的站点。不然,它们将被电动重定向到 Passport
站点以拓展身份验证。

若是你要求在多个域之间开始展览单一登录(那么些域也支撑 Passport),那么
Passport 是2个好选取。Passport
不仅提供身份验证服务,还提供包含安顿文件管理和购买服务在内的别的服务。

在 Windows 2000平台上,Passport未有平昔集成到操作系统内部的其他身份验证和授权机制。.NET
框架确实会检查
PassportCookie,但若是您维护团结的数据库,您必须兑现团结的代码,以将
Passport 用户映射为祥和的用户,同时还要完毕和谐的授权机制。

一级应用方案

以下境况下,您应思念动用 Passport 身份验证:

  • 你的站点要与其余启用 Passport
    的站点结合使用,同时你希望访问那一个站点的用户能够实行单一登录。
  • 您不想维护用户名和密码数据库。

以下景况下,您不应思虑使用 Passport 身份验证:

  • 您希望利用已经储存在自个儿的数据库或 Active Directory
    中的用户名和密码。(固然有相当的大恐怕选拔额外的代码将 Passport ID
    映射为用户帐户。)
  • 您的客户端是经过编制程序来拜访站点的其他总计机。

其余思考

选料 Passport 身份验证时,您还应思考以下难点。

启用 Passport

使用 Passport 身份验证须要站点注册 Passport 服务并在服务器中安装
Passport SDK。

代理

在 Windows 2000 中,不容许从一个服务器将用户的 Passport
安全凭据代理到另2个。

照耀到用户帐户

Passport 用户 ID (PUID) 仅仅是八个标识。假如你的用户帐户是在
ActiveDirectory 或其余自定义数据库中定义的,并且您必要将 PUID
映射为用户,则您要求完毕自身的自定义代码。Windows的今后版本恐怕会提供将
PUID 映射到 Windows 帐户的本机帮衬。

保护 Passport

当 Passport 作为单机身份验证方法运用时,加密 Cookie 的大茂山真面目使得 Passport
比较安全。然则,为了防止重播攻击并保持最高安全级别,Passport 须求与 SSL
结合使用。

实现

要完毕 Passport,您要求在服务器中安装 Passport SDK。您还须要向 Passport
注册以应用劳务。您必须按如下方法配置 web.config 文件:

// web.config 文件
<system.web>
   <authentication mode="Passport" />
</system.web>

有关 Passport 服务的详细音信,请参阅:

  • Passport 身份验证提供程序(英文)
  • Passport 技术白皮书(英文)
  • Passport 开发职员新闻(英文)

表单身份验证

表单身份验证是指接受用户凭据的自定义用户界面组件,例如,一个用户名和密码。未来选用的重重Internet应用程序具有那种供用户登录的表单。值得注意的是,表单本人并不实施身份验证,它但是是一种得到用户凭据的法子。身份验证是经过应用自定义代码访问用户名和密码数据库来落到实处的。

注明用户地方后,服务器1般会通过某种格局向客户端阐明其早已因而身份验证,能够开始展览接二连三请求。借使须求,您能够强制用户验证每一种请求,但诸如此类会潜移默化属性和可伸缩性。您应思虑三种基本办法来鉴定识别从前登录过的客户端:

  • Cookie。Cookie
    是最初由服务器向客户端发送的一小段数据。随后,由客户端随每种HTTP
    请求将其发送回服务器。它能够用作客户端已经通过身份验证的标志。ASP
    .NET 通过CookieAuthenticationProvider 模块为您提供了使用 Cookie
    进行表单身份验证的体制。超越八分之四 Web浏览器(包含 Internet Explorer 和
    Netscape Navigator)均帮助 Cookie。
  • 自定义。您能够兑现本身的自定义机制来向服务器标识客户端。尽管你的客户端禁止使用了Cookie,您能够思索在每个U奥迪Q5L查询字符串中存款和储蓄3个唯1标识符。恐怕应用存款和储蓄在永久性一级或不可知框架中的隐藏表单域。无论怎么着,您要保管黑客不可能通过编制程序模拟成已经通过应用程序身份验证的用户。

Cookie 广泛应用于选拔表单身份验证的网址。.NET 的早期版本将仅协助使用
Cookie 的表单身份验证。

卓绝应用方案

以下意况下,您应思考选择表单验证:

  • 用户名和密码存款和储蓄在 Windows 帐户以外的岗位。请留心,Windows
    帐户也足以接纳表单身份验证。
  • 您要在 Internet 上陈设应用程序。
  • 你供给协理具有浏览器和客户端操作系统。
  • 你愿意为用户提供温馨的用户界面表单作为登录页。

以下意况下,您不应思量动用表单验证:

  • 你要为集团 Intranet 安插应用程序,并且能够应用购并 Windows
    身份验证。
  • 你无法通过编制程序访问来注明用户名和密码。

其它思索

选拔表单身份验证时,您还应怀想以下难点。

爱戴表单身份验证

若果用户是经过登录页来交付密码的,您能够利用 SSL
来保证通道,以免密码被盗。假使您使用
库克ie来保护用户在各类请求之间的标识,您应该明白黑客通过互联网监视程序“盗用”用户
Cookie 的暧昧危险。使用
Cookie时,要使站点真正平安,唯一的格局是站点内的拥有简报都使用
SSL。对多数商业网址来说,由于那种方法的运转费用太大,所以不切实际。使用
ASP.NET,您能够使服务器定期重生成 Cookie。那种使 Cookie
过期的方针是为着以免其余用户盗用 Cookie 访问站点。

品质和可伸缩性

设计大流量网址时,您须求考虑验证用户地点所带来的性情影响。假若您预计会有雅量用户同时登录,您须求尽快做到凭据确认进程。

假定应用 SSL,由于必须进行额外的加密步骤,品质会驾驭减退。在 Web
中,您应将贯彻安全登录的服务器和内容服务器分开,以满意品质必要。

检查 Cookie 的存在

一经你使用的是 .NET,则检查 Cookie 存在的进度是机关完成的。但假诺不行使
.NET,则有三种为主办法:

  • 贯彻 ISAPI 筛选器,它肯定客户端请求中
    Cookie的存在,注明客户端已经经过身份验证。假若 Cookie
    存在,则允许请求继续。假若 Cookie
    不存在,则将客户端重定向到登录页。如上所述的ISAPI 筛选器能够由
    Microsoft Commerce Server 3000 达成。
  • 你能够在各种 Web 页的启幕处编写代码检查 Cookie 是还是不是存在,或编辑由
    Web
    页传递的别的自定义值。假如标记不设有,代码可将用户重定向到登录页。这一直彻情势很简短;可是,您大概不能够维护除
    ASP 页以外的能源。例如,图像文件或者照旧可以访问。

要是你使用的是 ASP .NET,则能够行使表单身份验证提供的嵌入功效。

选用表单身份验证与 Windows 帐户

万1你布署的是 Internet 应用程序,而你的用户在服务器中负有 Windows
帐户,则能够运用表单身份验证或 SSL
上的表单身份验证,以代替基本人份验证和不难身份验证。

假如您的应用程序基于 Intranet,并且一度在利用集成 Windows
身份验证,则表单身份验证恐怕并非好的解决方案。您公司的安全策略恐怕也分歧意用户将密码输入
HTML 表单。

实现

要兑现表单身份验证,您必须创造自身的登录页同等看待定向未证实客户端的
U本田CR-VL。您还必须成立和谐的帐户查找方案。使用 ASP .NET,可以选择以下
Web.config 配置:

// web.config 文件
<system.web>
   <authentication mode="Forms" />
</system.web>

因为你达成的是友善的身份验证,一般能够将 IIS 配置为匿名身份验证。

关于落到实处 SSL 的详细音信,请参阅以下小说。

  • Web 安全性揭密:最大限度地行使 IIS 安全性(英文)
  • 《Internet Information Services 五.0 资源指南》中的“配置 IIS 五.0
    安全性”

Cookie

Cookie 是由 Web
服务器位于你的硬盘驱动器上的三个小文本文件。其首要性指标是让服务器能够分辨重回的客户端。无论是还是不是留存身份验证机制,您都能够使用
库克ie。请思考以下应用方案:

  • 与表单身份验证结合使用。服务器依据身份验证向客户端发表贰个Cookie,并基于提交回服务器的 Cookie 来验证后续请求。
  • 仅用于向用户提供自定义内容的性子化站点。

ASP .NET 提供了一种体制来创建 Cookie
并活动物检疫查客户端请求中是还是不是留存Cookie。能够选用 .NET 框架协理的三级 DES
方案对由 ASP .NET 创设的 Cookie实行有取舍的加密。您也足以兑现团结的
Cookie 提供程序并在表单身份验证中利用。

有关 Cookie 的详细新闻,请参阅关于 库克ie 的音讯(英文)。

任何思考

不等浏览器类型可能对 Cookie 的高低有两样的界定。索罗德FC 2019钦赐的大小限制为 肆 KB。Internet Explorer 五 对 Cookie
未有轻重限制。浏览器的平安设置必须计划为接受 Cookie,程序才能符合规律干活。


Web 服务安全性

Web 服务是遵照 ASP .NET 结构的应用程序,能够通过
Internet编制程序调用。从平安角度看,它存在的难点与付出交互式网址的题材类似。您须求使用与维护
ASP .NET 财富均等的机制来爱护 Web 服务(如IIS 和 ASP .NET
身份验证提供程序)。但是,设计进程中您还索要思量这么些额外因素:

  • 客户端交互。您的 Web
    服务大概未有连接和输入安全凭据的交互用户。而你的“用户”大概是应用程序。
  • 主意级别安全性。您或然供给在措施级别授权用户,以限制使用一定措施,您能够利用类似于
    COM+ 组件方法级别安全性的法子来促成这一指标。
  • 代理。您的 Web
    服务大概要求(也可能不须求)呼叫别的服务并维护原始呼叫方的长治条件。

Web 服务身份验证

Web
服务供给以某种格局收受用户凭据。假诺服务是非交互式的,则要求获得呼叫方的平安标志,或索要发泄适当的诀要以允许提供证据。以下身份验证方法不难接纳,不需求用户输入凭据,对于可编程Web 服务来说是很好的选拔:

  • 主干、简要和集成 Windows 身份验证
  • 证书映射身份验证
  • 应用程序专用或自定义身份验证

以下的选项也有应用潜力:

  • Internet 协议安全性
  • Passport

使用 Windows 帐户和 IIS 身份验证

你供给挂念的问题与本文身份验证方法壹节中所述的题材1样。本实现情势所需的自定义代码最少,同时,您能够选用Windows ACL 授权对其余财富的拜访。

利用证书和证件映射

当使用证书身份验证时,客户端和服务器之间能够实行无缝交互;即,客户端不必经过编制程序提供用户名和密码。而且,那是1种中度安全的编写制定。B贰B
交易(如提交订单)是利用证书的优质场合。尽管你使用证书映射来获取 Windows
用户帐户,您也得以行使Windows ACL 来授权对能源的访问。

自定义身份验证

您能够达成自定义身份验证消除方案。与集成
Windows身份验证方法比较,此消除方案的优点是,不再必要应用程序来为种种用户维护各自的帐户。您还足以协同忽略
IIS 身份验证,而在
Web服务代码中利用本人的自定义方法,并依据应用程序特定的渴求开始展览优化。

兴许的 Web 服务自定义身份验证解决方案蕴含:

  • 接受用户名和密码作为艺术调用的参数。
  • 提供一种不能够不在调用其余艺术在此之前调用的登录方法。您能够动用 Microsoft
    .NET 框架的 Cookie 功效来表明对登录方法的调用。
  • 利用 SOAP 标头或 SOAP 正文来囤积凭据。
  • 开创自定义 HTTP 标头或正文来储存凭据。

Internet 协议安全性

尽管您领略客户端的 IP 地址,例如,客户端是调用封装在 Web
服务工作逻辑的高级中学级层 Web 服务器,则足以选拔 Internet 协议安全性
(IPSec)。此措施允许你依照 IP 地址来界定连接到 Web 服务的电脑。

该措施在 Internet 方案中不可行,因为您事先不理解客户端的 IP 地址。

至于 IPSec 的详细音讯,请参阅 MSDN 小说 Microsoft Windows 三千 服务器的
IP 安全性(英文)。

在 Web 服务中利用 Passport

神蹟 Web 服务或然会利用 Passport
进行身份验证。不过,它的采纳很不难,因为它须求将未经过验证的客户重定向到
Passport
站点。对非交互式客户端的话,重定向会现出难点,除非尤其为此编制程序来拍卖重定向到
Passport 服务器的情况。

授权

做到用户身份验证后,您或然须求授权其访问 Web 服务。以下是三种授权选项:

  • 使用 Windows ACL
  • 使用 URL 授权
  • 使用 .NET Principal 对象

使用 Windows ACL

利用 Windows ACL,您能够创设特定应用程序文件的文件系统许可。假诺你的 Web
服务对用户进行 Windows 帐户身份验证并运用模拟,则足以行使此化解方案。

使用 URL 授权

U汉兰达LAuthorizationModule 将用户和剧中人物映射到
UCR-VI名称空间中的成分。该模块同时落到实处自然和否定的授权证明。也正是说,该模块能够依据用户的某种身份(例如剧中人物关系),选用性地允许或拒绝该用户访问U宝马X5I
名称空间中的任意成分。上面的例证为壹些域用户授权,但拒绝其余用户。

<configuration>
   <system.web>
         <authentication mode="Windows" />
          <authorization>
              <allow users="domain1\user, domain2\user2, domain1\user3 />
              <deny users="*" />
          </authorization>
    </system.web>
</configuration>

Windows Principal 对象

.NET 框架类库 (BCL) 中的 System.Security.Principal名称空间提供了三个WindowsPrincipal 对象来代表代码运营的平安条件。使用 IIS 中的
Windows身份验证时,该对象将自动成立。它同意你检查 Windows 用户的 Windows
组成员,并相应地范围访问权限。

Generic Principal 对象

Generic
Principal对象可依照你自身的自定义角色来创立。假设你抱有本身的用户/剧中人物数据库,则足以利用它。Principal
对象在 OnAuthenticate事件中填充。您能够将自定义表映射到在此事件中映射的
Windows 帐户。无论如何,您都足以为该尤其用户创立一个自定义
Principal对象。

对于曾经经过身份验证的回来用户,您能够利用 Cookie
来再度为回去用户重新创立 Principal 对象。

剧中人物和方式级别安全性

您可能须求选用格局级别安全性来界定由新鲜客户端当事者调用的卓殊情势。有众多艺术能够拍卖该难点。

要是你使用 Windows 帐户,能够以 Windows 组的格局为用户成立剧中人物。因为 ASP
线程将效仿客户端,您将获取三个 Windows Principal 对象;请使用以下办法:

  • 为 ASP .NET 线程访问的受保证能源创制 ACL。
  • 从每1种格局调用 WindowsPrincipal 对象中的 IsInRole
    方法,以注解调用方具有确切的权柄。您还足以在代码中贯彻逻辑语句,依照客户端的组成员身份调用特定的子例程。

借使您使用自定义数据库中的用户和剧中人物创制 Generic Principal 对象:

  • 您可以透过编制程序调用 Principal 对象的 IsInRole
    方法以检讨角色成员身份,其格局与上文所述的 Windows Principal
    对象相同。

若果你不利用 Principal 对象,则足以挑选别的选项:

  • 经受用户凭据作为艺术调用的参数并展开查找。
  • 主意调用的首先项操作是验证 Cookie 的留存。
  • 始建2个报到方法重临自定义键值。后续的格局将承受此键值作为参数。那与利用受浏览器辅助的
    Cookie 类似,可是它在客户端不扶助 库克ie 的意况下也得以行使。

代理

和 ASP .NET 网址相同,Web 服务也存在同样的代理难点。要将安全条件代理到
Web服务,您供给使用 Kerberos
身份验证,可能必须传递信物以便于运作在其他电脑上的 Web 服务能够调用
LogonUser(对于Windows 服务器)或等价身份验证 API(对于非 Windows
服务器)。

客户端访问

比方你通过编程与 Web 服务连接,您能够行使 .NET 类实行客户端连接。.NET
客户端协理的身份验证协议有:

  • 基本
  • 简要
  • Windows 集成(NTLM 和 Kerberos)
  • 证书
  • 自定义

代码访问安全性

为了爱惜总括机系统不受恶意代码的搅和,也为了保障活动代码的安全运会转,.NET框架提供了1种名为代码访问安全性
(CAS) 的乌海体制。CAS 是一种 .NET 安全特点,适用于拥有 .NET 托管代码,如
ASP.NET Web 应用程序。即使如此,在编写制定以下特定代码时您必要牢记这或多或少:

  • 统一筹划浏览器承载的控件
  • 承接第二方应用程序
  • 在共享服务器上承前启后来自分裂供应商的次第集
  • 您愿意爱惜某个本机功效(如文件写 API)以供有个别程序集应用

遵照代码的发源和代码标识的任何特色(如强加密程序集名),CAS允许代码有两样的可靠度,那有赖于你的安全策略。CAS减弱了你的代码被别的恶意代码滥用的也许。它使您可以专门设置允许代码执行的操作,以及决不允许代码执行的操作。特别是,CAS帮助许可协理机制,通过该机制,代码可显然请求特定许可、或明显拒绝任何不供给的准许。

代码访问许可

代码访问安全性重视于代码访问许可概念。每种许可代表代码访问受有限援助能源(如文件、目录、注册表项)的权力或执行受保险操作(如调用非托管代码)的权能。代码将请求批准,而运作时安全策略将控制给予何种许可。有关总体列表,请参阅代码访问许可(英文)。

.NET
允许管理员向应用程序分配预约义的许可集。那些许可集依据应用程序的可信赖度而有所分化。暗中同意情状下,应用程序依照代码的数字签名、原始格式和应用程序地点等凭证获得信任级别。

诸如,运转在 UNC 共享(在 Intranet 安全区域运维)上的应用程序将收获
LocalIntranet 许可集。而运作在该地电脑(在 MyComputer
安全区域运营)上的应用程序将得到 FullTrust 许可集。

透过为 ASP .NET Web
应用程序分配信任级别,能够更进一步布置它们。信任级其他陈设是通过使用安顿文件中的
<trust> 成分来兑现的。

<trust level="Full | High | Low | None" originUrl="url" />

每一种级别都控制了应用程序的批准程度,其细节在 XML
安全策略文件中钦定。每拔尖别都映射到二个一定文件。ASP .NET
的暗许映射是:

  • 高 – 映射到 web_hightrust.config
    那超级别提供的授权允许应用程序读/写应用程序目录(遵守于操作系统许可),并同意应用程序取代身份验证
    Principal 对象。它还限制应用程序调用非托管代码。
  • 低 – 映射到 web_lowtrust.config
    这拔尖别允许应用程序读取应用程序目录,并提供零星的网络连接。倘使<trust> 成分的 originUrl
    属性配置妥善,应用程序就能够连回其承接站点。
  • 无 – 映射到 web_notrust.config
    这一流别提供基本进行许可,并帮助应用程序使用独立存款和储蓄(一种允许代码与保留数据安全提到的编写制定)。

请留意,完全信任未有相应的配备文件,因为完全相信允许应用程序使用具有能源(服从于操作系统许可),就如在未曾代码访问安全性的事态下运维一样(但
CAS 无法关闭托管代码)。您能够动用布署文件中的
<securityPolicy>成分替代那么些映射,也能够自定义和扩展每一级别。您还可创建和谐的定义任意许可集的级别。以下所示为暗中同意<securityPolicy>
映射集。

<securityPolicy>
   <trustLevel name="Full" policyFile="internal" />
   <trustLevel name="High" policyFile="web_hightrust.config" />
   <trustLevel name="Low"  policyFile="web_lowtrust.config" />
   <trustLevel name="None" policyFile="web_notrust.config" />
</securityPolicy>

锁定配置安装

ASP
.NET配置在精神上是层次化的,在处理器级别、应用程序级别和子应用程序级别具有可选的配备文件。子级别配备文件可用以代替越来越高级其余安装,或用于添加其它陈设音信。纵然它提供了很高的八面玲珑,但有时候管理员希望狠抓布署安装,分裂意她们被钦点的应用程序替代。例如,宿主网站的管理员希望钦命代码访问安全级别,不容许单个应用程序更改它。结合使用
<location> 成分和 allowOverride 属性能够完结这一指标。

譬如说,宿主网址的领队希望确认保障全部应用程序都不能够调用非托管代码。以下配置文件片段表明管理员如何锁定任何站点的代码访问安顿安装,并限制高信任级其余应用程序(不容许调用非托管代码):

<location path="somesitepath" allowOverride="false">
  <trust level="high" originUrl="http://somesite.com" />
</location>

path
属性能够针对站点或虚拟目录,它适用于钦定目录及其全数子目录。在地方的以身作则中,若是将allowOverride
设置为“假”,则可以爱戴站点内的持有应用程序不被
<location>成分中钦定的安排安装替代。请留心,锁定配置安装的作用适用于拥有安装,而不只限于信任级别如此的平安设置。

至于详细新闻,请参阅:

  • .NET 中的安全性:使用集体语言运转时界定代码访问权限(英文)
  • 代码访问安全性(英文)

通道安全性

大路通过远程处理边界(如 AppDomains、进度和电脑)来传输新闻。.NET
框架提供两种远程处理通道:HTTP 和 TCP。

设若您愿意爱戴通过那么些协议传输的私人住房或灵活消息,则需求思考接纳安全通道。除非音信尚未加密尊敬,不然使用互联网监视软件很不难中途截获和读取那一个音信。

以下是坦途安全性的一对关键难题:

  • 承上启下于 IIS 和 ASP .NET 中的 HTTP 通道援救使用 SSL
    传送和接受安全体据。SSL 是设置安全通信通道的最常用机制,能够在 IIS
    内配置。
  • 假使你希望利用非安全通道(如 HTTP/端口 80 或
    TCP),则如故可以利用加密 API 手动加密数据。
  • 能够在传输层降低成通道安全部制。要是您使用 Windows 3000,则足以选择Internet 协议安全性
    (IPSec),在对应用程序透明的还要,达到爱惜数量传输的目标。
  • 只要您使用 ASP .NET 和 COM 或 DCOM 组件,并动用 DCOM
    作为你的中距离处理机制,则足以思考选用 DCOM
    数据包保密身份验证级别来加密 DCOM 通信。

关于详细音讯,请参阅:

  • 《Microsoft Windows 2000 Server 资源包》中的“保护 Web
    通讯”,Microsoft Press
  • .NET 框架开发职员规范(英文)中的远程处理标准
  • Microsoft Windows 2000 Server IP 安全性(英文)
  • MSDN 中的“设置 DCOM 和 NT 安全性”

别的消息

要询问本文探究的平安难点的其余音讯,请参阅以下参考剧情。

  • 《Microsoft Windows 3000 Server
    财富包》中的“驾驭数字证书”,Microsoft Press
  • .NET 框架 SDK(英文)
  • Microsoft 知识库小说 Q15822九,新闻:IIS 应用程序的安全性部分(英文)
  • 利用 Microsoft Windows 平台创立网站的蓝图(英文)

有关 Web 服务安全性的详细信息,请参阅以下参考资料。

  • 使用 SOAP 工具包珍视 Web 服务(英文)
  • 《设计基于 Web 的 Microsoft Windows 三千 安全应用程序》,Microsoft
    Press
  • Internet Information Services 伍 安全性检查表(英文)
  • Microsoft 知识库小说 Q18750陆,运转 IIS 站点所需的 NTFS
    权限列表(英文)

关于安全性的1般消息,请参阅:

  • Microsoft 安全性(英文)

附录 A

澳门美高梅手机网站 4

请单击此处,查看完整的图片。

图 叁:用于分明最棒身份验证方法的流程图(单击图像以查看放大图片。)


作者:Jeff Kercher

项目CEO:爱德华 Jezierski

Microsoft Corporation

2001 年 8 月

一、class 类

1)什么是类?

  类是puppet中命名的代码模块,常用于定义1组通用指标的资源,可在puppet全局调用;
  类能够被三番五次,也足以涵盖子类;
  具体定义的语法如下:

class NAME{
    ... puppet code ...
}

  个中,在我们定义的时候,必要留意的是:

  • 类的称呼只能以小写字母开始,能够分包小字字母、数字和下划线。
  • 种种类都会引进七个新的变量scope
    ,那意味在其余时候访问类中的变量时,都得利用其完全限定名称。

    • 但是,在地面 scope 能够重新为 top scope 中的变量赋予一个新值。

  上面,大家来看一个简练的例子:

vim class1.pp
    class redis {       #定义一个类
        package{'redis':
            ensure  => installed,
        }   ->

        file{'/etc/redis.conf':
            ensure  => file,
            source  => '/root/manifests/file/redis.conf',
            owner   => 'redis',
            group   => 'root',
            mode    => '0640',
            tag     => 'redisconf'
        }   ~>

        service{'redis':
            ensure  => running,
            enable  => true,
            hasrestart  => true,
            hasstatus   => true
        }
    }

    include redis   #调用类

  注意:类只有被调用才会实施。include后方可跟七个类,直接用”,”隔离即可。

二)带有参数的类

  大家定义的类也得以开展参数设置,能够展开参数的传递。
  具体语法如下所示:

class NAME(parameter1, parameter2) {   #注意,大括号前有一个空格
    ...puppet code...
}

  我们来看三个事例:

vim class2.pp
    class instpkg($pkg) {
        package{"$pkg":
            ensure  => installed,
        }
    }

    class{"instpkg":            #给参数传入值
        pkg     => 'memcached',
    }

  注意:单个主机上不能被直接声明两次
  借使对应的参数未传值的话,执行会报错。
  可是大家得以在概念形参的时候,设定一个默许值,这样的话,大家不传入值的话,就会自动调用暗中同意值:

vim class3.pp
    class instpkg($pkg='wget') {
        package{"$pkg":
            ensure  => installed,
        }
    }

    include instpkg

  那样的话,我们一直动用include调用即可,就不必要给参数字传送入值了。
  由上,大家能够总计出,调用类的办法有两种

1. include CLASS_NAME1, CLASS_NAME2, ...
2. class{'CLASS_NAME':
       attribute => value,
   }

  大家来看2个相比较健全的例证:
  首先,判断大家系统的本子,是六照旧七,由此来鲜明,是安装mysql还是mariadb,同时,使用调用参数的方法来促成如上须要。
  具体落到实处的代码如下:

vim dbserver.pp
    class dbserver($dbpkg='mariadb-server',$svc='mariadb') {    #定义类并给参数赋值
        package{"$dbpkg":
            ensure  => installed,
        }

        service{"$svc":
            ensure  => running,
            enable  => true,
            hasrestart  => true,
            hasstatus   => true,
        }
    }

    if $operatingsystem == 'CentOS' {
        if $operatingsystemmajrelease == '7' {
            include dbserver        #直接调用类
        } else {
            class{"dbserver":       #调用类并对参数重新赋值
                dbpkg   => 'mysql-server',
                svc     => 'mysqld'
            }
        }
    }

三)类的一连

  类似于此外编制程序语言中的类的功能,puppet 的Class
能够被接二连三,也能够包蕴子类。
  其定义的语法如下:

class SUB_CLASS_NAME inherits PARENT_CLASS_NAME {
    ...puppet code...
}

  上面咱们来看三个例子:

vim class4.pp
    class redis {       #定义class类
        package{'redis':
            ensure  => installed,
        }

        service{'redis':
            ensure  => running,
            enable  => true,
        }
    }

    class redis::master inherits redis {        #调用父类
        file {'/etc/redis.conf':
            ensure  => file,
            source  => '/root/manifests/file/redis-master.conf',
            owner   => 'redis',
            group   => 'root',
        } 

        Service['redis'] {                      #定义依赖关系
            subscribe   => File['/etc/redis.conf']
        }
    }

    class redis::slave inherits redis {         #调用父类
        file {'/etc/redis.conf':
            ensure  => file,
            source  => '/root/manifests/file/redis-slave.conf',
            owner   => 'redis',
            group   => 'root',
        } 

        Service['redis'] {                      #定义依赖关系
            subscribe   => File['/etc/redis.conf']
        }
    }

  1样的,我们的类在调用的时候,能够兑现修改原有值额外新增属性的功能。

1.新增属性

  大家的三番四回父类的时候,能够定义1些父类原本从不的属性:

澳门美高梅手机网站 5

增产属性

贰.激增原有值

  在接二连三的类中,大家得以在性质原有值的功底上,使用 +>
举行增加产量修改:

澳门美高梅手机网站 6

增加产量原有值

三.修改原有值

  在连续的类中,大家得以一贯把原有的值举行覆盖修改,使用
=>实行覆盖即可:

澳门美高梅手机网站 7

修改原有值

四.整体调用父类,同样珍视写一些值

  在后续的类中,大家还足以在整机调用的基础上,依照分裂的须求,把父类中的部分值实行重写修改:

澳门美高梅手机网站 8

完全调用父类,视同一律写一些值

二、模板

  模板平时以erb末尾。模板均运用erb语法。
  关于puppet兼容的erb语法,我们能够去官方文书档案查看,下边附上官方文书档案地址:https://docs.puppet.com/puppet/latest/reference/lang_template_erb.html
  以下,附上部分重中之重内容:

    <%= EXPRESSION %> — 插入表达式的值,进行变量替换
    <% CODE %> — 执行代码,但不插入值
    <%# COMMENT %> — 插入注释
    <%% or %%> — 插入%

  接着大家来看二个实例:

实例一:puppet 模板完毕修改 redis 端口地址

  我们使用puppet 模板来促成,将redis 监听端口修改为本机的ip地址。
  首先,大家先来定义三个file.pp文件,在该文件中调用大家的模板:

vim file.pp
    file{'/tmp/redis.conf':     #仅用于测试模板是否生效,所以放在tmp目录下
        ensure  => file,
        content => template('/root/manifests/file/redis.conf.erb'),      #调用模板文件
        owner   => 'redis',
        group   => 'root',
        mode    => '0640',
    }

  接着,我们去修改配置文件的源,也正是大家的沙盘文件:

vim file/redis.conf.erb
    bind 127.0.0.1 <%= @ipaddress_eth0 %> #修改监听端口

  修改达成之后,大家就足以实施查看结果了:

   puppet apply -v file.pp

  然后,大家去查看一下/tmp/redis.conf文件:

   vim /tmp/redis.conf

澳门美高梅手机网站 9

监听端口

  能够看来,大家的变量替换已经成功。

三、模块

1)什么是模块?

  实践中,壹般须要把manifest
文件表明成易于理解的结构,例如将类公事、配置文件甚至席卷前面将关乎的模块文件等分类存放,并且通过某种机制在须要时将它们组成起来。
  那种体制即模块,它促进以结构化、层次化的法门利用puppet,而puppet
则基于“模块自动装载器”。
  从另多个角度来说,模块实际上正是3个按预约的、预约义的组织存放了四个公文或子目录的目录,目录里的那些文件或子目录必须根据其命名规范

二)模块的命名规范

  模块的目录格式如下:

澳门美高梅手机网站 10

目录格式

  在那之中,每种文件夹中寄存的始末及其要求如下:

  • MODULE NAME:模块名称,模块名只好以小写字母起头,能够蕴含小写字母、数字和下划线;但不能够应用”main”和”settings”;
  • manifests/:必供给有
    • init.pp:必须一个类定义,类名称必须与模块名称一致;
  • files/:静态文件;
    • 其间,每一个文件的访问路径遵守:puppet:///modules/MODULE_NAME/FILE_NAME
  • templates/
    • 内部,种种文件的拜会路径遵守:tempate('MOD_NAME/TEMPLATE_FILE_NAME')
  • lib/:插件目录,常用于存款和储蓄自定义的facts以及自定义类型;
  • spec/:类似于tests目录,存款和储蓄lib/目录下插件的利用支持和范例;
  • tests/:当前模块的运用协助或应用范例文件;

实例:定义二个redis主从模块

  上边大家就来看三个实例来具体的垂询应该什么定义3个模块:
1)我们先来创造对应的目录格式:

[root@master ~]# mkdir modules
[root@master ~]# cd modoules/
[root@master modules]# ls
[root@master modules]# mkdir -pv redis/{manifests,files,templates,tests,lib,spec}
mkdir: created directory ‘redis’
mkdir: created directory ‘redis/manifests’
mkdir: created directory ‘redis/files’
mkdir: created directory ‘redis/templates’
mkdir: created directory ‘redis/tests’
mkdir: created directory ‘redis/lib’
mkdir: created directory ‘redis/spec’

2)目录格式创造达成之后,大家就足以来创制对应的父类子类文件了。
  首先,大家来创建父类文件:

[root@master modules]# cd redis/
[root@master redis]# vim manifests/init.pp 
    class redis {
        package{'redis':
            ensure  => installed,
        } ->

        service{'redis':
            ensure  => running,
            enable  => true,
            hasrestart  => true,
            hasstatus   => true,
            require => Package['redis'],
        }
    }

  成立完结后,我们再来创立对应的子类文件:

[root@master redis]# vim manifests/master.pp
    class redis::master inherits redis {
        file {'/etc/redis.conf':
            ensure  => file,
            source  => 'puppet:///modules/redis/redis-master.conf',
            owner   => 'redis',
            group   => 'root',
            mode    => '0640',
        }

        Package['redis'] -> File['/etc/redis.conf'] ~> Service['redis']
    }
[root@master redis]# vim manifests/slave.pp
    class redis::slave($master_ip,$master_port='6379') inherits redis {
        file {'/etc/redis.conf':
            ensure  => file,
            content => template('redis/redis-slave.conf.erb'),
            owner   => 'redis',
            group   => 'root',
            mode    => '0640',
        }

        Package['redis'] -> File['/etc/redis.conf'] ~> Service['redis']
    }

3)准备文件:
  今后我们须要把模版文件准备好,放入大家的templates目录下:

   scp redis.conf.erb /root/modules/redis/templates/redis-slave.conf.erb

  还有大家的静态文件,也要放入大家的files目录下:

   scp redis.conf /root/modules/redis/files/redis-master.conf

四)查看目录结构,分明大家是还是不是都已准备完成:

[root@master modules]# tree
.
└── redis
    ├── files
    │   └── redis-master.conf
    ├── lib
    ├── manifests
    │   ├── init.pp
    │   ├── master.pp
    │   └── slave.pp
    ├── spec
    ├── templates
    │   └── redis-slave.conf.erb
    └── tests

7 directories, 5 files

5)未来就可以把大家的准备好的模块放入系统的模块目录下:

[root@master mdoules]# cp -rp redis/ /etc/puppet/modules/

  注意,模块是不可能直接被调用的,只有位于/etc/puppet/modules下,或/usr/share/puppet/modules目录下,使其收效才方可被调用。
  我们能够来查阅一下我们的模块到底有何样:

[root@master mdoules]# puppet module list
/etc/puppet/modules
└── redis (???)
/usr/share/puppet/modules (no modules installed)

  能够看到,咱们的模块已经定义好了,未来大家就能够平素调用了。
6)调用模块
  我们得以一贯下令行传入参数来调用大家准备好的模块:

[root@master modules]# puppet apply -v --noop -e "class{'redis::slave': master_ip => '192.168.37.100'}"     #如果有多个参数,直接以逗号隔开即可

  也能够把大家的调用的类赋值在.pp文件中,然后运转该公文。

[root@master ~]# cd manifests/  
[root@master manifests]# vim redis2.pp
    class{'redis::slave':
        master_ip => '192.168.37.100',
    }
[root@master manifests]# puppet apply -e --noop redis2.pp

  以上。实验成功。
  注意,以上实验是大家在单机方式下开始展览的,借使是要在master/agent
情势下展开,步骤还会略有区别。

四、master/agent 模型

  master/agent模型时经过主机名实行通讯的,上边,就来看看 master-agent
方式的puppet运营自动化如何促成:

兑现步骤

壹、落成前准备

1)下载包
master 端:puppet.noarchpuppet-server.noarch
agent 端:puppet.noarch

澳门美高梅手机网站 11

puppet包查询

二)主机名解析
  为了有利于大家中期的操作,我们能够通过定义/etc/hosts文件落实主机名的解析。要是机器很多以来,能够运用DNS实行分析。

[root@master ~]# vim /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.37.111  master.keer.com
    192.168.37.122  server1.keer.com

  注意,该操作供给在每一台主机上拓展。
  修改实现未来,大家能够来测试一下是还是不是早已打响:

[root@master ~]# ping server1.keer.com

澳门美高梅手机网站 12

连通性测试

三)时间共同

[root@master ~]# systemctl start chronyd.service

  全部机器上都敞开chronyd.service服务来进行时间1起
  开启之后能够查阅一下气象:

[root@master ~]# systemctl status chronyd.service

澳门美高梅手机网站 13

日子同步状态

  大家可以使用chronyc sources命令来查阅时间源:

澳门美高梅手机网站 14

查阅时间源

2、开启 master 端的 puppet 服务

一)手动前台开启,观望服务开启进度:

puppet master -v --no-daemonize        #前台运行

 

澳门美高梅手机网站 15

  整个进程都是机动完毕的,个中,每一步的趣味如下:
  ① 创建key 给CA
  二 创立二个呼吁给CA
  三 自签署证书
  肆 CA 创建达成
  五 创造证书吊销列表
  陆 为最近的master 主机签署证书
  7 master 的证件签署实现

 

2)直接systemctl打开服务,监听在8140端口。

澳门美高梅手机网站 16

拉开服务

3、在 agent 端开启服务

壹)在配备文件中指明server端的主机名:

[root@server1 ~]# vim /etc/puppet/puppet.conf 
    server = master.keer.com

澳门美高梅手机网站 17

agent端配置文件

  接着,我们能够透过puppet config print命令来打字与印刷输出大家配备的参数:

[root@server1 ~]# puppet config print   显示配置文件中的配置参数
[root@server1 ~]# puppet config print --section=main   显示main 段的配置参数
[root@server1 ~]# puppet config print --section=agent  显示agent 段的配置参数
[root@server1 ~]# puppet config print server   显示server 的配置参数

澳门美高梅手机网站 18

打字与印刷输出参数

2)开启 agent 服务

澳门美高梅手机网站 19

开启agent服务

  大家得以发现,他会一向卡在那边等候CA颁发证书。

3)在 master 端签署证书

[root@master ~]# puppet cert list
  "server1.keer.com" (SHA256) B5:67:51:30:5C:FB:45:BA:7A:73:D5:C5:87:D4:E3:1C:D7:02:BE:DD:CC:7A:E2:F0:28:34:87:86:EF:E7:1D:E4
[root@master ~]# puppet cert sign server1.keer.com      #颁发证书
Notice: Signed certificate request for server1.keer.com
Notice: Removing file Puppet::SSL::CertificateRequest server1.keer.com at '/var/lib/puppet/ssl/ca/requests/server1.keer.com.pem'

master 端管理证书铺排的吩咐语法如下:
puppet cert <action> [–all|-a] [<host>]
  action:
    list 列出申明请求
    sign 签署证书
    revoke 吊销证书
    clean 吊销钦点的客户端的证件,并剔除与其有关的有着文件;

注意:某agent证书手工吊销后重新生成三次;
  On master host:
    puppet cert revoke NODE_NAME
    puppet cert clean NODE_NAME
  On agent host:
    重新生成的主机系统,间接开发银行agent;
    变换私钥,建议先清理/var/lib/puppet/ssl/目录下的公文

肆)终止服务开启,再度翻开

[root@server1 ~]# puppet agent -v --noop --no-daemonize

 

澳门美高梅手机网站 20

开启agent端服务

 

  能够阅览大家的服务开启成功,可是出于master
端未有配置站点清单,所以未有啥样动作。

四、配置站点清单,且测试agent 端是或不是落实

1)设置站点清单
一 查询站点清单应存放的目录,(能够修改,去布置文件修改)

[root@master ~]# puppet config print |grep manifest

澳门美高梅手机网站 21

询问配置文件的参数

[root@master ~]# cd /etc/puppet/manifests/
[root@master manifests]# vim site.pp
node 'server1.along.com' {
        include redis::master
}

  分析:便是大约的调用模块,只有模块提前定义好就足以一贯调用;小编调用的是上边的redis
模块

2)给puppet 用户授权
  因为agent 端要来master 端读取配置,身份是puppet

[root@master manifests]# chown -R puppet /etc/puppet/modules/redis/*

3)[root@server1 ~]# puppet agent -v –noop –no-daemonize
手动前台开启agent 端服务

澳门美高梅手机网站 22

enter description here

(四)直接打开服务,agent 会自动去master 端获取配置
[root@server1 ~]# systemctl start puppetagent 包已下载,服务也打开了

澳门美高梅手机网站 23

enter description here

实战 —— 使用master-agent 模型完毕全部的redis 主从架构

壹)环境准备

机器名称 IP配置 服务角色
puppet-master 192.168.37.111 puppet的master
puppet-server1-master-redis 192.168.37.122 puppet的agent,redis 的master
puppet-server2-slave-redis 192.168.37.133 puppet的agent,redis 的slave

二)实验前准备

1)下载包
master 端:puppet.noarchpuppet-server.noarch
agent 端:puppet.noarch

澳门美高梅手机网站 24

puppet包查询

二)主机名解析
  为了便利我们中期的操作,我们得以透过定义/etc/hosts文件贯彻主机名的分析。假使机器很多的话,能够应用DNS实行辨析。

[root@master ~]# vim /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.37.111  master.keer.com
    192.168.37.122  server1.keer.com
    192.168.37.133  server2.keer.com

  注意,该操作必要在每1台主机上海展览中心开。
  修改形成之后,大家能够来测试一下是否已经成功:

[root@master ~]# ping server1.keer.com

澳门美高梅手机网站 25

连通性测试

3)时间同步

[root@master ~]# systemctl start chronyd.service

  三台机械上都张开chronyd.service劳务来拓展时间共同
  开启之后能够查阅一下场馆:

[root@master ~]# systemctl status chronyd.service

澳门美高梅手机网站 26

时光一起状态

  大家能够动用chronyc sources指令来查看时间源:

澳门美高梅手机网站 27

查看时间源

3)开启puppet 的master、agent 服务

(壹)开启服务

[root@master ~]# systemctl start puppetmaster
[root@server1 ~]# systemctl start puppetagent
[root@server2 ~]# systemctl start puppetagent

  因为server2 是率先次连续,需master 端签署证书

(二)master 签署颁发证书

[root@master manifests]# puppet cert list
[root@master ~]# puppet cert sign server2.keer.com

澳门美高梅手机网站 28

master 发布证书

四)配置站点清单

[root@master manifests]# cd /etc/puppet/manifests
[root@master manifests]# vim site.pp    直接调上边完成的模块
node 'server1.keer.com' {
    include redis::master
}

node 'server2.keer.com' {
    class{'redis::slave':
        master_ip => 'server1.keer.com'
    }
}

伍)检验中央架构

[root@server2 ~]# vim /etc/redis.conf

澳门美高梅手机网站 29

检查评定中央架构

[root@server2 ~]# redis-cli -a keerya info Replication

 

澳门美高梅手机网站 30

enter description here

 

陆)再添加个模块准备安顿进站点清单

(一) 创建2个 chrony 模块,前准备

[root@master ~]# cd modules/    进入模块工作目录
[root@master modules]# mkdir chrony    创建chrony 的模块
[root@master modules]# mkdir chrony/{manifests,files} -pv    创建模块结构

(2)配置chrony 模块

[root@master modules]# cd chrony/
[root@master chrony]# cp /etc/chrony.conf files/
[root@master puppet]# vim files/chrony.conf
# test    #用于测试实验结果

澳门美高梅手机网站 31

加上一行

[root@master chrony]# vim manifests/init.pp
    class chrony {
            package{'chrony':
                    ensure => installed
            } ->

            file{'/etc/chrony.conf':
                    ensure  => file,
                    source  => 'puppet:///modules/chrony.conf',
                    owner   => 'root',
                    group   => 'root',
                    mode    => '0644'
            } ~>

            service{'chronyd':
                    ensure  => running,
                    enable  => true,
                    hasrestart => true,
                    hasstatus  => true
            }
    }

(三)puppet 添加那一个模块,并生效

[root@master modules]# cp -rp chrony/ /etc/puppet/modules/
[root@master modules]# puppet module list

 

澳门美高梅手机网站 32

查看puppet模块列表

 

柒、再安插站点清单

[root@master ~]# cd /etc/puppet/manifests/
[root@master manifests]# vim site.pp
    node 'base' {
        include chrony
    }

    node 'server1.keer.com' inherits 'base' {
        include redis::master
    }

    node 'server2.keer.com' inherits 'base' {
        class{'redis::slave':
            master_ip => 'server1.keer.com'
        }
    }
    #node /cache[1-7]+\.keer\.com/ {    #可以用正则匹配多个服务器使用模块
    #       include varnish
    #}

8、测试

  大家今后一向去server二机器上,查看大家的配置文件是或不是早已生效,是或不是是大家添加过一行的剧情:

[root@server2 ~]# vim /etc/chrony.conf

澳门美高梅手机网站 33

server二上的内容

  发现大家的试验成功。

发表评论

电子邮件地址不会被公开。 必填项已用*标注