前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网络安全架构 | IAM(身份访问与管理)架构的现代化

网络安全架构 | IAM(身份访问与管理)架构的现代化

作者头像
网络安全观
发布2021-03-01 16:02:36
5.3K0
发布2021-03-01 16:02:36
举报
文章被收录于专栏:网络安全观网络安全观

文约8800字 阅读约25分钟

IAM(身份和访问管理)通常负责用户需要访问的各种系统中的身份生命周期管理,包括入职、离职、角色变更。尽管IAM解决方案已经在市场上销售了30多年,但仍被认为是极其复杂的,非常耗费时间和耗费资源

IAM的构建模块可以分为三类:身份、认证、授权。现有技术主要集中在前两个方面,即身份生命周期管理和身份认证。而授权通常由开发人员和应用程序所有者负责。所导致的结果是没有真正的控制,也缺乏对用户可以做什么或看什么的可见性

授权是组织安全的核心,这也意味着它是生产力的核心,授权决定了数字身份在每个应用程序中可以做什么。确保数据安全并避免违规是授权的全部内容,确保正确的人在正确的时间动态地获得正确的访问权是根本。授权方法的发展旨在简化授权过程,使其能够更快扩展,并为组织提供更好的控制和可见性。

本文主要以国外知名IAM(身份访问与管理)厂商PlainID公司的视角,思考了IAM架构现代化的问题。

按照PlainID的观点,授权管理的演进路线图是:访问控制列表(ACL)-->基于角色的访问控制(RBAC)-->基于属性的访问控制(ABAC)-->基于策略的访问控制(PBAC)。PBAC是当前和未来的最佳授权方法,因为PBAC结合了RBAC和ABAC的最佳特性

IAM架构现代化的核心是PBCA。关于PBCA的安全模式示例,可参见《网络安全架构 | 安全模式方法论》。

本文目录

一、从IAM到授权演进

1)IAM面临的困境

2)IAM的构建模块

3)授权的演进:从RBAC到ABAC再到PBAC

4)基于组的访问 vs. 基于资源的访问

二、使用PBAC重构IAM架构

1)重构IAM架构的思路

2)Gartner报告:构建敏捷和现代化身份基础设施

3)NIST标准草案:零信任架构

4)实现IAM架构现代化的方法

三、现实中的IAM架构

1)类型1:支持IdP的应用程序

2)类型2:支持策略引擎(PDP)的应用程序

3)类型3:支持IGA/IdM的应用程序

4)类型4:断开连接的应用程序

5)授权策略

四、现代化的IAM架构

一、从IAM到授权演进

01

IAM面临的困境

IAM(身份和访问管理)通常负责用户需要访问的各种系统中的身份生命周期管理,包括入职、离职、角色变更等。

但是,尽管IAM解决方案已经在市场上销售了30多年,但它们被认为是极其复杂的,并且非常耗时和耗费资源。

除此之外,组织的数据和身份也在不断扩大。许多组织正在考虑或已经将其数据扩展到云。曾经由组织的内部措施所控制和保护的内容,现在已经呈现分布式扩散,所以对它们的访问控制也随之分布式扩散

许多组织还需要支持分布式身份。员工可以从任何地方、办公室、家庭或移动设备访问组织系统。公司兼并、外部承包商,扩大了这些系统需要支持的身份来源。

02

IAM的构建模块

IAM的构建模块可以分为以下三类:

  • 身份:如何定义和管理在线体验?
  • 认证:如何证明身份?
  • 授权:身份可以做什么?

现有技术主要集中在前两个方面,即身份生命周期管理和身份认证。授权通常由开发人员、应用程序所有者负责。这种局面的结果是没有真正的控制,也缺乏对用户可以做什么或看到什么的可见性。

是时候改变了,是时候找到更好的方式来处理授权了。授权方法的发展旨在简化授权过程,使其能够更快地扩展,并向资产所属的组织提供更好的控制和可见性

03

授权的演进:从RBAC到ABAC再到PBAC

