Infor PLM:系统安全性与用户权限管理技术教程.Tex.header_第1页
Infor PLM:系统安全性与用户权限管理技术教程.Tex.header_第2页
Infor PLM:系统安全性与用户权限管理技术教程.Tex.header_第3页
Infor PLM:系统安全性与用户权限管理技术教程.Tex.header_第4页
Infor PLM:系统安全性与用户权限管理技术教程.Tex.header_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

InforPLM:系统安全性与用户权限管理技术教程1InforPLM:系统安全性与用户权限管理1.1系统安全性概述1.1.1系统安全性的核心概念系统安全性是指保护信息系统免受未经授权的访问、使用、泄露、中断、修改、破坏或信息的失真,确保信息的机密性、完整性和可用性。在InforPLM系统中,安全性管理是通过一系列的策略、技术和过程来实现的,以确保只有授权的用户和应用程序能够访问和操作数据。1.1.2InforPLM安全架构解析InforPLM的安全架构设计围绕着用户身份验证、权限控制、数据加密和网络防护等关键组件。系统通过用户登录时的身份验证,确保只有合法用户能够访问系统。权限控制则基于角色,每个角色都有一套预定义的权限,这些权限决定了用户可以执行的操作。此外,InforPLM还采用了数据加密技术,如SSL/TLS,来保护在网络上传输的数据,以及在存储时的数据安全。1.1.3数据加密与网络安全数据加密是InforPLM系统安全性中的重要一环。它使用加密算法将原始数据转换为密文,即使数据被截获,没有正确的密钥也无法解读。InforPLM支持多种加密标准,如AES(AdvancedEncryptionStandard),确保数据在传输和存储过程中的安全性。网络安全则涉及保护InforPLM系统免受网络攻击,如DDoS(DistributedDenialofService)攻击。系统通过防火墙、入侵检测系统和安全协议(如HTTPS)来增强网络防护,确保数据在网络中的安全传输。1.2示例:数据加密在InforPLM系统中,数据加密可以使用Python的cryptography库来实现。以下是一个使用AES加密算法加密数据的示例:fromcryptography.hazmat.primitives.ciphersimportCipher,algorithms,modes

fromcryptography.hazmat.primitivesimportpadding

fromcryptography.hazmat.backendsimportdefault_backend

importbase64

#定义密钥和初始化向量

key=b'Sixteenbytekey'

iv=b'SixteenbyteIV'

#创建AES加密器

backend=default_backend()

cipher=Cipher(algorithms.AES(key),modes.CBC(iv),backend=backend)

#待加密数据

data=b'Sensitivedata'

#数据填充

padder=padding.PKCS7(128).padder()

padded_data=padder.update(data)+padder.finalize()

#加密数据

encryptor=cipher.encryptor()

ct=encryptor.update(padded_data)+encryptor.finalize()

#打印加密后的数据

print("Encrypteddata:",base64.b64encode(ct).decode())1.2.1解释密钥和初始化向量定义:AES加密需要一个16字节的密钥和初始化向量(IV)。创建AES加密器:使用cryptography库中的Cipher类,指定AES算法和CBC模式。数据填充:在加密前,数据需要进行填充以符合AES的块大小要求。加密数据:使用加密器对填充后的数据进行加密。打印加密结果:将加密后的数据转换为Base64编码,便于在文本中传输或存储。通过上述示例,我们可以看到InforPLM系统如何利用AES加密算法来保护数据的安全性,确保即使数据在网络中传输或存储在服务器上,也能防止未授权访问。1.3用户权限管理InforPLM的用户权限管理基于角色,每个角色都有一套预定义的权限,这些权限决定了用户可以执行的操作。例如,设计工程师可能有权限查看和修改产品设计数据,而采购人员可能只能查看这些数据,但不能修改。权限管理的实现通常涉及到数据库中的权限表,以及应用程序中的权限检查逻辑。以下是一个简单的权限检查逻辑示例:#用户角色和权限定义

user_roles={

'design_engineer':['view_design','edit_design'],

'purchaser':['view_design']

}

#权限检查函数

defcheck_permission(user_role,permission):

ifpermissioninuser_roles[user_role]:

returnTrue

else:

returnFalse

