
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
https://nexus.lab.fiware.org/static/badges/chapters/security.svg](https://www.fiware.org/developers/catalogue/)
https://img.shields.io/github/license/telefonicaid/fiware-pep-steelskin.svg](https://opensource.org/licenses/AGPL-3.0)
https://img.shields.io/badge/quay.io-fiware%2Fpep--steelskin-grey?logo=red%20hat&labelColor=EE0000](https://quay.io/repository/fiware/pep-steelskin)
https://img.shields.io/badge/docker-telefonicaiot%2Ffiware--pep--steelskin-blue?logo=docker](https://hub.docker.com/r/telefonicaid/fiware-pep-steelskin)
https://github.com/telefonicaid/fiware-pep-steelskin/workflows/CI/badge.svg](https://github.com/telefonicaid/fiware-pep-steelskin/actions?query=workflow%3ACI)
https://coveralls.io/repos/github/telefonicaid/fiware-pep-steelskin/badge.svg?branch=master](https://coveralls.io/github/telefonicaid/fiware-pep-steelskin?branch=master)
!https://nexus.lab.fiware.org/static/badges/statuses/incubating.svg
策略执行点(PEP)是一个代理,旨在保护独立的FiWare组件,通过拦截发送到组件的每个请求,并与访问控制组件进行验证。此验证基于以下几个数据:
x-auth-token头中获取。fiware-service头中读取,标识受保护的组件。fiware-servicepath头中读取,标识服务的进一步划分。与访问控制的通信基于XACML协议。
在本文档中,术语IDM(身份管理器)将作为通用术语使用,指提供用户和角色创建及认证的服务器。当前支持的IDM是Keystone;还提供了Keyrock IDM选项,但可能在不久的将来被弃用。
其他三个文档提供了有关PEP代理的更多信息:
PEP代理是标准的Node.js应用程序,除了Node.js解释器和NPM包实用程序外,不需要更多依赖项。
只需检出此目录并使用以下命令安装Node.js依赖项:
npm install --production
然后代理应该可以配置和使用了。
Docker Hub上发布了Steelskin PEP代理开发版本的自动构建。要使用docker版本安装,只需执行以下命令:
docker run -p 11211:11211 -p 1026:1026 -e LOG_LEVEL=DEBUG -e AUTHENTICATION_HOST=<Keystone-host> -e ACCESS_HOST=<Access-control-host> -e TARGET_HOST=<Orion-host> docker.xuanyuan.run/telefonicaiot/fiware-pep-steelskin
此命令将创建一个运行PEP Steelskin的docker容器,使用
请注意,此命令公开两个端口:1026端口用于组件请求,***端口用于管理端口。
也可以构建PEP组件的本地Docker镜像。
在机器上安装Docker后,按照以下步骤操作:
bashsudo docker build -f Dockerfile .
bashsudo docker build --build-arg NODEJS_VERSION=0.10.46 -f Dockerfile .
通过添加PM2_ENABLED环境变量,可以在http://pm2.keymetrics.io/%E8%BF%9B%E7%A8%8B%E7%AE%A1%E7%90%86%E5%99%A8%E4%B8%AD%E8%BF%90%E8%A1%8CDocker%E9%95%9C%E5%83%8F%E4%B8%AD%E7%9A%84PEP%E3%80%82
consoledocker run --name pep -e PM2_ENABLED=true -d docker.xuanyuan.run/fiware/fiware-pep-steelskin
默认情况下,pm2的使用是禁用的。如果您的docker化环境已配置为在Node.js进程退出时重新启动它们(例如,使用https://kubernetes.io/%E6%97%B6%EF%BC%89%EF%BC%8C%E6%B7%BB%E5%8A%A0%E9%A2%9D%E5%A4%96%E7%9A%84%E8%BF%9B%E7%A8%8B%E7%AE%A1%E7%90%86%E5%99%A8%E6%98%AF%E4%B8%8D%E5%BF%85%E8%A6%81%E7%9A%84%EF%BC%8C%E5%B9%B6%E4%B8%94%E4%BC%9A%E9%80%82%E5%BE%97%E5%85%B6%E5%8F%8D%E3%80%82
通过添加INSPECT_ENABLED环境变量,可以使用https://nodejs.org/en/docs/guides/debugging-getting-started/%E8%BF%90%E8%A1%8CDocker%E9%95%9C%E5%83%8F%E4%B8%AD%E7%9A%84PEP%E3%80%82
consoledocker run --name pep -e INSPECT_ENABLED=true -d docker.xuanyuan.run/fiware/fiware-pep-steelskin
默认情况下,node检查的使用是禁用的。
如果直接从GIT存储库安装代理,要取消部署代理,只需终止进程并删除目录。
假设PEP代理直接从源代码部署,它不会将自己添加为服务,运行端口应手动配置。此配置将涉及两个步骤:
nohup bin/pep-proxy.js &> pep-proxy.log&
安装后,代理服务处于禁用状态。要启用它,请使用以下命令:
service pepProxy start
无论服务如何安装,日志文件都需要外部轮换(例如:logrotate命令)以避免磁盘空间不足问题。
如果PEP代理未作为服务启动,可以从项目根目录执行以下命令启动:
bin/pep-proxy.js
PEP代理工作后,可用于对受保护组件(例如Orion Context Broker)实施身份验证和授权。为了实施这两个操作,PEP代理必须连接到https://github.com/ging/fi-ware-idm%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%92%8Chttps://github.com/telefonicaid/fiware-keypass%E6%9C%8D%E5%8A%A1%E5%99%A8%E3%80%82%E4%B8%8B%E4%B8%80%E8%8A%82%E5%B0%86%E5%B1%95%E7%A4%BA%E8%BF%99%E4%B8%A4%E4%B8%AA%E8%BF%87%E7%A8%8B%E7%9A%84%E4%B8%80%E4%BA%9B%E7%A4%BA%E4%BE%8B%E3%80%82
请注意,为了通过访问控制授权请求,请求必须包含以下所有头:
IDM和访问控制系统使用这些头来做出关于请求的决策,因此如果缺少任何一个,请求将不会进一步处理,并将被拒绝,返回400 HTTP错误代码。有关返回错误的详细说明,请参阅API错误代码。
代理也可以在仅身份验证模式下工作(使用config.access.disable标志),在这种情况下,fiware-service和fiware-servicepath头可以标记为可选,或无论如何检查其有效性(由config.authentication.checkHeaders标志控制)。对于执行授权过程的PEP代理,无法禁用头检查。
身份验证过程基于OAuth v2令牌。PEP代理期望所有请求都有一个x-auth-token头,其中包含来自IDM的有效访问令牌。所有没有此要求的请求都将被拒绝,返回401错误。
PEP代理目前支持两种可能的身份验证机构:Keyrock IdM和Openstack Keystone。以下部分显示如何使用每种身份验证技术检索令牌。可以使用config.authentication.module选项配置模块。
Keyrock IdM
为了获取要随请求发送的访问令牌,用户可以向IDM发送请求,包含其用户和密码(此处显示为curl请求):
curl -i --user <serverUser>:<serverPassword> -X POST -H "Content-Type: application/x-www-form-urlencoded" https://<idmHostName>/oauth2/token -d 'grant_type=password&username=<theUserName>&password=<theUserPassword>'
如果用户和密码正确,响应将如下所示:
{ "access_token":"O-OqiBR1AbZk7qfyidF3AwMeBY253xYEpUdkv", "refresh_token":"Ny0OwE19230QfftxXYGwwgOLafa5v2xnI5t6HWdQ", "token_type":"bearer", "expires_in":2591999 }
access_token字段包含所需的令牌。
还必须使用它为每个用户分配角色。有关角色创建和分配的详细信息,请查看IDM API。
Keystone
为了获取其访问令牌,用户可以向Keystone发送以下请求:
curl http://localhost:5000/v3/auth/tokens \ -s \ -i \ -H "Content-Type: application/json" \ -d ' { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "SmartCity" }, "name": "alice", "password": "password" } } } } }'
令牌可以在响应的X-Subject-Token头中找到:
X-Subject-Token: MIIC3AYJKoZIhvcNAQcCoIICzTCCAskCAQExCTAHBgUrDgMCGjCCATIGCSqGSIb3DQEHAaCCASMEggEfeyJ0b2tlbiI6IHsiaXNzdWVkX2F0IjogIjIwMTQtMTAtMTBUMTA6NTA6NDkuNTMyNTQyWiIsICJleHRyYXMiOiB7fSwgIm1ldGhvZHMiOiBbInBhc3N3b3JkIl0sICJleHBpcmVzX2F0IjogIjIwMTQtMTAtMTBUMTE6NTA6NDkuNTMyNDkxWiIsICJ1c2VyIjogeyJkb21haW4iOiB7ImlkIjogImY3YTViOGUzMDNlYzQzZThhOTEyZmUyNmZhNzlkYzAyIiwgIm5hbWUiOiAiU21hcnRWYWxlbmNpYSJ9LCAiaWQiOiAiNWU4MTdjNWUwZDYyNGVlNjhkZmI3YTcyZDBkMzFjZTQiLCAibmFtZSI6ICJhbGljZSJ9fX0xggGBMIIBfQIBATBcMFcxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVVbnNldDEOMAwGA1UEBwwFVW5zZXQxDjAMBgNVBAoMBVVuc2V0MRgwFgYDVQQDDA93d3cuZXhhbXBsZS5jb20CAQEwBwYFKw4DAhowDQYJKoZIhvcNAQEBBQAEggEAKRGV3uu8fiS7UNm47KhltSjlY1e7KnedUcD-mdwz6Asbo7X9hbtljy1ml9gGcuMf6vX4tycx4goRyMARPS7YKROd0evZtnYArIyx0IrmwDaqodwp8BxBCxFgHRZtCwzHvZFEaUcClydQq7HJvBfTgTwH4v1aJkMyK8wLMP-CYyiZSfCIWPVnoB9I3P56jeKHkmcryYLgT2I-AwDBj1zd9HPzUjyQuNj5rCMkJjvz-A9-hef6AMMZuYPMIYdkei+deq86O1qFuo7PpO2SA7QWkqjcsKs9v+myvHhLrBre9GLP2hP1rc4D67lSL2XB1UY20mc6FNIVIErxT0DOSXltXQ== Vary: X-Auth-Token Content-Type: application/json Content-Length: 287 Date: Fri, 10 Oct 2014 10:50:49 GMT { "token": { "issued_at": "2014-10-10T10:50:49.532542Z", "extras": {}, "methods": [ "password" ], "expires_at": "2014-10-10T11:50:49.532491Z", "user": { "domain": { "id": "f7a5b8e303ec43e8a912fe26fa79dc02", "name": "SmartValencia" }, "id": "5e817c5e0d624ee68dfb7a72d0d31ce4", "name": "alice" } } }
有关用户和角色创建的详细信息,请查看Keystone API。
用户通过身份验证后,PEP代理将向访问控制询问其权限。为了使请求被接受,至少有一个规则必须匹配请求信息和用户角色。
规则在XACML中定义。特定规则将取决于每个案例,并由授权设计者决定。以下文档显示了针对Context Broker用例解释的典型规则:
<Policy xsi:schemaLocation="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17 [***]" PolicyId="policy03" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:deny-unless-permit" Version="1.0" xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Target> <AnyOf> <AllOf> <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match"> <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string" >frn:contextbroker:551:833:.*</AttributeValue> <AttributeDesignator AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" /> </Match> </AllOf> </AnyOf> </Target> <Rule RuleId="policy03rule01" Effect="Permit
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务