服务安全¶
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 aswfs
,wms
, orwcs
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 ofGET
,POST
,PUT
,POST
,DELETE
, orHEAD
role
-预定义角色的名称。通配符*
用于指示所有用户,包括匿名用户。
备注
通常,URI模式应该解释REST路径的第一个组件
rest
或api
method
和role
列表应该 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
方法,但强制对 POST
, PUT
或 DELETE
方法:
/**;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
注意后面的通配符 /*
和 /*.*
.