#示例:检查用户权限

user_role='design_engineer'

permission='edit_design'

ifcheck_permission(user_role,permission):

print("Permissiongranted.")

else:

print("Permissiondenied.")1.3.1解释用户角色和权限定义:在字典user_roles中定义了不同角色及其对应的权限。权限检查函数:check_permission函数接收用户角色和请求的权限,检查该角色是否拥有该权限。示例:检查用户权限:通过调用check_permission函数,检查设计工程师是否有编辑设计的权限。通过角色和权限的定义,InforPLM系统能够实现细粒度的访问控制,确保每个用户只能访问和操作其职责范围内的数据,从而增强系统的安全性。1.4结论InforPLM系统通过综合运用数据加密、网络安全技术和用户权限管理,构建了一个安全可靠的产品生命周期管理环境。数据加密确保了数据的机密性,网络安全技术保护了数据在网络中的安全传输,而用户权限管理则实现了对数据访问的精细控制,共同构成了InforPLM系统安全性的重要基石。2InforPLM:用户权限管理基础2.1用户角色与权限分配在InforPLM系统中,用户权限管理是通过定义不同的用户角色来实现的。每个角色都有一组预定义的权限,这些权限决定了用户可以访问和操作的系统功能。例如,一个“设计工程师”角色可能具有查看和编辑产品设计文档的权限,而“采购经理”角色可能只能查看这些文档,但不能编辑,同时具有采购相关文档的编辑权限。2.1.1角色定义角色定义通常包括以下步骤:创建角色:在系统管理界面中,管理员可以创建新的角色,例如“设计工程师”、“采购经理”、“质量控制员”等。分配权限:为每个角色分配特定的权限,如“查看产品文档”、“编辑产品文档”、“创建采购订单”等。用户分配:将用户分配给特定的角色,确保用户只能执行其角色所允许的操作。2.1.2示例假设我们正在使用InforPLM的API来创建一个新角色并分配权限。以下是一个示例代码:#导入必要的库

importrequests

importjson

#设置API的URL和认证信息

url="/api/roles"

headers={

'Authorization':'Beareryour-access-token',

'Content-Type':'application/json'

}

#定义新角色的详细信息

new_role={

"name":"质量控制员",

"permissions":[

"查看产品文档",

"编辑质量报告",

"批准产品变更"

]

}

#发送POST请求创建新角色

response=requests.post(url,headers=headers,data=json.dumps(new_role))

#检查响应状态

ifresponse.status_code==201:

print("角色创建成功")

else:

print("角色创建失败,状态码:",response.status_code)2.2访问控制列表(ACL)详解访问控制列表(ACL)是InforPLM中用于管理特定对象(如文档、产品或项目)访问权限的机制。ACL允许管理员为每个对象设置详细的访问规则,包括谁可以查看、编辑、删除或执行其他操作。2.2.1ACL的结构ACL通常包含以下元素:对象ID:标识特定的文档、产品或项目。用户或角色:指定可以访问对象的用户或角色。权限:定义用户或角色对对象的具体访问权限。2.2.2示例以下是一个使用InforPLMAPI修改文档ACL的示例代码:#导入必要的库

importrequests

importjson

#设置API的URL和认证信息

url="/api/documents/12345/acl"

headers={

'Authorization':'Beareryour-access-token',

'Content-Type':'application/json'

}

#定义ACL规则

acl_rule={

"documentId":"12345",

"accessList":[

{

"userId":"user1",

"permissions":["查看","编辑"]

},

{

"roleId":"质量控制员",

"permissions":["查看"]

}

]

}

#发送PUT请求修改ACL

response=requests.put(url,headers=headers,data=json.dumps(acl_rule))

#检查响应状态

ifresponse.status_code==200:

print("ACL更新成功")

else:

