服务安全

geoserver支持服务级别的访问控制,允许仅将服务操作锁定到已被授予特定角色的经过身份验证的用户。在geoserver中有两种主要的服务类别。第一个是 OWS services 如WMS和WFS。第二种是RESTful服务,例如geoserver REST .

备注

服务级别安全和 层安全性 不能组合。例如,不能仅为一个特定层指定对特定OWS服务的访问。

OWS服务

OWS服务支持为特定服务或该服务内的特定操作全局设置安全访问约束。一些例子包括:

  • 保护整个WFS服务,因此只有经过身份验证的用户才能访问所有WFS操作。

  • 允许匿名访问只读WFS操作(如getCapabilities),但保护写操作(如事务)的安全。

  • 通过确保所有操作的安全,而不将适当的角色应用于任何用户,禁用有效的WFS服务。

OWS服务安全访问规则在名为 services.properties ,位于 security 地理服务器数据目录中的目录。该文件包含将服务操作映射到已定义角色的规则列表。指定规则的语法如下:

<service>.<operation|*>=<role>[,<role2>,...]

参数包括:

  • [] -表示可选参数

  • | -表示“或”

  • service—Identifier of an OGC service, such as wfs, wms, or wcs

  • operation -服务支持的任何操作,示例包括 GetFeature 对于WFS, GetMap 对于大规模杀伤性武器, * 对于所有操作

  • role[,role2,...] -预定义角色名称列表

备注

重要的是,指定的角色实际上链接到用户,否则除了 根帐户 .然而,在某些情况下,这可能是期望的效果。

geoserver中的默认服务安全配置不包含任何规则,并且允许任何匿名用户访问任何服务的任何操作。以下是所需安全限制和相应规则的一些示例。

确保整个WFS服务的安全

此规则仅向已被授予 ROLE_WFS 角色:

wfs.*=ROLE_WFS

匿名WFS访问仅用于只读操作

此规则授予对所有WFS操作(如getCapabilities和getFeature)的匿名访问权限,但将事务请求限制给已被授予 ROLE_WFS_WRITE 角色:

wfs.Transaction=ROLE_WFS_WRITE

确保数据访问WFS操作和写入操作的安全

结合使用,这两个规则授予匿名访问getCapabilities和describeFeatureType的权限,强制用户对getFeature操作进行身份验证(必须授予 ROLE_WFS_READ 角色),以及执行事务的身份验证(必须授予 ROLE_WFS_WRITE 角色:

wfs.GetFeature=ROLE_WFS_READ
wfs.Transaction=ROLE_WFS_WRITE

注意:此示例不指定访问事务的用户是否也可以访问GetFeature。

休息服务

除了提供保护OWS服务的能力外,geoserver还允许保护RESTful服务。

REST服务安全访问规则在名为 rest.properties ,位于 security 地理服务器数据目录的目录。此文件包含将请求URI映射到已定义角色的规则列表。规则语法如下:

<uriPattern>;<method>[,<method>,...]=<role>[,<role>,...]

参数包括:

  • [] -表示可选参数

  • uriPattern -在 ant pattern 匹配一组请求URI的

  • method—HTTP request method, one of GET, POST, PUT, POST, DELETE, or HEAD

  • role -预定义角色的名称。通配符 * 用于指示所有用户,包括匿名用户。

备注

  • 通常,URI模式应该解释REST路径的第一个组件 restapi

  • methodrole 列表应该 not 包含任何空格

蚂蚁图案

Ant模式通常用于模式匹配目录和文件路径。以下示例提供了一些基本说明。阿帕奇蚂蚁 user manual 包含更复杂的用例。

这些示例特定于geoserver REST ,但可以以相同的方式配置任何RESTful geoserver服务。

禁用对服务的匿名访问

最安全的配置是强制对任何请求(REST或其他)进行身份验证的配置。下面将锁定对被授予 ROLE_ADMINISTRATOR 角色:

/**;GET,POST,PUT,DELETE=ROLE_ADMINISTRATOR

限制较少的配置会锁定对路径下操作的访问 /rest 授予用户 ROLE_ADMINISTRATOR 角色,但允许匿名访问位于其他路径下的请求(例如 /api ):

/rest/**;GET,POST,PUT,DELETE=ROLE_ADMINISTRATOR

允许匿名只读访问

以下配置授予匿名访问权限,当 GET 方法,但强制对 POSTPUTDELETE 方法:

/**;GET=IS_AUTHENTICATED_ANONYMOUSLY
/**;POST,PUT,DELETE=TRUSTED_ROLE

保护特定资源

以下配置强制对特定资源的访问进行身份验证(在本例中, states 功能类型)::

/rest/**/states*;GET=TRUSTED_ROLE
/rest/**;POST,PUT,DELETE=TRUSTED_ROLE

以下是对一组资源(在本例中是所有数据存储)的安全访问:

/rest/**/datastores/*;GET=TRUSTED_ROLE
/rest/**/datastores/*.*;GET=TRUSTED_ROLE
/rest/**;POST,PUT,DELETE=TRUSTED_ROLE

注意后面的通配符 /*/*.* .

Previous: 根帐户