分配访问控制是信息安全和法规遵从性的基本步骤之一。企业通常处理个人、商业、企业内部的数据,这些数据绝对不能泄露给公众,也不能泄露给组织内部。所有主要的法规遵从性制度,如FISMA、PCI-DSS、HIPAA和GDPR,都有详细的要求,规定了谁可以访问某些数据、何时可以访问这些数据、以及如何保存访问记录。但最后一个问题仍然存在,但如何确保未经授权的人员不能访问该数据?

1)使用属性来调节访问

ABAC(基于属性的访问控制)下,对特定记录或资源的访问,是基于访问者(主体)、资源本身(对象)、以及访问对象的时间和地点(环境)的某些特征即属性进行的。主体的属性可以包括其职称、证书、受训情况。对象的属性可以包括其相关项目、其包含的个人识别信息(PII)、以及该PII的敏感性。从整体上看,这些属性现在可以用来设置允许访问数据和资源的规则。

而另一方面,RBAC(基于角色的访问控制)涉及为每个组织或业务功能创建一个角色,授予该角色访问某些记录或资源的权限,并将用户分配给该角色。这种系统完全是太颗粒化了,很不灵活,并且在大范围场景下非常受限。

2)使用PBAC简化访问控制和智能化权限设置

PBAC(基于策略的访问控制)下,授权不依赖于任何特定的实现(如XACML),并且可以用自然语言设置策略,如“团队领导只能在工作日的上午9点到下午6点之间,授予团队成员对项目的访问权限”。这使得管理大量用户和数据更加简单。

此外,PBAC支持环境控制。因此,如果存在只应在某些公司计算机上查看的敏感文件,则可以轻松设置策略以限制对场内系统的访问。

策略也可以基于事件快速调整。例如,如果工程师在紧急情况下需要访问,他们可以在紧急情况下在有限的时间内被授予立即访问权限。

PBAC还通过隔离数据访问、控制访问蔓延,甚至阻止授权用户以危险方式访问数据,使遵守GRC和GDPR等法规变得更加容易。

3)以自动化应对永恒的挑战

随着角色、组织结构、新项目分配的变化,PBAC可以立即调整用户可以访问的文档、医疗记录、服务器等。无需执行任何其他操作,即可启动访问新项目数据、部门中的新用户。PBAC确实是一种更加有效的方法,以支持您的访问决策。

PBAC是一种新兴的模式,旨在帮助企业满足需求,即基于公司政策和治理要求,实施可操作的访问控制方案。

04

基于组的访问 vs. 基于资源的访问

1)基于组的访问

传统上,安全组是授权访问数据和操作的最常用方式。安全组或安全角色充当链接,作为用户和数据、信息或操作之间的中间层。但它们并不能直接反映用户实际可以做什么或看到什么

例如:我们希望开发人员访问开发数据,而管理人员访问管理数据。因此,我们为开发人员创建一个组,为管理人员创建另一个组,并相应地分配用户。但谁负责确保开发组只能访问开发文档?管理组只能访问管理数据?如果分配给两个组的开发经理,意外地在开发文件夹中放置了“员工管理评估”文档,会发生什么情况?

当使用基于组的访问时,责任会被转移。IAM团队通常将用户连接到组,但该组可以访问的数据和活动是由应用程序或业务所有者负责的。在实践中,用户常常获得对他们不需要的太多资源的访问,并且无法获得对他们确实需要的特定资源和工具的访问。

这种方法会导致太多的错误,而且无法扩展。还原到开发人员示例:每当开发人员加入新项目时,都需要将其分配给一组新的文档、工具和权限。此外,可能需要撤销对他们以前的工具集等的访问。如果组织中只有少数开发人员,这可能是可以管理的。但是,在有成百上千名员工的地方会发生什么呢?即使只有一名员工更改角色,IAM团队也将花费大量不必要的时间来解除和重新分配权限。

2)基于资源的访问

更好的方法是将用户直接连接到数据基于资源的访问允许您将用户连接到他们有权访问的数据。无需中间人,无需派发责任,无需任何可能导致潜在错误的未知阶段。

例如,在基于资源的访问中,可以同时基于用户和文档的匹配项目标识符,授予访问权。它还可以基于用户在项目中的角色,根据项目阶段确定访问权限,比如项目A处于审阅阶段,因此其数据可供分配给此项目的所有审阅者访问。