print("ACL更新失败,状态码:",response.status_code)2.3工作流与权限关系InforPLM的工作流机制与用户权限紧密相关。工作流定义了文档、产品或项目从创建到完成的整个生命周期中的状态转换和审批流程。权限决定了用户在工作流中的每个阶段可以执行的操作。2.3.1工作流状态工作流状态通常包括:草稿:初始状态,通常只有创建者可以编辑。审核中:等待审批的状态,审批者可以查看并决定是否批准。已批准:文档或产品已被批准,可能只有特定角色可以编辑或修改。2.3.2权限与工作流权限与工作流的结合确保了文档或产品的生命周期中,每个阶段的访问和操作都是受控的。例如,只有“设计工程师”角色的用户才能将产品设计文档从“草稿”状态提交到“审核中”状态。2.3.3示例假设我们正在使用InforPLM的API来更新一个文档的工作流状态,并确保只有具有“编辑”权限的用户才能执行此操作。以下是一个示例代码:#导入必要的库

importrequests

importjson

#设置API的URL和认证信息

url="/api/documents/12345/workflow"

headers={

'Authorization':'Beareryour-access-token',

'Content-Type':'application/json'

}

#定义工作流状态更新

workflow_update={

"documentId":"12345",

"newStatus":"审核中"

}

#发送PUT请求更新工作流状态

response=requests.put(url,headers=headers,data=json.dumps(workflow_update))

#检查响应状态

ifresponse.status_code==200:

print("工作流状态更新成功")

else:

print("工作流状态更新失败,状态码:",response.status_code)通过上述代码和示例,我们可以看到InforPLM系统中用户权限管理的实现方式,包括如何通过角色分配权限,如何使用ACL控制特定对象的访问,以及如何在工作流中结合权限来管理文档或产品的生命周期。这些机制共同确保了系统的安全性,防止未经授权的访问和操作。3InforPLM:系统安全性配置实践3.1安全策略的制定与实施在InforPLM系统中,安全策略的制定与实施是确保数据安全和合规性的关键步骤。这涉及到对系统访问、数据保护、以及操作权限的详细规划和执行。3.1.1定义安全策略安全策略应基于最小权限原则,确保用户仅能访问其工作职责所需的数据和功能。例如,设计工程师可能需要访问产品设计文档,但不需要访问财务数据。3.1.2实施安全策略实施安全策略包括配置用户角色、设置访问控制列表(ACLs)、以及定期审查和更新策略。InforPLM通过其内置的安全模块支持这些功能,允许管理员精细控制用户权限。3.2用户认证与授权流程用户认证与授权是InforPLM系统安全性的重要组成部分,确保只有经过验证的用户才能访问系统,并且只能执行其角色所允许的操作。3.2.1用户认证InforPLM支持多种认证机制,包括基于用户名和密码的认证、单点登录(SSO)、以及与企业身份管理系统(如ActiveDirectory)的集成。例如,使用SSO可以简化用户登录过程,同时保持安全性。#示例代码:使用Python模拟SSO登录过程

importrequests

defsso_login(username,password):

#SSO登录URL

url="/login"

#构建登录数据

login_data={

"username":username,

"password":password

}

#发送POST请求进行登录

response=requests.post(url,data=login_data)

#检查响应状态

ifresponse.status_code==200:

#登录成功,返回令牌

token=response.json()["token"]

returntoken

else:

#登录失败

returnNone

#使用函数进行SSO登录

token=sso_login("user@","password123")

iftoken:

print("登录成功,令牌为:",token)

else:

print("登录失败")3.2.2用户授权授权过程定义了用户在系统中的权限,包括读取、写入、修改或删除数据的能力。InforPLM通过角色和权限组来管理用户授权,确保每个用户只能执行其工作职责相关的操作。3.3审计日志与安全监控审计日志和安全监控是InforPLM系统中用于跟踪和记录用户活动的重要工具,帮助管理员检测潜在的安全威胁和违规行为。3.3.1审计日志InforPLM系统自动生成审计日志,记录所有用户操作,包括登录、数据访问、修改和删除等。这些日志对于合规性审计和安全事件调查至关重要。3.3.2安全监控安全监控涉及定期审查审计日志,以及使用自动化工具来检测异常行为。例如,如果审计日志显示有用户在非工作时间访问敏感数据,这可能需要进一步调查。#示例代码:使用Python解析和分析审计日志

importjson

defanalyze_audit_logs(log_file):

#读取审计日志文件

withopen(log_file,'r')asfile:

logs=json.load(file)

#分析日志,查找异常行为

forloginlogs:

