[AEM Assets]{class="badge positive" title="适用于AEM Assets)。"}
将数字资产作为Cloud Service添加到Adobe Experience ManagerAssets add-assets-to-experience-manager
Adobe Experience Manager Assets接受来自多个来源的多种数字资源。 它存储原始二进制文件和生成的演绎版,使用工作流和Adobe AI服务处理资源,并在多个渠道和表面之间分发内容。
Adobe Experience Manager会自动丰富已上传数字文件的二进制内容,使资产更易于搜索、可重用和交付。 Experience Manager通过富元数据、智能标记、呈现版本和其他 数字资产管理(DAM) 服务丰富了这些文件。 您可以从本地文件夹或网络驱动器将各种类型的文件(如图像、文档和原始图像文件)上载到Experience Manager Assets。
将资源添加到存储库的方法
除了最常用的浏览器上载之外,还存在将资产添加到Experience Manager存储库的其他方法。 这些其他方法包括桌面客户端(如Adobe Asset Link或Experience Manager桌面应用程序)、客户将创建的上传和摄取脚本,以及添加为Experience Manager扩展的自动摄取集成。
其他服务和处理
虽然您可以上传和管理Experience Manager中的任何二进制文件,但最常用的文件格式支持其他服务,如元数据提取或预览/演绎版生成。 有关详细信息,请参阅支持的文件格式。
您还可以选择对上传的资源执行其他处理。 可以在上传资产的文件夹上配置多个资产处理配置文件,以自动添加特定元数据、演绎版或图像处理服务,确保资产满足交付要求而无需手动干预。 请参阅上传时处理资源。
上载方法概述
Assets提供以下上载方法。 Adobe建议您在使用每个上传选项之前了解其用例和适用性,因为正确的方法取决于所涉及的数量、工作流和角色。
上传资产 upload-assets
Adobe Experience Manager Assets支持两种上传单个或多个文件的方法。 直接将文件从桌面拖放到Assets用户界面(Web浏览器)中并放入目标文件夹中,或使用“创建”菜单从Assets用户界面 中启动上载。 这两种方法都会将数字资产添加到您选择的文件夹位置。
-
在Assets用户界面中,导航到要添加数字资产的位置。
-
要上传资源,请使用以下方法之一:
- 在工具栏上,单击创建 > 文件。 如果需要,可以在呈现的对话框中重命名文件。
- 在支持HTML5的浏览器中,将资源直接拖到Assets用户界面上。 在此方法中,不显示rename-file对话框。
要选择多个文件,请按住
Ctrl键(Windows)或Command键(macOS),然后在文件选取器对话框中选择资源。 使用iPad时,一次只能选择一个文件。 -
要取消正在进行的上载,请单击进度条旁边的关闭(
X)。 由于取消操作会停止正在进行的传输,Assets将删除当前资产中部分上传的部分,以避免留下不完整的文件。 如果在上载所有文件之前取消上载操作,Assets将停止上载当前文件并刷新内容。 但是,已完成上传的文件不会被删除并保留在目标文件夹中。 -
Assets中的上传进度对话框显示已成功上传的文件数和无法上传的文件数,为您提供批次的明确状态。 此外,Assets用户界面会显示您上传的最新资源或您首先创建的文件夹。
处理现有资源的上传 handling-upload-existing-file
将具有相同路径(名称和位置)的资源上传为现有资源会触发一个警告对话框,其中显示三个解决方法选项: 替换现有资源、创建另一个版本或保留两者。 每个选项处理重复项的方式各不相同:
-
替换现有资源:替换现有资源会完全覆盖该资源,因此将永久删除应用于现有资源的元数据和任何先前修改,例如注释和裁切。 出现此情况是因为替换资产会覆盖存储的资产,而不是保留其历史记录。
note NOTE 如果资产已锁定或签出,则用于替换资产的选项将不可用。 -
创建另一个版本:在存储库中创建一个现有资源的新版本,保留以前的状态,这样就不会丢失任何工作。 您可以在时间线中查看这两个版本,如有必要,还可以还原到以前的现有版本。
-
保留两者:如果选择保留两者,则新资产将重命名,以便原始资产和新上传的资产同时存在。
若要在Assets中保留重复的资产,请单击保留。 要删除您上传的重复资源,请单击删除。
文件名处理和禁止使用的字符 filename-handling
Adobe Experience Manager (AEM) Assets阻止上传文件名中包含禁止使用的字符的任何资源。 当文件名包含一个或多个不允许的字符时,Assets显示警告消息并阻止上载,直到删除不允许的字符或使用允许名称重命名文件为止。 此保护在上传时运行,因此在资产进入存储库之前会捕获有问题的文件名。
为什么存在这些限制
文件名字符限制可确保资产名称和文件夹名称在文件系统、存储层和Web URL之间保持兼容。 斜杠、冒号和其他保留符号等字符在文件路径和URL中具有特殊含义,因此对其进行限制可以防止下游的命名冲突、链接中断和投放错误。
为了适合您所在组织的特定文件命名约定,用户可以使用上传Assets对话框在上传期间指定较长的文件名。 不支持以下(以空格分隔的)字符:
- 资源名称中的无效字符:
* / : [ \\ ] | # % { } ? &或;=(分号后跟等号) - 资产文件夹名称的字符无效:
* / : [ \\ ] | # % { } ? \" . ^ ; + & \t
无效的文件名示例:
JPG_JD_small file ~!)$@;(-_=+^',..jpgJPG_JD_small file ~!)$@;=(-_+^',..jpg
这两个示例都因包含上述列表中的保留字符而被拒绝。 要成功上传,请在重试上传之前删除禁止使用的字符或将其替换为允许的替代字符。
批量上传资产 bulk-upload
批量资产引入器可以有效处理大量资产。 大规模摄取不是广泛的文件转储或临时迁移。 要使大规模引入成为有效满足您的业务目的的有意义的项目,请仔细规划迁移并组织资产组织。 由于每次引入都是不同的,因此会考虑您特定的存储库构成和业务需求,而不是应用通用规则。 以下最佳实践可帮助您计划和执行批量摄取:
- 策划资源:删除数字资源管理(DAM)存储库中不需要的资源。 考虑删除未使用、过时或重复的资源。 这种内务管理可减少传输的数据和摄取的资产数量,从而加快更可靠的摄取。
- 组织资源:考虑按定义的逻辑顺序(如文件大小、文件格式、用例或优先级)组织内容。 大型复杂文件需要更多的处理时间和系统资源,因此隔离这些文件可以防止处理瓶颈。 您还可以考虑使用文件大小过滤选项(如下所述)单独摄取大文件。
- 交错引入:考虑将您的引入分组为多个批量引入项目。 通过交错引入,您可以更快地查看内容并根据需要调整引入。 例如,您可以在非高峰时间摄取处理密集型资产,或逐渐摄取多个块中的资产。 但是,您可以一次性摄取不需要太多处理的更小、更简单的资产。
要上传更多文件,请使用以下方法之一。 另请参阅用例和方法
- 资源上传API:如有必要,请使用自定义上传脚本或使用API添加其他资源处理(例如,翻译元数据或重命名文件)的工具。
- Experience Manager桌面应用程序:对于从本地文件系统上传资源的创意专业人员和营销人员非常有用。 使用它可上载本地可用的嵌套文件夹。
- 批量摄取工具:在部署Experience Manager时用于偶尔或最初摄取大量资源。
资产批量导入工具 asset-bulk-ingestor
资产批量导入工具仅适用于管理员组,以便从 Microsoft Azure Blob存储 或 Amazon Simple Storage Service (S3) 数据存储中大规模摄取资产。 仅限管理员访问,因为批量摄取是一种有权限的高容量操作,它将大量资产直接移动到存储库中,并需要提升的权限才能安全配置。 观看配置和摄取的视频演练。
下图说明了管理员将资产从数据存储提取到Adobe Experience Manager中的各个阶段。 摄取通过分阶段管道进行,在该管道中,资产从连接的对象中读取,存储、传输和处理到Experience Manager中,从而确保大批量数据得到可靠处理:
先决条件
此功能需要来自 Microsoft Azure 或 Amazon Web Services (AWS) 的外部存储帐户或存储段。 批量导入过程直接从此外部帐户读取源资产,因此正确配置的Azure或AWS存储位置是强制的前提条件。
配置批量导入工具 configure-bulk-ingestor-tool
要在Adobe Experience Manager中配置批量导入工具,请执行以下步骤:
-
导航到工具 > Assets > 批量导入。 选择 创建 选项。
-
在 标题 字段中指定批量导入配置的标题。
-
从 导入Source 下拉列表中选择数据源类型。
-
提供值以创建与数据源的连接。 例如,如果选择 Azure Blob Storage 作为数据源,请指定Azure存储帐户、Azure Blob容器和Azure访问密钥的值。
-
从下拉列表中选择所需的身份验证模式。 这两种模式所授予的访问级别不同:Azure访问密钥提供对Azure存储帐户的完整、不受限制的访问,而 Azure SAS令牌 允许管理员使用权限和过期策略限制令牌的功能。 因此,Azure SAS令牌是限制较严格的选项,仅授予作用域、时间范围的访问权限。
-
在 源文件夹 字段中提供包含数据源中资源的根文件夹的名称。
-
(可选)在 按最小大小筛选 字段中提供要包含在摄取进程中的资源的最小文件大小(以MB为单位)。
-
(可选)在 按最大尺寸过滤 字段中,以 MB 为单位提供资源的最大文件大小,以将其包括在摄取过程中。
-
(可选)在 排除MIME类型 字段中指定要从摄取中排除的MIME类型列表(以逗号分隔)。 MIME类型标识每个资源的文件格式,因此此过滤器允许您跳过不想导入的格式。 例如,
image/jpeg, image/.*, video/mp4。 请参阅所有支持的文件格式。 -
在 包含MIME类型 字段中指定要包含在引入中的MIME类型列表(以逗号分隔)。 请参阅所有支持的文件格式。
-
选择 导入后删除源文件 选项,以在文件导入Experience Manager后从源数据存储中删除原始文件。 这会回收源数据存储中的存储,并防止在以后运行时重新导入相同的文件。
-
选择“导入模式”。 选择“跳过”、“代替”,或者创建版本。 跳过模式是默认模式:由于目标中已存在匹配的资产,因此引入器会跳过导入该资产,从而阻止覆盖现有内容。 查看替换和创建版本选项的含义。
-
要在数字资产管理(DAM)中定义Experience Manager导入资产的位置,请在 Assets目标文件夹 字段中指定路径。 例如:
/content/dam/imported_assets。 -
(可选)在 元数据文件 字段中指定要导入的元数据文件(以 CSV 格式提供)。 在源Blob位置中指定CSV文件,并在配置批量导入工具时引用路径。 此字段中所引用的CSV文件格式与您批量导入和导出资产元数据时使用的CSV文件格式相同。 如果选择 导入后删除源文件 选项,请使用排除、包含MIME类型字段或 按路径/文件筛选 字段来筛选CSV文件,因为这样做会阻止将元数据CSV本身删除或摄取为资源。 您可以使用正则表达式在这些字段中筛选CSV文件。
-
单击 保存 以保存配置。
管理批量导入工具配置 manage-bulk-import-configuration
创建批量导入工具配置后,您可以将资产批量摄取到Experience Manager实例中之前验证和评估配置。 在此阶段管理配置允许您查看其设置,确认与资源源的连接,并测试设置。 这可以确保配置按预期运行,并有助于在大规模导入资产之前防止出现摄取错误。
访问配置管理选项 access-configuration-management-options
要查看用于管理批量导入工具配置的可用选项,请导航到工具 > Assets > 批量导入,然后选择要管理的配置。 选择配置将显示可用于该特定设置的管理操作,允许您在启动完全批量导入之前检查、评估和调整配置。 由于评估在引入之前进行,因此您可以尽早识别并解决配置问题,从而降低资产导入失败或不完整的风险。
编辑配置 edit-configuration
要编辑配置详细信息,请执行以下步骤:
- 选择要修改的配置。
- 单击 编辑 以在编辑模式下打开配置。
- 根据需要更新可编辑的配置详细信息,然后保存更改。
两个字段保持固定状态,无法在编辑操作期间进行修改:配置的 标题 和导入数据源。 这些值会被锁定,因为它们定义了配置的标识及其导入数据的来源,在创建后更改这些值将破坏首次设置配置时建立的引用。 所有其他配置详细信息仍可编辑,允许您优化设置而不从头重新创建配置。
删除配置 delete-configuration
删除批量导入配置会将其从可用配置列表中永久删除。 当不再需要某个配置、错误创建该配置或要用更新的配置替换它时,请删除该配置。
要删除批量导入配置,请执行以下步骤:
- 从批量导入配置列表中选择要删除的配置。
- 单击删除。
此操作删除所选的批量导入配置。 由于删除配置会删除其保存的设置,因此在确认删除之前请仔细查看选定的配置,以确保不会删除仍在使用的配置。
验证与数据源的连接 validate-connection
在使用配置之前,验证连接会确认Experience Manager可以访问数据源,并且提供的凭据和连接参数正确。 运行此检查可首先防止因无法访问的端点或无效身份验证而导致的下游错误。
要验证与数据源的连接,请执行以下步骤:
- 选择要验证的配置。
- 单击检查。
连接成功后,Experience Manager将显示一条确认消息,指示与数据源的连接已建立。 此消息将验证配置是否有效以及是否可以使用。
连接失败疑难解答 troubleshoot-connection
如果验证不成功,Experience Manager将显示错误消息,而不是成功确认。 要解决失败的连接,请验证以下各项:
- 连接详细信息:确认在配置中正确输入了主机、端口和终结点值。
- 凭据:请确保为数据源提供的用户名、密码或身份验证令牌有效且最新。
- 网络访问:确认Experience Manager可以通过网络访问数据源,并且防火墙或安全规则未阻止连接。
更正配置后,再次单击 检查 以重新运行验证。 重复此过程,直到成功消息确认连接已建立。
为批量导入作业调用测试运行 invoke-test-run-bulk-import
选择配置并单击 试运行 以调用批量导入作业的测试运行。 试运行验证所选的批量导入配置及其源连接而不导入任何资产,从而允许您在提交完全导入之前确认设置是否正确。 首先运行测试会降低导入失败或部分导入的风险,因为它会提前出现配置或连接问题,而不是在实际作业期间出现。
测试运行完成后,Experience Manager显示有关批量导入作业的以下详细信息:
- 连接状态 — Experience Manager是否使用提供的凭据成功连接到配置的源位置。
- Assets检测到 — 在源路径上找到的与导入条件匹配的资源数。
- 预计的导入范围 — 将导入内容的概述,以便您可以验证配置目标为预期文件。
- 警告或错误 — 任何会阻止成功导入的问题,例如无法访问路径、凭据无效或资源不受支持。
查看这些详细信息以确认配置正确。 如果 模拟运行 报告错误或警告,请解决这些错误或警告,然后再次运行测试,然后再启动实际的批量导入作业。
批量导入期间处理文件名 filename-handling-bulkimport
当您批量导入资源或文件夹时,Experience Manager Assets 导入在导入源中存在的内容的完整结构。 Experience Manager遵循资产和文件夹名称中特殊字符的内置规则,因此需要清理这些文件名。 这样可以确保导入的名称符合存储库规则,并且不会破坏资产路径。 对于文件夹名称和资产名称,用户定义的标题保持不变,并存储在 Java内容存储库(JCR) 属性jcr:title中,该属性独立于经过清理的技术名称保留人类可读的标题。
在批量导入期间,Experience Manager会查找现有文件夹以避免重新导入资产和文件夹,并且还会验证在导入执行位置的父文件夹中应用的清理规则。 如果在父文件夹中应用了净化规则,则将相同的规则应用于导入源。 对于新导入,应用以下净化规则以管理资源的文件名和文件夹名称。
批量导入中不允许的名称
文件和文件夹名称中不允许使用以下字符:
- 控件和专用使用字符 (0x00到0x1F, \u0081, \uE000)
- 文件或文件夹名称 以点(.) 结尾
因此,在导入过程中,会跳过名称符合这些条件的文件或文件夹,并将其标记为失败。
正在批量导入中处理资源名称
对于资源文件名,Experience Manager使用API清理JCR名称和路径: JcrUtil.escapeIllegalJcrChars。
-
未更改Unicode字符
-
将特殊字符替换为其URL转义代码,例如,
new%asset.png已更新为new%25asset.png:code language-none URL escape code " %22 % %25 ' %27 * %2A / %2F : %3A [ %5B \n %0A \r %0D \t %09 ] %5D | %7C
正在处理批量导入中的文件夹名称
对于文件夹文件名,Experience Manager使用API清理JCR名称和路径: DamUtil.getSanitizedFolderName。
-
大写字符转换为小写
-
未更改Unicode字符
-
将特殊字符替换为破折号(“ — ”),例如,
new folder已更新为new-folder:code language-none " # % & * + . : ; ? [ ] ^ { } | / It is used for split folder in cloud storage and is pre-handled, no conversion here. \ Not allowed in Azure, allowed in AWS. \t space It is the space character.
计划一次性或循环批量导入 schedule-bulk-import
要计划一次性或定期批量导入,请执行以下步骤:
-
创建批量导入配置。
-
选择配置并从工具栏中选择计划。
-
设置一次性摄取或安排每小时、每天或每周的摄取计划。 单击“提交”。 循环计划可确保按照定义的间隔自动摄取导入源中的新资产,而无需手动重新执行。
查看Assets目标文件夹 view-assets-target-folder
要查看运行批量导入作业后资源导入的Assets目标位置,请选择配置,然后单击查看Assets。
运行批量导入工具 run-bulk-import-tool
在配置批量导入工具并可选管理批量导入工具配置之后,管理员可以运行配置作业以开始批量摄取资产。
要启动批量导入流程,请导航到工具 > Assets > 批量导入,选择批量导入配置,然后单击运行。 再次单击 运行 以确认。
成功完成作业后,Experience Manager将作业的状态更新为 正在处理 和成功。 要在Experience Manager中查看导入的资产,请单击查看Assets。
在作业进行时,您可以如下所示控制摄取过程:
- 停止 — 选择配置并单击 停止 以停止批量摄取进程。
- 运行 — 再次单击 运行 从停止的位置恢复进程。
- 试运行 — 单击 试运行 查看仍在等待导入的资产的详细信息,而不提交引入。 这允许管理员在导入完成之前验证导入的范围。
执行后管理作业 manage-jobs-after-execution
Experience Manager允许您查看批量导入作业的历史记录。 作业历史记录包括作业的状态、作业创建者、日志以及其他详细信息,如开始日期和时间、创建日期和时间以及完成日期和时间。 此历史记录提供了完整的审核跟踪,管理员可以跟踪、排除故障并验证每个批量导入操作。
查看批量导入配置的作业历史记录 viewing-job-history
通过 作业历史记录 视图,可以查看特定批量导入配置的执行记录,从而了解过去的导入运行及其结果。 要访问配置的作业历史记录,请执行以下操作:
- 选择要复查其历史记录的配置。
- 单击作业历史记录。
- 从列表中选择特定作业。
- 单击 打开 查看该作业的完整详细信息。
Adobe Experience Manager显示作业历史记录,允许您检查每个记录的批量导入作业的状态和结果。 查看此历史记录对于确认导入是否成功完成以及对于解决任何未按预期完成的作业非常有用。
在“批量导入作业历史记录”页面上,您还可以单击 删除 以将该特定批量导入作业从配置中删除。 删除作业会将其记录从批量导入配置的作业历史记录中删除,这有助于保持历史记录列表整洁并重点关注相关运行。
使用桌面客户端上传资源 upload-assets-desktop-clients
除Web浏览器用户界面(UI)外,Adobe Experience Manager还支持用于上传资产的两个桌面客户端:Adobe Asset Link和Experience Manager桌面应用程序。 两个桌面客户端都支持在不打开Web浏览器的情况下直接上传资产。
- Adobe Asset Link允许从Adobe Photoshop、Adobe Illustrator和 Adobe InDesign 桌面应用程序直接访问Experience Manager资源。 您无需离开Photoshop、Illustrator或InDesign,即可直接从Adobe Asset Link界面将当前打开的文档上传到Experience Manager。
- Experience Manager桌面应用程序可简化桌面上的资源管理,而不管文件类型或处理每个资源的本机应用程序如何。 桌面应用程序是从本地文件系统上传 嵌套文件夹层次结构 中文件的首选客户端,因为浏览器上传仅支持平面文件列表。 因此,当保留文件夹结构很重要时,Experience Manager桌面应用程序只需一次操作即可上传整个层次结构,而浏览器需要先拼合文件。
上传时处理资源 process-when-uploaded
在上传文件夹上应用 处理配置文件 以对上传的资源执行其他处理。 这些配置文件位于Assets中文件夹的 属性 页面上,它们控制每个资产在添加到文件夹后如何进行转换。
扩展名不正确或扩展名不正确的数字资产无法按需要处理。 因此,在上传此类资产时,不会发生任何情况,或者处理配置文件可能不正确,因为系统依赖文件扩展名选择正确的配置文件。 即使正确的配置文件未自动运行,用户仍可以将二进制文件存储在数字资产管理(DAM)存储库中。
可以使用以下选项卡:
此外,如果在您的部署中启用了Dynamic Media,则可以使用以下附加选项卡:
- Dynamic Media图像配置文件将特定的裁剪(智能裁剪和像素裁剪)和锐化配置应用于上传的资源。
- Dynamic Media视频配置文件应用特定的视频编码配置文件,包括分辨率、格式和参数。
对于已分配处理配置文件的文件夹,配置文件名称会显示在卡片视图的缩略图上。 在列表视图中,配置文件名称显示在 处理配置文件 列中。
使用API上传或摄取资源 upload-using-apis
开发人员参考的资产上传部分提供了上传API和协议的完整技术详细信息,以及指向开源软件开发工具包(SDK)和示例客户端的链接。 通过这些应用程序接口(API),开发人员能够以编程方式上传或摄取资产,从而实现自动化且可重复的工作流,而不是手动上传。 开源SDK和示例客户端通过提供现成的参考实现来加速集成,这些实现演示上传协议在实践中的工作方式。
资产上传安全性和最佳实践 asset-upload-security-and-best-practices
资产上传安全性控制如何验证、扫描、存储和服务用户或系统提交的文件,保护应用程序免受恶意内容、数据损坏以及存储或带宽滥用的侵害。 保护上传管道被广泛视为至关重要,因为不受限制或验证不佳的上传是注入恶意软件、执行未经授权的代码和耗尽服务器资源的最常见因素之一。
核心上传安全控制 core-upload-security-controls
有效的资产上传安全性依赖于在上传生命周期的每个阶段应用的分层控件。 关键控件包括:
- 文件类型验证 — 验证每个上载是否包含允许的格式,而不是格式的explicit允许列表,因为格式要绕过并防止伪装的可执行文件内容跳过会困难得多。
- 文件大小限制 — 强制实施最大大小阈值,以防止由于超大上载而导致的拒绝服务条件,该上载可能会耗尽磁盘空间或内存。
- 内容检查 — 检查实际的文件签名(幻字节),而不是信任文件扩展名或客户端提供的MIME(多用途Internet邮件扩展名)类型,因为攻击者经常伪造扩展名以掩饰有害文件。
- 恶意软件扫描 — 通过防病毒或恶意软件扫描运行上传的资产,然后再使其可用,确保隔离受感染的文件,而不是将其分发给其他用户。
- 文件名清理 — 从文件名中删除或标准化特殊字符、路径分隔符和控制序列,以防止路径遍历和目录转义攻击。
推荐的最佳实践 recommended-best-practices
依次应用这些最佳实践以加强上载工作流:
- 在服务器上进行验证 — 将所有客户端验证仅视为建议验证,并强制在服务器端执行每个检查,因为恶意操作者可能会绕过客户端控件。
- 将资源存储在Web根目录之外 — 将上载的文件保留在Web服务器无法直接执行的位置,这样可防止攻击者将上载的脚本作为代码运行。
- 重命名上载的文件 — 将服务器生成的不可预测的标识符分配给存储的文件,以避免覆盖现有资源并防止枚举存储内容。
- 限制权限 — 授予已上载文件所需的最低读写权限,并且绝不将其标记为可执行文件,从而确保受危害的文件无法运行。
- 验证并授权上传 — 确认请求用户有权限上传,这将限制匿名滥用和未经授权的提交。
- 速率限制和限制 — 应用每个用户或每个会话的上传速率限制以降低自动滥用和资源耗尽的风险。
上传后的处理和存储 handling-and-storage-after-upload
接受文件后,安全责任将继续执行。 要在存储和交付期间保护资产,请执行以下操作:
- 通过加密连接提供资产 — 通过HTTPS(超文本传输协议安全)提供上传的内容,这样文件在传输过程中就无法被拦截或篡改。
- 隔离用户生成的内容 — 从单独的域或专用的 内容交付网络(CDN) 提供不受信任的上传,因为隔离此内容会限制跨站点脚本和Cookie窃取攻击的影响。
- 设置正确的响应标头 — 返回准确的
Content-Type标头并在适当时强制下载,这样浏览器就不会误解和执行存储的文件。 - 日志和审核上传 — 记录上传元数据和访问事件,这支持事件调查并帮助及早发现滥用模式。
按照这些控制和最佳实践,建立了深入防护的资产上传方法,降低了单个未通过检查会导致全面妥协的风险。
使用预签名URL直接二进制上传 direct-binary-upload
Adobe Experience Manager (AEM)作为Cloud Service,通过 直接二进制上传 流程上传资源,此流程分三步:(1)客户端请求预签名的URL,(2)使用该URL直接将二进制上传到存储,以及(3)通过经过身份验证的API调用最终完成资源。 此设计可将大型二进制传输直接卸载到存储中,同时使资产注册处于经过身份验证的控制之下。
URL生命周期和重用 url-lifetime-and-reuse
- 预签名URL的生命周期较短,大约在1小时内有效。 但是,确切的 生存时间(TTL) 不是已发布或保证的Service level agreement (SLA)。 将持续时间视为可以更改的实施详细信息,并且不会将该值硬编码为集成。
- 预签名URL必须立即用作单个上载会话的一部分。 此函数不适用于以后存储和重用,也不打算在多个上载中重复使用。 每个上载会话都获取自己的URL。
预签名URL的安全性 security-of-presigned-urls
- 仅泄露预签名URL并不足以创建资产,因为资产的创建和完成依赖于使用有效凭据的单独身份验证API调用和
uploadToken。 如果操作者仅获取预签名的URL,则在没有有效身份验证和相关上载令牌的情况下,该操作者无法完成资产注册。 - 此身份验证要求限制了泄露URL的实际影响:所需的凭据和
uploadToken充当第二个控件,因此URL本身曝光不允许注册未经授权的资产。 - 在您自己的集成中,将预签名的URL视为敏感值。 避免记录它们,始终使用HTTPS,并且在上传会话之后不再保留它们。
用于程序化上传的身份验证 authentication-for-programmatic-uploads
只有 服务凭据(JWT) 支持将程序化资源上传到Adobe Experience Manager (AEM)。 AEM API访问存在两种身份验证机制,对于资源上传操作,它们不可互换。 选择错误的凭据类型是上传集成失败的最常见原因。
用于API上载的技术帐户必须在路径级别授予显式存储库级别的访问控制列表(ACL)。 需要两个ACL权限:
/content/dam上的jcr:read— 授予对数字资产管理(DAM)内容根的读取访问权限。- 特定目标子文件夹上的
rep:write(或jcr:all) — 授予对上传资产的目标路径的写入权限。
除了正确的凭据类型和正确的管理员控制台产品配置文件或组成员资格之外,这些路径级ACL还需要。
技术帐户可以被正确许可和分组,并且仍然收到 403 Forbidden 错误。 发生这种情况是因为产品配置文件或组分配以及存储库ACL是独立的控件,而两者都是必需的。 因此,如果尚未授予路径级别ACL,那么即使已正确配置帐户的凭据类型和产品配置文件,该帐户也会被拒绝访问。
恶意软件检测和隔离 malware-detection-and-quarantine
Adobe Experience Manager (AEM)中的 恶意软件检测 扫描每个上载的文件,并将任何感染病毒的文件移动到专用的 隔离 区域,将可疑资产与存储库的其余部分隔离。 启用 恶意软件检测 后,系统将在每次上传到达时扫描它,并在检测到感染时自动隔离该文件。 这样可将威胁与活动工作流隔离,并防止将受感染的资产发布、下载或分发给其他用户。
对隔离资产的访问受 标准Adobe Experience Manager (AEM)权限 控制,这些权限通过专用的 隔离管理员 组应用。 由于隔离可见性不绑定到单个固定角色,因此可以灵活地扩展访问:
- 默认情况下,隔离管理员组成员拥有对隔离资产的访问权限。
- 当操作或安全要求需要更广泛的监督时,可以授予 其他自定义组 访问隔离区的权限。
- 因此,多个组可以同时保持隔离可见性,而不是将功能限制为一个角色。
此权限模型可确保只有授权用户可以检查、发布或移除隔离的内容,从而保持对潜在有害文件的受控审查过程。
有关恶意软件检测和隔离的详细信息,请参阅恶意软件检测。
文件类型处理和上传限制 file-type-handling-and-upload-restrictions
- Adobe Experience Manager (AEM)未对上载强制实施默认文件类型限制。 可以上载扩展名为可执行文件(例如,.exe或.exe.pdf)的文件作为资产演绎版。
- 这是预期行为,而不是漏洞。 AEM不会在浏览器或服务器上呈现或执行上载的活动内容或脚本。 由于上传的文件仅作为惰性资产演绎版存储和提供,而不是作为代码执行,因此在AEM的默认安全模型下,上传可执行文件本身不会创建 远程代码执行(RCE) 风险。 如果需要,合规性要求较严格的组织应应用自己的上载验证或允许列表,因为AEM不会在本机强制实施此验证并将此类控制留待部署组织使用。
- 资产处理支持的文件格式和MIME(多用途Internet邮件扩展)类型单独进行文档记录。 不支持的类型未完全处理,这意味着此类不支持的文件可能无法生成预期的演绎版。
上传可靠性最佳实践 upload-reliability-best-practices
上传前优化资产 optimize-assets-before-upload
- 对于大型或专用资源类型,如视频、PDF和GIF,请遵循推荐的文件大小限制、编码设置和首选格式。 遵守这些规范可以防止在上传、处理和预览生成期间影响平台性能,因为超大文件或非标准文件会在转码和缩略图生成步骤中施加最大负载。
将受支持的上传路径用于业务关键型文件 use-supported-upload-paths
- 将受支持的上传API或UI流用于业务关键型文件,而不是临时文件夹级别的批量上传。 支持的路径应用一致的验证、编码和错误处理,这使得它们成为无法容忍损坏或丢失的文件的更可靠选择。
- 文件夹级别的拖放上传偶尔会导致每个报告案例的文件损坏。 因此,不建议对关键资产使用这两个量度。
如果文件夹级别上载失败或文件损坏 folder-level-upload-fails
立即捕获证据,因为根本原因通常是环境特定的或文件特定的,一旦证据丢失,在事后就难以诊断。
- 一旦发生错误消息或观察到的行为,请立即将其记录下来。
- 拍摄失败状态和任何错误对话框的屏幕截图。
- 保存浏览器会话中的HTTP存档(HAR)文件或网络日志,因为这些日志捕获了跟踪故障所需的请求/响应详细信息。
- 保留受影响的文件,以便根据受支持的上传路径重新测试该文件。
立即捕获此证据可为支持和工程团队提供重现和解决问题所需的环境和文件特定的详细信息,而在事后尝试诊断损坏(没有日志或原始错误)通常是不切实际的。
上载失败疑难解答核对清单 troubleshooting-checklist-for-upload-failures
-
403禁止在API(应用程序编程接口)上载:首先确认凭据类型。 资源上传API不支持来自Adobe Developer Console的OAuth S2S (服务器到服务器)凭据。 请改用从Adobe Experience Manager (AEM)开发人员控制台颁发的服务凭据(JSON Web令牌或JWT)。 这两个凭据类型通过不同的控制台进行设置并授予不同的范围,这就是为什么将一个凭据类型替换为另一个凭据类型会生成403 Forbidden,即使帐户在其他情况下看起来有效。
-
403已禁止,尽管凭据和组成员身份正确:确认技术帐户在
/content/dam上拥有明确的jcr:read,在特定目标文件夹上拥有rep:write/jcr:all。 组或配置文件成员资格不能代替文件夹级别的访问控制列表(ACL),因为AEM在存储库节点级别而不是仅按角色授权资源写入。 因此,在精确的目标文件夹上设置节点级ACL之前,帐户可以属于正确的组,但仍会被拒绝。 -
上传成功,但资产无法显示或二进制文件似乎已损坏:排除将文件夹级别的批量上传作为摄取方法。 通过标准上传API或用户界面(UI)重试,如果问题仍然存在,请捕获日志。 批量摄取路径处理二进制文件的方式与标准API不同,因此隔离摄取方法是确定损坏是否源于上传路径本身的最快方法。
-
安全审查标记不受限制的文件上传:明确说明AEM默认不执行上传的活动内容服务器端或浏览器中的活动。 由于内容永远不会执行,因此无限制文件上传是预期的平台行为,而不是缺陷 — 当内容无法运行时,存储活动内容的主要风险会被抵消。 除非您的组织需要额外的上传时间验证,否则此操作有效,在此情况下,应在默认行为的基础上添加验证作为策略控制。
-
担心预签名URL泄露:预签名URL是时间限制、预授权的链接,用于直接将二进制文件传输到存储。 确认该URL已在其短的有效期内使用,并且资产最终确定仍需要单独的经过身份验证的调用,其中带有有效的
uploadToken。 此两步设计限制了泄漏的预签名URL(统一资源定位器)的暴露范围,因为仅拥有该URL便无法在没有经过单独身份验证的有效uploadToken的情况下完成资产。 因此,有效窗口关闭后泄露的URL没有实际写入能力。
提示、最佳实践和限制 tips-limitations
-
直接二进制上传是一种上传资产的新方法。 产品功能和客户端默认支持该功能,包括Experience Manager用户界面、Adobe Asset Link和Experience Manager桌面应用程序。 客户的技术团队自定义或扩展的任何自定义代码都必须使用新的上传应用程序编程接口(API)和协议。
-
大型文件夹处理: Experience Manager Assets支持包含1000多个直接子文件夹(资源或子文件夹)。 一旦文件夹超过此1000项阈值,管理员UI将切换到异步更新的索引以列出文件夹内容。 由于此索引是异步更新的,新创建的文件夹和资产会在短暂的延迟后显示,通常只有几秒。 在Admin View中打开此类文件夹时,横幅会将此行为通知最终用户,并声明如下:“此目录包含1000多个项目。 上传和新文件夹创建可能会延迟。”
-
替换和资产ID重新生成:当您在名称冲突对话框中选择 替换 时,将为新资产重新生成资产ID。 此ID与上一个资源的ID不同。 如果启用了Assets Insights以通过Adobe Analytics跟踪展示次数或点击次数,则重新生成的资源ID会使在Analytics上为资源捕获的数据无效,因为Analytics会根据原始资源ID跟踪展示次数和点击次数,并且无法将新ID与之前的记录协调。
-
文件名中禁止使用的字符:某些上传方法不会阻止用户上传文件名中包含禁止使用的字符的资产。 在这些情况下,禁止使用的字符将替换为
-符号。 -
浏览器上载限制:使用浏览器上载资产仅支持平面文件列表,不支持嵌套文件夹层次结构。 要上传嵌套文件夹内的所有资产,请使用桌面应用程序,该应用程序在传输期间保留文件夹结构。
-
批量导入文件夹结构:批量导入方法导入整个文件夹结构,因为它存在于数据源中。 但是,只有非空文件夹在Experience Manager中创建,这意味着导入的层次结构中省略了源上的空文件夹。
另请参阅