因此,基于资源的访问允许直接的连接,允许对于用户可以看到什么和可以执行什么的精确的可视性。

二、使用PBAC重构IAM架构

01

重构IAM架构的思路

随着面对全球化的数字转型和网络安全威胁向量的持续增长,IAM专家现在发现传统IAM架构模式并不总是合适。一种新的、现代的IAM模式需要演进,以更好地支持更多的应用程序和更先进的用例。最终,这成为支持组织目标更加灵活同时主动降低风险的唯一途径。

PlainID承认这个架构的挑战性。这就是为什么我们已经开发了一个“现代化的IAM架构”模式(或观点),来解决授权策略和PBAC如何重新设计IAM的这个问题。

我们通过将PBAC(基于策略的访问控制)实现为一个集中式服务,来重新思考和重新设计身份和访问管理(IAM)架构。这种架构改变,允许组织改善他们的安全态势,降低风险并变得更加敏捷。

这个PBAC服务不仅应该支持一个特定的应用程序集,而且应该充当不同的IAM技术的焦点(或“大脑”),以向一个不同的更大的应用程序和平台集,提供动态访问控制。

作为本文的依据和输入,我们引用了两个不同的出版物,分别来自两个组织,即GartnerNIST(美国国家标准与技术研究所)。建议您阅读这两个出版物,以获得有关每个组织观点的全面视图。

下面是一些可以作为IAM如何现代化的介绍的摘录。

在这些摘录之后,我们将讨论如何通过应用PBAC来实现IAM现代化。这种现代化方法包括几个不同的视角,关于不同的IAM技术和解决方案如何互操作,以提供更动态和敏捷的IAM架构。

02

Gartner报告:构建敏捷和现代化身份基础设施

在Gartner关于构建敏捷和现代化身份基础设施的技术报告中,Gartner提出:

“数字业务和网络安全威胁的增加,对IAM系统提出了更高的要求。组织必须支持更广泛的身份用例,并且能够更快速、近实时地适应新的请求和威胁。为了应对这些挑战,组织必须采纳一种新的视角,事关IAM系统必须如何运行和演进。一个新的、动态的、智能的架构,以先进的分析技术得到增加,正在演进以满足现代身份的需要。”

进一步Gartner提出:

IAM必须从支持一系列身份竖井中特定用例的一套能力集合,演进到一个更加灵活的平台,从而能够快速支持新的业务和新的访问需求组合。”

03

NIST标准草案:零信任架构

零信任架构(ZTA)是一个新的概念,它被许多组织所接受。2020年2月,NIST发布了一份针对安全架构师和关于ZTA实施路线图的第二版草案。

NIST是如何定义零信任和零信任架构的:

“零信任(ZT)提供了一套概念和思想,旨在面向可能失陷的网络时,减少其信息系统和服务中执行精确的、每次请求的访问决策的不确定性。零信任架构(ZTA)是一种利用零信任概念且包含组件关系、工作流规划、访问策略的企业网络安全计划。”

“这一定义集中在问题的症结上,即防止未授权访问数据和服务的目标,并使访问控制执行尽可能地细粒度。”

NIST还定义了一套需要应用的原则。这些原则中的几个(特别是第3、4、6条)特别指出,需要使用基于会话的动态策略评估的细粒度和动态访问控制

  • 1. 所有数据源和计算服务都被认为是资源
  • 2. 无论网络位置如何,所有通信都要收到保护。
  • 3. 在每个会话的基础上,授予单个企业资源的访问权。
  • 4. 对资源的访问由动态策略决定,包括客户端身份、应用程序、请求资产的可观察状态,并且可以包括其他行为属性
  • 5. 企业确保所有拥有的和有关的设备处于尽可能最安全的状态,并且监控资产以确保它们处于尽可能最安全的状态。
  • 6. 在允许访问之前,所有资源的认证和授权都是动态的和严格强制执行的。
  • 7. 企业收集关于网络基础设施和通信的当前状态的尽可能多的信息,并使用它来改善其安全态势。