iflog["action"]=="data_access"andlog["time"]>"18:00"andlog["time"]<"08:00":

print("警告:非工作时间数据访问")

print("用户:",log["user"])

print("时间:",log["time"])

print("访问的数据:",log["data"])

print("")

#使用函数分析审计日志

analyze_audit_logs("audit_logs.json")通过上述实践,InforPLM系统能够提供一个安全、可控的环境,保护企业数据免受未授权访问和潜在威胁。管理员应定期审查和更新安全策略,以适应不断变化的业务需求和安全环境。4高级用户权限管理4.1动态权限分配机制动态权限分配机制是InforPLM系统中用于实时调整用户权限的一种策略。这种机制允许管理员根据用户的角色、项目需求或特定的业务流程,即时地调整用户的访问权限,而无需重新配置整个权限体系。动态分配可以基于时间、地点、任务状态等多种条件,确保用户仅在需要时获得必要的权限,从而增强系统的安全性。4.1.1实现原理动态权限分配通常依赖于系统中的权限管理模块,该模块能够识别和响应各种触发条件,如用户登录、项目阶段变化、工作流状态更新等。当这些条件满足时,权限管理模块会自动调整用户的权限,确保其访问权限与当前需求相匹配。4.1.2示例假设在InforPLM系统中,有一个项目管理模块,其中包含多个阶段,如设计、审批、生产等。管理员希望在项目进入审批阶段时,自动赋予审批人员查看和修改设计文档的权限,而在其他阶段,这些权限应被限制。这可以通过以下伪代码实现:#定义动态权限分配函数

defdynamic_permission_assignment(user,project_stage):

ifproject_stage=='审批':

user.permissions=['查看设计文档','修改设计文档']

else:

user.permissions=['查看设计文档']

#假设的用户类

classUser:

def__init__(self,name):

=name

self.permissions=[]

#创建用户实例

user=User('张三')

#模拟项目阶段变化

project_stage='审批'

#调用动态权限分配函数

dynamic_permission_assignment(user,project_stage)

#输出用户当前权限

print(f'{}的当前权限为:{user.permissions}')在这个例子中,dynamic_permission_assignment函数根据project_stage的值动态调整user的权限。当项目处于“审批”阶段时,用户将获得查看和修改设计文档的权限;在其他阶段,用户只能查看设计文档。4.2权限继承与覆盖规则权限继承与覆盖规则是InforPLM系统中用于管理多层次权限的一种方法。在系统中,权限可以按照层级结构进行分配,较低层级的权限默认继承高层级的权限设置。然而,为了更精细地控制访问,系统也允许在特定层级上覆盖继承的权限,以实现更灵活的权限管理。4.2.1实现原理权限继承与覆盖规则基于权限树结构实现。每个节点可以拥有自己的权限设置,同时也可以继承其父节点的权限。当一个节点的权限被覆盖时,该节点的权限将优先于其父节点的权限,从而实现特定层级的权限定制。4.2.2示例考虑一个InforPLM系统中的部门结构,其中“研发部”包含“设计组”和“测试组”。默认情况下,“设计组”和“测试组”的成员都继承“研发部”的权限,但管理员希望“测试组”成员在特定情况下能够访问“设计组”的文档,这可以通过以下伪代码实现:#定义权限类

classPermission:

def__init__(self,name,inherit=True):

=name

self.inherit=inherit

self.children=[]

defadd_child(self,child):

self.children.append(child)

defset_permission(self,permission):

self.permission=permission

#创建权限实例

research_permission=Permission('研发部权限')

design_permission=Permission('设计组权限')

test_permission=Permission('测试组权限')

#设置权限继承

research_permission.add_child(design_permission)

research_permission.add_child(test_permission)

#默认情况下,所有子节点继承父节点权限

design_permission.set_permission(['查看文档','创建文档'])

test_permission.set_permission([])

#覆盖测试组权限,允许其访问设计组文档

test_permission.set_permission(['查看文档','创建文档','查看设计组文档'])

#输出权限

print(f'研发部权限为:{research_permission.permission}')

print(f'设计组权限为:{design_permission.permission}')

print(f'测试组权限为:{test_permission.permission}')在这个例子中,Permission类用于表示权限节点,通过add_child方法建立层级关系,set_permission方法用于设置或覆盖权限。默认情况下,“设计组”和“测试组”都继承“研发部”的权限,但通过覆盖“测试组”的权限,使其能够额外访问“设计组”的文档。4.3多级权限管理策略多级权限管理策略是InforPLM系统中用于处理复杂权限需求的一种方法。它允许管理员根据组织结构、项目复杂度或数据敏感性,设置多层权限,确保不同层级的用户只能访问与其职责相关的数据和功能。4.3.1实现原理多级权限管理基于角色和层级的组合。系统中定义了多个角色,每个角色拥有特定的权限集。同时,角色可以被分配到不同的层级,如部门、项目、文档等。当用户登录时,系统会根据其角色和所在层级,计算出该用户的具体权限。4.3.2示例假设InforPLM系统中,管理员需要为“研发部”和“市场部”设置不同的权限,同时在“研发部”内部,根据项目敏感性,进一步细分权限。这可以通过以下伪代码实现:#定义角色和权限

roles={

'研发部经理':['查看所有文档','修改所有文档'],

'研发部工程师':['查看研发部文档','修改研发部文档'],

'市场部经理':['查看市场部文档'],

'市场部员工':['查看市场部文档']

}

#定义项目敏感性级别

project_sensitivity={

'项目A':'高',

'项目B':'中',

'项目C':'低'

}

#定义敏感性级别与权限的关系

sensitivity_permissions={

'高':['查看研发部文档','查看项目A文档'],

'中':['查看研发部文档','查看项目B文档'],

'低':['查看研发部文档','查看项目C文档']

}

#创建用户实例

user1=User('李四','研发部工程师')

user2=User('王五','市场部员工')

#根据用户角色和项目敏感性计算权限

user1.permissions=roles[user1.role]+sensitivity_permissions[project_sensitivity['项目A']]

user2.permissions=roles[user2.role]

#输出用户权限

print(f'{}的权限为:{user1.permissions}')

print(f'{}的权限为:{user2.permissions}')在这个例子中,roles字典定义了不同角色的权限,project_sensitivity字典定义了项目的敏感性级别,sensitivity_permissions字典则定义了敏感性级别与额外权限的关系。通过组合这些信息,系统能够为不同用户计算出符合其角色和所在项目敏感性级别的具体权限。例如,“研发部工程师”在“项目A”中将获得额外的“查看项目A文档”权限,而“市场部员工”只能访问“市场部文档”。5InforPLM:安全性与合规性5.1行业标准与法规遵循在InforPLM系统中,遵循行业标准和法规是确保数据安全和合规性的基石。这包括但不限于ISO27001信息安全管理体系、NIST框架、GDPR(欧盟通用数据保护条例)以及行业特定的法规如HIPAA(美国健康保险流通与责任法案)对于医疗设备行业,或ITAR(国际武器贸易条例)对于国防行业。5.1.1ISO27001ISO27001是一个国际标准,定义了建立、实施、维护和持续改进信息安全管理体系(ISMS)的要求。在InforPLM中,这可能意味着:风险评估:定期进行风险评估,识别和分析可能影响系统安全性的威胁和脆弱性。政策与程序:制定和维护信息安全政策,确保所有操作都有明确的指导和程序。访问控制:实施严格的访问控制策略,确保只有授权用户才能访问特定的数据和功能。5.1.2GDPRGDPR要求组织在处理个人数据时必须遵守一系列严格的规定,包括数据保护、透明度、数据主体权利等。InforPLM系统通过以下方式支持GDPR:数据最小化:只收集和存储执行业务所必需的个人数据。数据访问和删除:提供工具和流程,使数据主体能够请求访问或删除其个人数据。数据保护影响评估:在处理高风险个人数据时,进行数据保护影响评估(DPIA)。5.2安全性评估与合规检查InforPLM系统通过定期的安全性评估和合规检查来确保其安全性策略的有效性和合规性。这包括:渗透测试:模拟黑客攻击,以识别系统中的安全漏洞。合规审计:由内部或外部审计员进行,以验证系统是否符合所有适用的法规和标准。安全更新与补丁管理:及时应用安全更新和补丁,以修复已知的安全漏洞。5.2.1示例:渗透测试#模拟渗透测试代码示例