零信任架构的中心是使用一个策略决策点(PDP)和一个策略执行点(PEP)外部化访问决策到一个逻辑点的概念:

“在图1所示的访问抽象模型中,一个用户或机器需要访问企业资源。访问是通过策略决策点(PDP)和相应的策略执行点(PEP)来授予的。”

零信任访问

“系统必须确保用户是真实的,并且请求是有效的。PDP/PEP通过恰当的判断以允许主体访问资源。这意味着零信任适用于两个基本领域:认证和授权。”

NIST阐述了向零信任模型的转变是一个旅程,不单纯事关新的技术,更关注现代化计划需要如何逐步被应用,以支持更多的用例。

“组织应寻求逐步实现零信任原则、过程变更和技术解决方案,以通过用例来保护它们的数据资产和业务功能。 ”

04

实现IAM架构现代化的方法

PlainID IAM现代化方法的中心是授权“策略”。在PlainID的PBAC平台中定义的策略提供了一个通用工具,以对广泛的应用程序、服务和API,定义上下文访问权限

PBAC方法明显地模仿了NIST定义ZTA访问模型的方式,即“访问是通过策略决策点(PDP)和相应的策略执行点(PEP)来授予的。”但是这个ZTA访问模型的问题是所有资源(应用程序、数据等)需要能够停止授权流,并在授予访问之前向策略引擎发送访问请求。

该模型完全适用于某种“类型的应用”,其中可以使用应用程序的简单扩展(即PEP)来实现外部化的访问控制模型。尽管这些类型的应用对于组织来说是非常重要的,但它们并不代表需要以现代化方式消费授权和实现访问控制的大多数应用。

为了真正实现IAM架构的现代化,我们需要支持一组更大的应用程序和用例集。在我们看来,这就是为什么我们需要打破Gartner所描述的“身份竖井”。正如NIST所解释的,我们还需要“逐步实施零信任原则”,以便能够解决更广泛和更高级的用例

二、现实中的IAM架构

在下面的图中,我们看到了四种类型的应用程序。这些是抽象类型的应用程序,它们不是由任何特定的技术定义的,而是由其如何使用和消费授权来定义的。每种应用程序类型都由一种特殊的IAM技术所“支持”。

不同类型的应用程序描述如下:

01

类型1:支持IdP的应用程序

这种类型是一个应用程序或一个[微]服务,它依赖于身份提供商(IdP)进行身份验证、SSO和授权。这种类型的应用程序通常是一个非常现代的应用程序,它通过使用各种类型的令牌(例如SAML、OAuth/OIDC、JWT等)接收授权信息,作为登录流的一部分。

术语“IdP”被统称为任何类型的认证服务、Web访问管理服务、OAuth/OIDC服务和/或一个身份令牌经纪人服务。在这个市场的IAM供应商包括OKTA、微软、Ping、Curity、ForgeRock和其他几家。

02

类型2:支持策略引擎(PDP)的应用程序

这种类型的应用已经在上面的ZTA模型中讨论过。这是一个应用程序,它可以将授权决策完全外部化并委托给一个策略引擎,该策略引擎可以做出基于会话的动态、细粒度访问决策应用程序将需要实现一个PEP,它调用PDP进行访问决策或获得授权数据,以授予用户正确的访问权限。

这些类型的应用程序和服务,通常是家庭定制的业务应用程序和技术平台,如API网关、业务流程管理(BPM)解决方案、数据虚拟化/代理工具和搜索引擎。这是典型的外部化用例

03

类型3:支持IGA/IdM的应用程序

这种类型的应用程序通常是遗留应用程序具有自己的用户存储库和用于授权的内部控制的COTS(商业货架)应用程序。这种类型的应用程序可以与身份治理和管理(IGA)解决方案集成,并使用连接器来提供和协调进出应用程序存储库的身份和访问数据。

通常情况下,授权决策通常由HR(人力资源)变更所触发,例如在新员工入职、变更员工角色、或终止雇佣时。HR系统连接到IGA平台,以驱动加入-移动-离开(joiner-mover-leaver)的过程。IGA解决方案经常暴露访问请求工作流能力,以处理来自用户的访问请求过程。IGA支持的身份和访问管理过程,通常依赖于RBAC(基于角色的访问控制)模型,其中角色和组成员资格被静态分配给用户。在这个市场的IAM供应商包括SailPoint、Saviynt、Omada、OneIdentity和其他几个。

1)存储库方法的问题

经典的授权方法依赖于存储库定义的组或角色,这些组或角色提供了在用户和资源之间的链接。这些授权决策是预先配置的,不能实时更改。授予用户查看和使用特定文件和应用程序套件的权限意味着,除非管理员手动取消授权,否则用户将能够永远使用这些文件和应用程序。

用户存储库通常是一个简单的数据库,包含每个用户的ID和授权操作列表。这是一个简单的系统,需要管理IT资源。几种解决方案已经被尝试过,其中最流行的是LDAP(轻量级目录访问协议)。实际上,这是一个单独的目录,用于在许多应用程序之间共享用户和授权信息。它的优点是,它是一个行业标准,旨在使每个开发人员都能自由地将其集成到他们的产品中。但是,缺点是LDAP不适合所有的授权需求,因此没有被广泛采用

除了规模问题之外,存储库还有其他传统静态授权形式所共有的缺点:管理复杂、缺乏灵活性、分发效率低下。

  • 管理复杂:为了更改给定应用程序的权限,需要更新存储库。无论是手动的还是通过供应系统,在这两种情况下,这都是一项需要时间和资源的复杂任务。
  • 缺乏灵活性:授权不会基于任何变量更改。例如,网络安全事件或用户通过移动设备的登录,都不会删除任何分配的权限。然而,存储库是静态的,它们的用户和权限必须事先设定。
  • 分布效率低下平均企业中有500多个存储库,很难在如此大规模的数据库上一致地应用授权策略。如果授权策略的应用不一致(无论是由于意外还是冷漠),则某些应用程序可能会成为安全风险。

2)令牌方法的价值

针对用户存储库的种种问题,类型1应用程序中的虚拟令牌提供了答案。如果不是将授权信息存储在每个应用程序中的大型存储库中,而是将其减少到适合单个用户的小型存储库中,会怎么样?这正是虚拟令牌的价值。访问时,此令牌将发送到应用程序,应用程序将相应地作出响应。

与传统的存储库方法相比,令牌方法显示出一些显著的优势:

  • 首先,它是响应式的——虚拟令牌携带的数据允许应用程序根据授权令牌描述的条件动态响应。
  • 其次,虚拟令牌允许很小,只包含应用程序验证和授权用户所必需的信息。最后,虚拟令牌减少了维护所有这些存储库的需要,因此不再需要非托管授权,不再需要“ghost”id。

04

类型4:断开连接的应用程序

这种类型的应用程序与上面的类型3相同,但它并不依赖于IGA工具来实现。这些断开连接的应用程序,经常使用IGA工具来处理身份生命周期和访问请求,但使用IT服务管理(ITSM)工具来实现实际的过程。一些组织还利用ITSM工具来驱动访问请求过程,并将其与IGA工具集成。

05

授权策略

PBAC的策略定义是通用的,不与任何特定类型的用户、资产、应用或系统相绑定。策略可以表示用户和资产/资源之间的任何类型的关联。这些关联是基于规则的,即用户通过规则与策略关联。同样的概念适用于资产/资源。它们也通过规则与策略相关联

这些策略是通过如下面描述的自然语言“构建块”,将用户与资产关联起来构建的。这种抽象级别允许隐藏底层授权的复杂性。

基于策略,策略引擎可以提供具有动态和上下文的“决策”和/或“授权数据”的其他IAM解决方案该架构支持一种通用机制来定义和强制执行跨更大范围的应用程序访问,而忽略了哪种IAM解决方案有助于该过程。

三、现代化的IAM架构

下面,我们概述了当前的现状架构可以如何被现代化。我们只关注如何使用PBAC和授权模型来增加愿景的灵活性和动态性。其他的方面和技术也可以应用于改进和现代化IAM架构。