importrequests

#定义目标URL

url="/api/v1"

#发送GET请求

response=requests.get(url)

#检查响应状态码

ifresponse.status_code==200:

print("警告:API可能未正确保护,允许未授权访问。")

else:

print("API访问控制正常。")此代码示例模拟了对InforPLM系统API的渗透测试。通过发送一个GET请求到系统API,然后检查响应的状态码,可以初步判断API是否对未授权访问开放。如果状态码为200,通常意味着请求成功,这可能指示API的安全性配置存在问题。5.3持续的安全性改进与更新InforPLM系统通过持续的安全性改进和更新来应对不断变化的威胁环境。这包括:安全策略更新:定期审查和更新安全策略,以适应新的安全威胁和法规要求。用户培训:定期对用户进行安全意识培训,教育他们如何识别和避免潜在的安全威胁。技术升级:采用最新的安全技术和工具,如多因素认证、加密、入侵检测系统等。5.3.1示例:多因素认证#多因素认证代码示例

importpyotp

#用户输入

user_otp=input("请输入您的一次性密码:")

#生成密钥

secret_key="JBSWY3DPEHPK3PXP"

#初始化TOTP对象

totp=pyotp.TOTP(secret_key)

#验证用户输入的OTP

iftotp.verify(user_otp):

print("认证成功!")

else:

print("认证失败,请检查您的OTP。")此代码示例展示了如何在InforPLM系统中实现多因素认证(MFA)。通过使用pyotp库,系统可以生成和验证基于时间的一次性密码(TOTP)。用户在登录时除了输入用户名和密码外,还需要输入通过其认证设备生成的OTP,从而增加了系统的安全性。通过上述模块的详细阐述,可以看出InforPLM系统在安全性与合规性方面采取了全面的措施,从遵循行业标准和法规,到定期的安全性评估和合规检查,再到持续的安全性改进和更新,确保了系统的安全性和数据的合规性。6故障排除与最佳实践6.1常见安全性问题与解决方法6.1.1非授权访问问题描述:非授权用户尝试访问InforPLM系统中的敏感数据或功能。解决方法:-强化身份验证:使用多因素认证(MFA)增加安全性。-定期审计权限:确保只有授权用户拥有访问特定数据或功能的权限。-实施IP白名单:限制对系统的访问仅限于特定的IP地址。6.1.2数据泄露问题描述:敏感数据可能因系统漏洞或不当操作而泄露。解决方法:-加密数据:使用AES等加密算法保护数据。-监控异常活动:设置警报以检测和响应异常数据访问模式。-数据最小化:仅收集和存储执行业务所需的数据。6.1.3系统性能下降问题描述:安全性措施可能会影响系统性能。解决方法:-优化安全策略:定期审查和调整安全策略,以减少对性能的影响。-使用负载均衡:分散请求以避免单点过载。-性能监控:持续监控系统性能,及时调整安全设置。6.2用户权限管理的优化技巧6.2.1角色基础权限技巧描述:基于用户角色分配权限,而不是个人。实现方法:#示例代码:使用Python分配角色基础权限

classRole:

def__init__(self,name,permissions):

=name

self.permissions=permissions

classUser:

def__init__(self,name,role):

=name

self.role=role

defhas_permission(self,permission):

returnpermissioninself.role.permissions

#创建角色

admin_role=Role('Admin',['read','write','delete'])

user_role=Role('User',['read'])

#创建用户

admin_user=User('AdminUser',admin_role)

normal_user=User('NormalUser',user_role)

#检查权限

print(admin_user.has_permission('write'))#输出:True

print(normal_user.has_permission('write'))#输出:False描述:通过定义角色和用户类,可以轻松地为不同角色分配不同的权限,并检查用户是否具有特定权限。6.2.2权限继承技巧描述:允许权限在角色层级间继承,简化权限管理。实现方法:#示例代码:使用Python实现权限继承

classRole:

def__init__(self,name,parent=None):

=name

self.permissions=set()

self.parent=parent

ifparent:

self.permissions=parent.permissions.copy()

defadd_permission(self,permission):

self.permissions.add(permi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论