在下面的图中,策略引擎(PDP)和PBAC的概念在架构中起着至关重要的作用策略引擎是运行时“大脑”,策略管理点(PAP)是策略和其他授权构件(如权利和角色)的管理和监管层。该图显示了IAM架构是如何实现的,以及授权信息如何在各个组件之间流动。

PBAC支持动态运行时授权和管理态授权。

运行时授权:是基于用户访问请求期间计算的当前属性和条件的访问决策。运行时授权提供了灵活性,可以将当前状态和事件视为做出访问决策的一部分,因此通常更加准确。

管理态授权:是预先授权的决策、预先对用户访问所做的访问决策,通常被配置到应用程序存储库中。这种情况下的授权,通常是在用户入职、角色变更事件或作为请求过程的一部分设置的。

在下面的类型1场景中,IdP可以查询PDP以获取动态范围、请求、角色和/或用户应该向应用程序提交的权限。这些动态权限可以使现有的粗粒度访问模型更加细粒度和动态性该模型也适用于微服务架构,其中OAuth/OIDC服务器可以使用标准化的OAuth/OIDC令牌和流,为每个微服务提供访问决策、访问数据和访问过滤器。

在下面的类型3场景即IGA解决方案中,很像上面的IdP场景,可以向PDP查询应用程序、角色和权限。这些更多的上下文权限,可以显著减少置备过程中的静态分配。再次,价值在于策略评估的动态性和支持多个场景的单一策略定义。

与类型3和类型4密切相关的,也是关于如何以及在何处应用“治理”。显然,当评估这个提议的架构时,您可以在IGA工具管理和治理能力和PBAC平台之间找到并覆盖。PlainID给这个讨论带来的主要论点是,我们所有的焦点都放在IAM架构的授权方面。我们不打算提供与任何身份治理过程相关的功能或能力,但我们确实打算提供授权或访问治理。对于这一主题,我们提供了许多可以提供的内容,包括策略和角色的可视化表示、策略/角色挖掘、工作流、SoD控制、以及各种调查工具和仪表盘,允许对授权领域进行更深入的了解。这的确是一个值得进一步讨论的领域。

另一个可能感兴趣的主题是,该架构如何包括特权访问管理(PAM)。它没有在上面的图表中被覆盖,但是PAM工具和策略引擎之间的互操作并不牵强。如果PAM工具可以向策略引擎发送访问请求,那么决策当然也可以支持这种用例。在这种情况下,我们可以考虑用于了解环境方面(如IP地址、时间等)的策略,但也可以考虑是否有已计划的服务窗口或开放的IT紧急情况(如票据)。在授予IT管理员访问敏感防火墙、服务器或数据库的权限之前,可以评估这些因素并将其提供给PAM工具。

总节概要

通过策略/角色的可视化表示,以及先进的分析、工作流,和可支持大型企业的委托模型,PlainID的PBAC平台对于寻求现代化其IAM架构的组织来说,是理想的。

PlainID同时为业务和管理团队提供了一种简单直观的方法,来控制其组织的整个授权过程。允许您实现您可以想象的任何类型的规则,所有这些规则都不需要编码,而且都是细粒度的。在场内、在云中、或基于移动的实现,都是受支持的。

PBAC方法简化了授权,因此可以使用图数据库决策引擎,将数千个角色、属性甚至环境因素,转换为少量的逻辑智能授权策略

PBAC方法提供了一个清晰的“关注分离(separation of concerns)”,其中授权策略在一个中心位置被管理和治理,但被多个渠道和平台所消费

这不是一个“一刀切”的架构,而是一项战略、一个旅程或一个架构计划,需要一个实际的和渐进的实施路线图,来解决每个组织的挑战、用例和需求。

参考资料:

[1]Deeper thoughts on Modernizing IAM. Måns Håkansson,May 7, 2020;

[2]Policy Based vs Role Based Access Control: The Truth. www.PlainID.com;

[3]The Complete Guide to Authorization. www.PlainID.com;

[4]Gartner公司,“架构敏捷和现代身份基础设施,”Mary Ruddy,Erik Wahlstrom,2020年1月13日。

[5]NIST:零信任架构-草案(第二版)NIST SP 800-207,2020年2月。

(本篇完)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络安全观 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档