安全审查(4)提交审查

学习目标

完成本单元后,您将能够:

  • 解释您的产品何时需要安全审查。
  • 列出您需要提交的安全审查材料。
  • 解释如何开始安全审查提交过程。
  • 描述安全审查提交过程。

知道何时需要评论

安全审查过程至关重要,但不一定非常痛苦。我们希望让它变得舒适和熟悉。我们希望它没有什么大不了的。

您知道,在AppExchange上启动产品之前,您的产品需要经过安全审查。但是每天都会出现新的威胁。因此,Salesforce产品安全团队可以随时要求您审核您的产品,即使该产品已获得批准。通常,AppExchange产品每年进行一次安全审核。

这里有个好消息:每次发布新版本的产品时,您都不需要通过安全审查。只需按照本单元中的同一提交流程进行操作即可自动重新批准。

组装你的材料

您提供给产品安全团队的内容取决于您的产品架构。审查你的产品的人们需要新客户使用它的一切。毕竟,他们伪装成有权访问正在运行的实例的攻击者。因此,请提供对您的应用使用的任何环境,软件包和外部组件的访问权限,并包括产品随附的任何文档。

产品安全团队也想知道你已经完成了作业。包括从您在产品上运行的扫描仪中获得的报告,以及任何误报的解释。

以下是安全团队需要的内容:

所需材料 AppCloud 带闪电组件的AppCloud 具有外部网络应用/服务的应用 与原生移动客户端的应用 仅限API
Lightning平台开发版组织 X X X X X
登录,外部组件的URL X X X
托管软件包 X X X X X
Checkmarx 报告 X X X X X
Chimera/ZAP 报告 X X X
误报文件(s) X X X X X
产品文档 X X X X X

在您请求安全审查之前:

  • 为您的产品创建一个列表,并上传您的托管软件包。
  • 与Salesforce创建分销协议。请联系您的合作伙伴客户经理获取帮助。

 

提交给向导

Salesforce产品安全团队知道他们要求你很多。所以他们创建了方便的安全评估向导来帮助您提交一切。

开始评论

Partner Community landing page with Publishing Console

从合作伙伴社区的发布控制台开始安全审查提交流程。

  1. 在发布控制台中,单击“Listings ”选项卡。
  2. 点击您的产品列表。
  3. 点击 App.
    App tab on Listings page
  4. 在软件包的名称和版本号下,单击开始审阅。该向导的第1步显示一个页面,其中显示了安全审查的概述以及要为其准备的项目。当你准备开始输入信息时点击下一步。
    Wizard step 1 screen: preparation

提供公司信息

在安全审查向导的步骤2和3中,告诉安全团队您的公司。

  1. 在步骤2屏幕上,为Salesforce安全团队可以联系问题的人员提供联系信息。
    Wizard step 2 screen: general information
  2. 点击 Save & Next.
  3. 在步骤3屏幕上,如果您的公司有书面安全策略,请选中顶部框。上传该政策的副本,并提供贵公司联系人的信息。
  4. 如果您的公司有任何相关的安全认证,请检查底部框,并包括有关这些认证的详细信息。
  5. 点击 Save & Next.
Wizard step 3 screen: policies and certifications

定义应用程序组件

在向导的第4步中,向我们介绍应用中的所有组件和服务以及它们的位置。

  1. 在步骤4屏幕上,如果您的产品使用任何Lightning Platform组件,请检查第一个框。
  2. 选择Managed Packages因为我们仅允许AppExchange上的托管软件包。
    Wizard step 4 screen: managed packages
  3. 在“使用的技术”部分(1)中,检查Apex和Visualforce是否使用它们。我们不再支持S-Controls,因此请确保您没有使用它们。如果您使用这些技术在Salesforce之外使用了任何API,请在文本框中列出它们。
    Wizard step 4 screen: technologies used
  4. 在下一节(2)中,如果您的产品包含移动或桌面客户端,请选中该框。在文本框中列出这些客户端使用的任何外部API
  5. 在接下来的两节中,如果您的产品实现了Database.com API(3)或Lightning Platform API(4),请选中相应的框。
  6. 在(5)下方,如果您的产品包含一个或多个移动网络应用程序,请选中该框。列出这些应用程序在文本框中使用的任何API。
    • 对于iOS客户端,请提供指向您的AppStore列表的链接。如果您的应用程序未在此处列出,请使用TestFlight for iOS并向srops@salesforce.com发送邀请。
    • 对于Android客户端,请提供指向您Google Play商品详情的链接。如果您还没有在那里列出您的应用程序,请链接到必要的SDK文件。
  7. 在下一节(6)中,如果您的产品包含网络应用程序或服务,请选中该框。选中您使用的任何平台和编程语言旁边的复选框,并列出您的产品存储的任何凭证。指出您的产品是否使用我们的单点登录服务。
    Wizard step 4 screen: frameworks, languages, web apps, services
  8. 在接下来的两个部分(7和8)中,选中表示您的产品是否有任何客户端或移动应用程序的框。
    Wizard step 4 screen: client and mobile apps
  9. 点击 Save.

提供测试环境

在向导的第5步中,为您的Lightning Platform组织和任何外部组件或服务提供凭据。

  1. 为您的Lightning Platform生产组织输入用户名和密码。确保它是一个启用了Locker Service的开发版组织。点击添加。该表格通过登录到组织来验证这些信息。
    Wizard step 5 screen: test environments
  2. 为您的产品使用的每个网络应用或服务输入凭据和URL,点击添加以验证每个应用或服务。对于网络应用程序,请从选取列表中选择适当的身份验证形式。
    Wizard step 5 screen: test environment credentials
  3. 对于您的产品包含的每个桌面客户端,请输入用于安装的链接以及任何凭据,许可证文件和配置数据。完成输入后,点击添加。
  4. 对于您的每个产品的移动应用程序,请提供平台,安装文件或链接以及任何其他有用的信息。点击每个之后的添加。

上传扫描仪报告

你快完成了!在向导的第6步中,向安全团队提供由您在产品上运行的扫描仪生成的报告以及任何相关文档。

Wizard step 6 screen: reports
  1. 在“Lightning Platform Security Code扫描仪报告”中(1)附上您从Checkmarx获得的报告。不要选中说你运行报告的方框 – 我们希望看到你的健康状况良好。它给了我们温暖和模糊的感觉。
  2. 如果Checkmarx报告有误报,请附上一份文件解释每一项。
  3. 如果您正在使用外部服务,那意味着您使用ZAP或奇美拉来扫描它们。在“其他报告或文件”(2)中提供来自这些工具的任何报告。将报告和相关文档捆绑到一个存档中并在此处上传。如果ZAP没有报告问题,我们要求您证明您已经测试了正确的外部端点。通过包含扫描该端点的每个工具的屏幕截图来执行此操作。
  4. 点击 Save & Next.

准备好信用卡

经过第7步的简要回顾后,我们要求您在向导的第8步中支付安全审查费用。对于您在AppExchange上销售的每种产品,我们都会要求2700美元的安装费用。这需要审查本身和您的第一笔150美元的AppExchange费用。如果您的产品是免费的,我们会放弃安全审查费用。

最后,您需要与Salesforce达成分销协议。如果您还没有,请在审核前联系您的合作伙伴客户经理。

你全部设置!

恭喜你,你做到了!深呼吸,做一些延伸。也许走一走。如果您的提交中缺少任何内容,安全审查团队将与您联系。一切就绪后,您会收到一封电子邮件,确认您的产品符合安全审核要求。

产品通常需要6到8周才能完成审核流程。产品安全团队完成后,他们会向您发送一份报告,列出他们发现的任何问题。如果他们发现没有错,他们会批准你的产品。真厉害!

接下来发生什么?继续找出。

安全审查(3)准备

学习目标

完成本单元后,您将能够:

  • 解释安全审查的目的。
  • 概述安全审查过程中发生的情况。
  • 总结安全审查的范围。
  • 列出可帮助您为安全审查做准备的工具。
  • 描述哪些扫描仪可以或不可以为您做什么。

了解未来

现在你已经将OWASP列表书签了。也许您的团队甚至采用了开发安全Web应用程序跟踪。您已经以一种全面保护其数据的方式设计了您的应用程序,并且您正在通过遵循安全编码实践来构建您的应用程序。

您知道安全审查流程正在等待您的产品,并且您知道无法通过AppExchange启动您的产品。但究竟是什么安全审查呢?

在安全的环境中测试你的防御

你不会声称你的应用程序中的某个功能没有经过测试就能正常工作,对吗?当然不是。

您的应用程序最重要的功能之一是保护客户数据。在Salesforce,我们相信这个功能非常重要,我们可以帮助您测试它​​。

在安全审查中,我们的产品安全团队会针对OWASP列表中描述的攻击来测试您的产品的防御措施。我们的测试人员戴上了防盗面具,并试图在持续数小时的密集会议中闯入您的应用。他们的任务是窃取他们无权访问的数据。

如果在首先你不成功…

如果我们的团队成功从您的应用中提取数据,他们会向您发送一份报告,列出他们利用的漏洞。您可以使用这些信息来强化您的应用,然后再次通过安全审查。我们在后面的单元中详细解释这个过程。虽然这不是有史以来最好玩的,但它比盗窃真实客户数据要好得多。

像任何测试方案一样,安全审查并不全面。它并没有涵盖所有可能的漏洞,并且通过审查并不是一个铁定的保证你的应用程序是完全安全的。但正如测试您的产品使您对其质量更加自信一样,安全评估为您提供重要反馈以加强产品的防御能力。没有保证产品安全的事情,但通过我们安全审查的应用程序非常接近。

我们回顾整个事情

也许你的应用程序是本机应用程序,只能在Salesforce平台上运行。或者,也许它是一个复合应用程序,具有位于云中或公司服务器上其他位置的架构组件或服务。外部托管的作品必须与其他作品一样安全。否则,攻击者可以使用它们作为入口点,就像窃贼可以使用通风管一样。无论您身在何处,您的应用程序的所有组件和服务都是安全审查的公平游戏。

以下是一些典型的应用程序体系结构以及各个部分的位置。

App体系结构 什么生活在哪里
AppCloud Off Platform Native Mobile App
100%原生 自定义对象

自定义闪电组件

自定义Apex代码

与外部服务的复合解决方案 自定义对象

Apex 码

在另一个平台(如AWS或Rackspace)上托管的服务(如地图)
使用移动应用程序的复合解 自定义对象

Apex代码

工作流程

适用于iOS和Android的原生应用程序
纯API的解决方案 已连接的应用 读取和写入AppCloud上托管的数据的独立应用程序。例如,与帐户和机会交互的会计解决方案
闪电Bolt

闪电组件

Apex 代码

爱因斯坦分析应用程序 应用

仪表板

镜头

数据集

数据流

自定义对象

产品安全团队试图攻击所有这些部分,而不仅仅是Salesforce平台上的那些部分。它深入挖掘并随处处理您的数据。相应地计划!例如,本地移动应用可以提供良好的用户体验,但是需要额外的工作来保护它们,具体取决于您将它们放在一起的方式。

带来一切表

当您提交您的应用程序进行审查时,请确保您提供完整的测试设置和使用它的说明。此设置必须包含启用LockerService的开发版组织。

如果您的解决方案包含原生移动应用,请为其添加安装链接。如果您要集成基于Web的外部帐户服务,请设置托管该实例的实例。

使用扫描仪进行您自己的评论

如果这个安全审查过程听起来有点可怕,不要担心。我们希望像AppExchange一样在AppExchange上查看您的产品,并且我们随时为您提供帮助。除了我们提到的资源外,我们还提供您的团队可以在您的产品上使用的扫描仪,为审核做准备。

这些扫描程序会针对特定的漏洞模式扫描您的应用程序扫描仪甚至在开发过程的早期派上用场。我们支持其中三个:

Scanner 描述 使用If
Checkmarx 扫描Salesforce AppCloud上托管的应用程序。 您的解决方案具有Apex代码,Visualforce元素和托管软件包。换句话说,总是使用Checkmarx。
Chimera 将最佳的开源扫描技术集成到一项服务中。以一个由几个动物中最强壮的部分组成的神话野兽命名。由Heroku提供支持。 您的解决方案的某些部分位于您控制的另一个平台上。
ZAP 由OWASP创建的免费在线扫描器。需要在本地系统上安装。 部分解决方案部署在您无法控制的域上。

这些扫描程序会生成包含他们在您的产品中找到的所有漏洞的报告。当然,他们找不到所有的漏洞。

误报

有时候扫描仪会发现一个并非真正问题的问题。例如,扫描程序会找到您已受保护的漏洞模式,并且无法识别您的保护方法。我们称这些错误为误报。

假设您添加了一些代码以防止恶意SQL查询,并且扫描程序无法识别您的代码是否解决了此漏洞。它报告了一个SQL注入漏洞。您可以将该报告解读为误报。

如果您认为错误是误报,请准备一份说明原因的文档,并将其与安全评估材料一起包含在内。具体说明你如何抵御所指出的漏洞。如果我们不必追逐你并让你解释给我们,它可以节省每个人的时间。

如何解读扫描仪报告

由于三台扫描仪具有不同的作者并在不同的平台上运行,因此会生成不同的报告。此表格显示如何响应每个报告的内容。

Scanner 修复 忽略
Checkmarx 任何分类为低,中或高的错误。 信息警告。
Chimera 所有错误,除了误报。 您确定的低严重性警告是误报;解释为什么在您的审查材料的文件。
ZAP 除了下一列中列出的所有错误。一旦错误得到解决,请使用您的评论材料提供扫描截图,以确认正在扫描正确的外部端点。 这些问题,你可以减轻,但你并不需要修复。一定要记录任何其他的误报。

尝试破解你自己的应用程序

扫描仪是伟大的,但没有人类智慧的替代品。在你解决了所有你所知道的安全问题后,试着再找一些!储存在黑色T恤和含糖苏打水上,并将你的测试者转化为黑客。

与团队的安全倡导者一起,制定对抗性测试计划,或攻击自己的产品并试图窃取其数据。 OWASP测试指南是一个很好的资源。

给测试黑客一个运行的应用程序实例,让他们放松一下任务,以获得对客户或系统数据的未经授权的访问。为成功的攻击提供奖品。

敌对测试可以产生一些令人惊讶的结果。你可能会发现自己在思考:“我可以发誓我们修正了这个问题!”或想知道你的队友如何擅长黑客攻击。请记住,被黑客入侵比替代方案要好得多。

在下一个单元中,我们逐步完成提交过程。

安全审查(2)安全战略

学习目标

完成本单元后,您将能够:

  • 确定你的团队中谁负责安全。
  • 列出将帮助您学习开发安全软件的资源。
  • 描述在开发产品时何时考虑安全性。

安全需要所有权

贵公司有关谁可以访问哪些信息的规则。当你今天来工作时,也许你使用钥匙或徽章进入办公室。您可能知道邀请家人和供应商参观的程序。希望你不会经常目睹整个陌生人在周围徘徊,但如果发生了,你就知道该怎么办了!

具体人员负责制定和执行这些规则。有时候甚至有一位负责人像首席安全官那样拥有一个特别的头衔。那个人一直在想你公司信息的安全性。

谁拥有产品的安全性?

您的应用或组件中的客户数据也需要保护,就像公司中的信息一样。你的开发团队是否有首席安全官?

诚然,安全是每个人的责任,但开发人员是忙碌的人,事情可能会因为准备好产品市场而忙碌。为确保安全仍然是重中之重,请考虑为您的团队任命安全倡导者。安全倡导者是您的团队的首席安全官,他们始终都在考虑产品的安全性。

学习编写安全代码

在让团队考虑安全性之后,下一步就是要了解有关构建安全软件的更多信息。有几种可用的资源,其中一些我们在最后一个单元中提到过:

资源 它提供什么
开放Web应用安全项目(OWASP)前10名列表 最常见的网络应用程序漏洞列表
CRUD和字段级安全 Salesforce中的记录级别和字段级别权限
Salesforce安全编码指南 安全审计中常见的一系列网络安全缺陷
Salesforce安全要求清单 技术和产品类型解释的问题

弄脏你的手

如果您真的想要安全编码的全面培训,请查看Develop Secure Web Apps踪迹。它提供了各种Web应用程序漏洞的详细说明和交互式示例。您还可以实时利用每个漏洞并修改源代码以防止它受到影响。

每个人都有责任

您的安全倡导者可以成为您团队的资源,但请记住,安全是每个人的责任。您的开发人员对这些问题越熟悉,他们在解决这些问题时就越好。

安全是关键功能,而不是附加组件

嘿,你正在编写的应用听起来很棒!尽管如此,世界在它启动之前不会看到它。什么时候准备好了?

没有人希望成为产品与其发布之间的一员。你的销售和营销团队不喜欢意外的延迟,他们不会让你忘记它。所以想象一下,如果您的发布日期因为Salesforce产品安全团队发现漏洞而被推回,那么情况会如何紧张。如果这是一个小问题,很容易解决。但是,如果由于基本的安全漏洞而必须回去改变设计,那么您将面临额外的工作,并可能导致很长的延迟。

考虑每个发展阶段的安全性

无论您使用什么方法编写软件,都要确保您的团队从一开始就考虑安全问题。在开发的每个阶段应用安全设计模式和编程实践,并测试您的应用程序是否受到攻击。在整个开发过程中,您可以采取以下几项措施来提高安全性:

  • 设计:最好的错误是你不必修复的错误。没有好的软件设计的替代品,安全的设计每天都会打败不安全的设计。请注意您希望用户如何与功能交互,并确保识别相关的漏洞。然后定义突出显示这些漏洞的特定用例。
  • 实施:如果您每天都有Scrum,请让您的安全倡导者与团队成员一起参与安全的编码策略。代码评论是讨论安全问题的另一个重要论坛。将安全编码指南纳入您的编码风格指南。 (你有一个风格指南,是吗?)
  • 测试:您需要一个特定的计划来测试您的产品的攻击漏洞。设计测试,以便它们具有可重复性,并在应用程序的整个开发过程中一致地应用它们。

要全面了解网络安全和测试,请查看OWASP测试指南。它可以帮助你把自己的计划放在一起。

保护整个产品

当我们谈论构建安全产品时,我们的意思是整个事情。 这包括生活在我们平台之外的部分,比如您在Salesforce之外托管的组件或服务。 别忘了将您可爱的原生移动应用包含在您的安全计划中。 他们也需要保护。

记得:

  • 攻击者只需要一个无人防守的入口点就可以毁掉你的一天。 还是一个月。 一致的安全策略可帮助您创建防弹产品。
  • 安全是每个人的责任,但您可以通过拥有安全拥护者来帮助您的团队记住它。
  • 您的团队可以使用我们提供的交互资源了解安全软件开发。
  • 每个发展阶段都有自己的安全考虑。

安全审查(2)安全战略

学习目标

完成本单元后,您将能够:

  • 确定你的团队中谁负责安全。
  • 列出将帮助您学习开发安全软件的资源。
  • 描述在开发产品时何时考虑安全性。

安全需要所有权

贵公司有关谁可以访问哪些信息的规则。当你今天来工作时,也许你使用钥匙或徽章进入办公室。您可能知道邀请家人和供应商参观的程序。希望你不会经常目睹整个陌生人在周围徘徊,但如果发生了,你就知道该怎么办了!

具体人员负责制定和执行这些规则。有时候甚至有一位负责人像首席安全官那样拥有一个特别的头衔。那个人一直在想你公司信息的安全性。

谁拥有产品的安全性?

您的应用或组件中的客户数据也需要保护,就像公司中的信息一样。你的开发团队是否有首席安全官?

诚然,安全是每个人的责任,但开发人员是忙碌的人,事情可能会因为准备好产品市场而忙碌。为确保安全仍然是重中之重,请考虑为您的团队任命安全倡导者。安全倡导者是您的团队的首席安全官,他们始终都在考虑产品的安全性。

学习编写安全代码

在让团队考虑安全性之后,下一步就是要了解有关构建安全软件的更多信息。有几种可用的资源,其中一些我们在最后一个单元中提到过:

资源 它提供什么
开放Web应用安全项目(OWASP)前10名列表 最常见的网络应用程序漏洞列表
CRUD和字段级安全 Salesforce中的记录级别和字段级别权限
Salesforce安全编码指南 安全审计中常见的一系列网络安全缺陷
Salesforce安全要求清单 技术和产品类型解释的问题

弄脏你的手

如果您真的想要安全编码的全面培训,请查看Develop Secure Web Apps踪迹。它提供了各种Web应用程序漏洞的详细说明和交互式示例。您还可以实时利用每个漏洞并修改源代码以防止它受到影响。

每个人都有责任

您的安全倡导者可以成为您团队的资源,但请记住,安全是每个人的责任。您的开发人员对这些问题越熟悉,他们在解决这些问题时就越好。

安全是关键功能,而不是附加组件

嘿,你正在编写的应用听起来很棒!尽管如此,世界在它启动之前不会看到它。什么时候准备好了?

没有人希望成为产品与其发布之间的一员。你的销售和营销团队不喜欢意外的延迟,他们不会让你忘记它。所以想象一下,如果您的发布日期因为Salesforce产品安全团队发现漏洞而被推回,那么情况会如何紧张。如果这是一个小问题,很容易解决。但是,如果由于基本的安全漏洞而必须回去改变设计,那么您将面临额外的工作,并可能导致很长的延迟。

考虑每个发展阶段的安全性

无论您使用什么方法编写软件,都要确保您的团队从一开始就考虑安全问题。在开发的每个阶段应用安全设计模式和编程实践,并测试您的应用程序是否受到攻击。在整个开发过程中,您可以采取以下几项措施来提高安全性:

  • 设计:最好的错误是你不必修复的错误。没有好的软件设计的替代品,安全的设计每天都会打败不安全的设计。请注意您希望用户如何与功能交互,并确保识别相关的漏洞。然后定义突出显示这些漏洞的特定用例。
  • 实施:如果您每天都有Scrum,请让您的安全倡导者与团队成员一起参与安全的编码策略。代码评论是讨论安全问题的另一个重要论坛。将安全编码指南纳入您的编码风格指南。 (你有一个风格指南,是吗?)
  • 测试:您需要一个特定的计划来测试您的产品的攻击漏洞。设计测试,以便它们具有可重复性,并在应用程序的整个开发过程中一致地应用它们。

要全面了解网络安全和测试,请查看OWASP测试指南。它可以帮助你把自己的计划放在一起。

保护整个产品

当我们谈论构建安全产品时,我们的意思是整个事情。 这包括生活在我们平台之外的部分,比如您在Salesforce之外托管的组件或服务。 别忘了将您可爱的原生移动应用包含在您的安全计划中。 他们也需要保护。

记得:

  • 攻击者只需要一个无人防守的入口点就可以毁掉你的一天。 还是一个月。 一致的安全策略可帮助您创建防弹产品。
  • 安全是每个人的责任,但您可以通过拥有安全拥护者来帮助您的团队记住它。
  • 您的团队可以使用我们提供的交互资源了解安全软件开发。
  • 每个发展阶段都有自己的安全考虑。

安全审查(1)理解安全性

学习目标

完成本单元后,您将能够:

  • 描述你的产品的安全性危害。
  • 解释安全审查的商业价值。
  • 描述最常见的网络漏洞。
  • 识别独特的Salesforce安全问题。

我们重视您的合作关系

作为Salesforce的AppExchange合作伙伴,您选择通过我们的平台进行创新,为我们的所有客户创造出优质的产品。您的创新激励着我们,您的合作关系对我们的持续成功至关重要。

在Salesforce,我们的最高优先级是我们客户的信任。正如Salesforce联合创始人兼技术执行副总裁Parker Harris所说:“对我们公司而言,没有什么比我们客户的隐私数据更重要。”信任需要安全。

互联网时代的安全

你有没有听到这个消息?黑客利用最新的安全漏洞成功攻击了一家大公司。成千上万的私人客户记录被盗,包括个人和财务信息。作为回应,该公司承诺为受影响的每个人支付3年的信用保护费用。你收到他们的来信吗?

每周我们都会听到这样的故事。也许你或你认识的人甚至收到了其中一家公司的来信。我们看到有关勒索软件危害医院病人或扰乱公共交通的新闻报道。攻击者窃取公司内部文件并将其出售给竞争对手。这些事件变得非常频繁,我们现在几乎期待他们。

根据Ponemon研究所的研究,不安全的软件每次事件的平均成本为400万美元。根据战略与国际研究中心(CSIS)的另一项调查,美国公司每年共同为网络犯罪损失1000亿美元。

Insecure software costs businesses a lot of money

没有安全,没有信任

这使我们重新回到了信任,Salesforce的头号价值。以前的数据意在考虑重建客户信任的间接成本,但信任本身很难量化。

Salesforce通过说服企业客户将其数据存储在云中来改变商业世界。起初这是一项艰难的销售,因为这些客户中有许多担心数据的安全性。但是经过多年的创新,建立客户的信任,并且一次又一次地成功,Salesforce证明了云计算是最好的商业平台。

在Salesforce,我们客户的成功就是我们的成功 – 而您的成功就是我们的成功。 Salesforce客户通过订阅模式购买我们的服务。如果他们不能相信我们和你 – 以保护他们的数据,他们没有理由坚持!

安全需要承诺

作为Salesforce合作伙伴,您有一个优势:您正在Salesforce平台上构建应用程序。我们在我们的平台中构建安全性,以便您不必从头开始。但是,我们依靠您使用该平台以保护客户数据的方式构建应用程序。为了帮助您,Salesforce安全团队在对AppExchange进行绿色照明之前,对所有产品进行严格审查。

对于我们的AppExchange合作伙伴来说,通过安全审查需要进行规划和努力,但收益非常可观。通过等级表明您对客户的承诺,并为您的产品增加真正的价值。客户知道AppExchange上的任何产品都可以为他们的数据提供最高级别的保护。

帮助我们帮助你

在Salesforce,我们为保护客户数据发挥的作用感到自豪。我们知道数据安全是团队努力。因此,我们为您提供实施安全所需的工具,您可以依靠它们来构建安全的产品。

学会识别和消除威胁

Salesforce安全审查侧重于应用程序对最常见攻击的漏洞。产品安全团队通过一系列这些攻击来触发您的应用。他们尽最大努力获得产品中宝贵的数据。如果他们不能入侵,你通过审查!

在本单元中,我们向您提供有关如何在AppExchange上列出的应用程序中毫发无损的内部信息。

十大网络安全威胁

开放式Web应用程序安全项目(OWASP)包含最常见Web攻击的综合列表。前三项是:

  • Injection: 查询将错误数据发送到系统以尝试造成损害。
  • Session hacking: 攻击者通过截取证书获得进入安全会话的入口。
  • Cross-site scripting: 应用程序将未验证的数据传递给Web浏览器,允许恶意代码运行。

要通过安全审查,您必须保护您的应用免受OWASP列表中的这些和其他攻击。使用该列表作为指导,在您的应用程序中开发最低级别的安全性。要了解有关这些恶意攻击的更多信息,请查看Develop Secure Web Apps踪迹。

特定于Salesforce的安全性

Salesforce平台的独特安全功能之一是CRUD / FLS:创建/读取/更新/删除和字段级安全。此功能(在此详细描述)决定谁可以访问单个组织中的单个对象和字段。由于CRUD / FLS与对象在应用中的交互方式有关,因此在设计应用时必须考虑它。

做对,没有人会注意到

花时间设计和开发出色的功能是很有意义的。你的销售人员肯定会重视这一努力,因为它使你的产品易于销售。当然,您的客户会欣赏这一努力,因为他们可以享受这些结果。

安全工作并不那么高调和富有魅力。尝试与客户讨论SSL或MD5哈希,并注视他们的眼睛。如果你喜欢为自己的工作获得赞誉,那么很难为加强产品安全性而感到兴奋。因为当你做好你的工作时,没有人注意到。

但不要让这阻止你。我们都知道,任何阻止攻击者的人都是超级英雄。您的客户可能永远不知道您投入了多少工作。但他们会感谢您为您的业务提供的服务 – 并向其他人推荐您的应用。这不是那些最好的赞美吗?

在下一个单元中,我们将向您介绍如何创建构建安全应用程序的计划。

应用程序部署(4)测试应用程序

学习目标

完成本单元后,您将能够:

  • 列出使用Apex时的测试覆盖率要求。
  • 描述创建AppExchange应用程序时要执行的特定测试。
  • 列出您的测试必须解决的安全漏洞类型,以通过安全审查。

测试和您的AppExchange应用程序

要明确,我们知道你知道测试的重要性。在本单元中,我们将探讨一些关于测试的特定于Salesforce的标准,更重要的是针对您的一些AppExchange测试需求。

Apex测试框架

Apex拥有内置的测试框架,这是任何开发人员的必备工具。 Salesforce还需要使用框架来确保没有代码占用其资源份额。

一个基本要求是您的测试必须至少覆盖包装中所有Apex代码的75%。不过,我们建议您尽可能接近100%覆盖率。您可以在Apex开发人员指南的Apex Testing Trailhead模块或了解Apex测试部分了解其他要求。每当你上传一个包时,所有的测试都会运行。如果即使一次测试失败,上传失败。

平台陷阱

有一些糟糕的编码习惯,你可以在单个组织中摆脱困境,但它们会导致AppExchange应用程序失败。一些最常见的“陷阱”是硬编码值的结果。特别是,从来没有硬编码:

  • 记录在整个组织中唯一的ID
  • 引用客户可以更改的值,如选取列表值或记录类型名称

还要考虑到你的客户可能正在使用平台加密。记录您在应用程序中依赖的标准对象的标准字段。如果您想支持使用平台加密的客户,请测试您的应用在这些字段是否加密时不会中断。然后,您可以将您的应用标记为支持AppExchange上的加密字段。查看我们的帮助和培训文档的平台加密部分了解更多信息。

日常测试

我们建议您采用每日合并所有代码的标准做法,以确保修改和添加不会破坏现有代码。

我们建议您设置一个源代码管理系统(1),开发人员可以在其中检查他们创建或修改的元数据文件。然后将源代码管理系统中的元数据每天推送到一个普通合作伙伴开发人员组织(2),并针对该应用运行自动化测试。

Diagram with developer orgs feeding to source control feeding to a single developer org
开发者组织将饲料供应给单一开发者组织的源控制
在开发任何一款软件时,请确保您的测试验证:

  • 您的Apex代码正常工作,通过所有测试并符合测试要求。
  • 您的自定义UI会按照您的预期显示和反应。
  • 您的业​​务逻辑符合要求,不会做任何额外的事情。

预发布包测试

由于您将应用分发给软件包中的客户,因此为AppExchange合作伙伴发布测试包括测试处于打包状态的应用。您希望确保软件包的安装正确,并且安装后所有功能都按预期工作。

一些组件,例如审批流程,无法打包。记录任何所需的配置或设置,并在作为测试的一部分时包括查看这些说明。

在您发布软件包的后续版本时,测试包括确保现有客户可以安装新版本的应用程序。验证新版本是否同时适用于新鲜组织和已安装以前版本的组织。

托管测试版 – 软件包

对于初始软件包测试,首先使用托管Beta版软件包。当您的应用程序处于测试版软件包中时,您可以进行任何类型的更改。

使用beta包的流程看起来像这样。

  1. 将来自源代码管理系统的更改推送到您的测试版包装组织。
  2. 创建托管测试版 – 包含您的应用的软件包。
  3. 上传软件包。
  4. 在测试组织中:
    1. 安装软件包并进行测试。
    2. 如果发现问题:
      1. 卸载测试组织中的软件包。
      2. 在测试版包装组织中更新您的应用,并在必要时编辑您的包裹内容
      3. 返回到第2步。
    3. 如果没有问题发生并且开发完成,是时候转向一个托管 – 发布的包。

请注意,在构建和测试周期中,您将卸载测试版软件包并在测试组织中安装新的测试版软件包。 Beta软件包不可升级,因此您无法将一个版本的Beta软件包安装在另一个版本上。有关更多信息,请参阅卸载软件包和安装软件包。

注意这个命名空间

打包应用程序后,请确保您检查了您是否正确使用了名称空间。应用程序中对组件的JavaScript引用不会自动使用程序包的名称空间进行更新。验证所有涉及JavaScript的自定义,无论是在Visualforce页面还是在Lightning组件(使用JavaScript)中,都仍然正常工作。

保证安全

在AppExchange上发布您的应用程序之前,它必须经过安全审查。在整个开发周期中解决安全问题,如需求清单中所述。

清单包括以下项目:

  • 您的代码尊重由组织的Salesforce管理员指定的字段级别和对象安全性。请特别关注此主题,因为它会导致在安全审查期间标记许多应用程序。
  • 您已编写JavaScript和HTML以防止跨站脚本攻击(XSS)攻击。
  • 在平台上传输数据和从平台传输数据以及将平台上的敏感信息(例如登录证书和客户数据)存储在外时,您已经实施了加密。

安全审查包括针对您的应用运行多个测试。您可以在提交应用程序之前运行一些测试。将它们合并到您的测试周期中。

包装和客户修改

当您上传您的软件包时,您可以设置客户组织必须满足的软件包和对象要求才能成功安装您的应用程序。如果您不知道在这里选择什么,请不要担心。它带有经验,而且风险很低 – 通常情况下,默认值都很好。

Screen with package requirements
Screen showing object requirements

一些值是基于你的软件包中的内容自动启用的。验证此列表是否具有适用于您的应用的正确值,以便在安装该软件包时不会发生错误。

例如,可以自动选择与Chatter相关的组件或社区。如果客户的组织禁用了这些功能,则尝试安装您的软件包失败。

托管 – 发布的软件包

当您认为您的应用在打包状态下无缺陷时,现在可以在您的测试版打包组织中创建托管 – 发布的软件包了。你如何创建一个发布的包?这只是您上传包装时的一个选项。

Screen with radio button to create Managed - Released package

然后通过一轮测试发送包裹。

现在是时候把它的应用程序包装在它的金色包裹里了

当一切都很好时,就该使用金色包裹组织了。

  1. 使用迁移工具将您的应用程序移至您的黄金包组织。
  2. 设置您的面向客户的名称空间。
  3. 打包你的组件。
  4. 创建您的托管 – 发布的软件包。
  5. 然后,是的,再做一轮测试。

完成所有工作后,现在是时候发送应用以进行安全审查。在您的应用程序通过安全审查后,该出售了。

概要

平台上的大多数测试都遵循标准的最佳实践。测试确定您已经:

  • 满足功能要求
  • 书面测试来验证你的代码
  • 解决了安全漏洞
在测试一个包时,请验证:

  • 外部代码正确引用名称空间
  • 安装说明
  • 包和对象要求

你做到了!您现在知道使用AppExchange合作伙伴工具开发应用程序的所有基本知识。出发。学到更多。写那个惊人的应用程序

应用程序部署(3)打包

学习目标

完成本单元后,您将能够:

  • 列出命名空间的关键功能。
  • 描述为AppExchange合作伙伴使用托管 – 发布的软件包的好处。
  • 描述安装Managed-Beta软件包与Managed-Released软件包的影响。

Package里有什么?

一个包是用于组件的容器,例如Java JAR文件或Ruby GEM,用于将应用程序分发给客户。它包含一组具有唯一名称空间的元数据。一个软件包可以包含像个别组件一样小或与一组相关应用程序一样大的东西。

Salesforce平台就其本质而言鼓励一种敏捷开发模型,在该模型中,您可以逐步进行测试,并随时调整设计。 Managed-Beta软件包支持这种测试和修改方法。

托管 – 发布的软件包用于实时产品。您的客户期望一个稳定的应用程序随着时间的推移而不断发展,而不会破坏他们在其之上构建的业务流程。托管 – 发布的软件包有助于确保您不会破坏客户的定制并为您的知识产权提供保护。

管理发布的软件包的优点

托管 – 发布的软件包提供:

  • Apex的知识产权保护
  • 内置对API可访问组件的版本支持
  • 能够分支和修补以前的版本
  • 能够无缝地将补丁和主要更新推送给订户
  • 所有组件的唯一命名以确保无冲突安装
  • 能够通过许可证控制用户访问

客户组织中的包生命周期

我们来看看您的应用程序的打包和分发生命周期。

  1. 您在托管 – 发布的软件包中发布您的应用的第1版。
  2. 客户安装包装。
  3. 客户定制您的应用程序。
  4. 您在托管 – 发布的软件包中发布您的应用的第2版。
  5. 客户在现有软件包的顶部安装新版本的软件包。

我们说一个托管 – 发布的软件包是可升级的,因为客户可以在他们现有的版本上安装新版本。非托管软件包(合作伙伴通常不使用)和托管 – Beta软件包不可升级。

Salesforce平台具有高度可定制性,您的客户可能会定制您的应用。当您发布新版本时,它们取决于应用程序的一定程度的一致性,以使其定制不会中断。

托管 – 发布的软件包具有内置的安全措施,可以最大限度地减少新版本的影响。例如,您不能删除已提供给客户或对象的Apex方法。有关更多详细信息,请参阅ISVforce指南中的“托管软件包中可用的组件”部分。

创建一个简单的应用程序来打包

我们将在此打破我们自己的规则,并在创建包的同一组织中设置一个简单的应用程序。您只能在合作伙伴开发版(PDE)或Developer Edition组织中创建软件包。因此,请使用我们在最后一个单元中创建的PDE组织。

让我们通过创建一个世界上最简单的应用程序来完成一些实践包装的步骤。我们将创建一个显示自定义对象的单页应用程序。

  1. 转到设置菜单。
  2. 在Lightning Platform主页上,单击 Add App.
  3. 如下填写App Quick Start页面。
    字段
    App Trail Tracker
    Label Trail
    Plural Label Trails
    Screen of app quick start
  4. 点击 Create.
  5. 点击 Go To My App

而已。让我们试试这个应用程序。

  1. 点击 New.
  2. 对于Trail名称,输入 AppExchange Partner Basics.
  3. 点击 Save.

您已经使用您的应用创建了一条记录。十分简单。

包和命名空间

对于所有AppExchange应用程序和一些OEM嵌入式应用程序,客户将您的应用程序安装在具有自定义设置的现有组织中。考虑以下情况。

  • 客户已经使用API​​名称Vendor__c创建了一个自定义对象。
  • 您的应用有一个API名称为Vendor__c的自定义对象。

将安装您的应用程序覆盖您的客户的对象?不,谢天谢地。命名空间将我们从命运中解救出来。

为了防止冲突,托管包总是有一个名称空间。命名空间在Salesforce中是唯一的,因此托管软件包的安装不会与客户和其他合作伙伴所做的自定义设置相冲突。

开发组织只能有一个名称空间。您只能使用该名称空间创建一个包,但可以对该包进行更新并发布新版本。

命名空间如何被添加到您的应用程序?

当您在组织中创建名称空间时,它将附加到组织中的每个组件。如果您在该组织中创建了一个包,则添加到包中的每个组件都随附该命名空间。以下自定义对象显示(1)组织具有命名空间TrailApp_Test1,以及(2)Trail对象的API名称是TrailApp_Test1__Trail__c。

Screen showing Namespace Prefix and API Name using namespace

但是,添加名称空间时,Salesforce不会更新非Salesforce工件,如JavaScript,其中包含对对象或字段的引用。您必须自己更新这些参考。

选择一个名字空间

因为名称空间是唯一的,所以首先为你的黄金包org选择名字空间。您的客户会看到您用于上传到AppExchange的包的名称空间。如果您的公司名称是AW Computing,则需要命名空间,如awc或awcomputing。

不要在您的测试版包装组织中使用该名称空间,因为那么它不适用于您的黄金包组织。

创建一个名字空间

让我们创建您的名称空间,以便您可以打包您的应用程序。

注意

Trailhead不支持命名空间组织,因此请确保您正在开发新版开发人员版或合作伙伴开发人员版组织。如果您在用于完成Trailhead挑战的组织中创建名称空间,那么您将无法使用它获得新徽章。

  1. 从安装程序中,在快速查找框中输入软件包,然后单击 Packages.
  2. 在页面的开发者设置部分,点击 Edit.
  3. 要确认您要设置命名空间,请单击 Continue.
  4. 为名称空间前缀输入一个值。请记住,不要使用稍后可能要使用的名称。
    Screen for setting up namespace
  5. 点击 Check Availability. 重复步骤4和5,直到找到可用的名称空间。
  6. 点击 New.
  7. 点击 Review My Selections.
  8. 点击 Save.

软件包和测试

使托管 – 发布的软件包成为销售和发布应用程序的最佳选择的因素也使得它成为测试的不好选择。将某些组件添加到托管包后,您无法修改它们。比方说,在开发应用程序时,您会创建四个自定义对象,Larry,Curly,Moe和John。当你去测试你的应用时,你决定约翰是不必要的。抱歉!如果对象John在您的托管 – 发布包中,则无法删除它。

为了解决这个问题,我们提供了Managed-Beta软件包。 Beta软件包的组件可在您的软件包组织中编辑,直到创建一个托管 – 已发布的软件包。

注意

您只能在沙箱或Developer Edition组织或通过环境中心创建的测试组织中安装测试版软件包。

创建一个Managed-Beta包

继续并按照以下步骤创建您的Managed-Beta软件包。
  1. 如果您不在软件包页面上,请从安装程序中,在快速查找框中输入软件包,然后单击 Packages.
  2. 在Packages部分中,单击 New.
  3. 对于Package Name,输入 Trail App.
  4. 选择托管复选框以启用该选项。出现提示时,单击 OK.
    Screen showing creating managed package
  5. 点击 Save.
  6. 在“组件”子选项卡中,单击 Add.
  7. 选择 Trail Tracker 应用程序,然后点击 Add to Package. 请注意,包中添加了几个相关组件。
  8. 点击 Back to Package List.
注意,默认情况下创建了一个托管 – 测试版包,正是我们想要的。
Beta版本不被视为主要版本,因此软件包版本号不会更改。

使您的软件包可用于安装

当你准备在另一个组织中安装你的软件包时,你需要上传它。
  1. 从软件包列表中单击您的软件包名称。
  2. 点击 Upload.
  3. 如下所示填写Package Details部分。
    字段
    Version Name Trail App Test 1
    Description 我通过构建应用程序创建了一个AppExchange合作伙伴跟踪的简单应用程序的测试版包。
    Screen for uploading a package
  4. 点击 Upload. 如果上传成功,您会收到包含安装URL的消息。
    Screen for package with installation URL
  5. 复制安装URL以用于安装软件包。
  6. 退出您的组织。

将您的软件包安装到测试组织中

  1. 将安装URL粘贴到浏览器中。
  2. 在出现的登录页面上,输入在单元2中创建的Trailhead Test组织的凭证。
  3. 在出现的页面上,点击 Install.
    Screen for installing package
  4. 点击 Done.
  5. 从应用程序菜单中选择您的应用程序,确认您的应用程序已安装。
    Force.com App menu with new app

概要

你现在知道关于软件包的基础知识。

  • 您必须在Partner Developer Edition或Developer Edition组织中创建软件包。
  • 要创建包,请选择一个唯一的名称空间。
  • 不要在测试组织上占用你的好名字空间,否则你会后悔的。
  • 在测试周期中使用Managed-Beta软件包,因为它很容易修改其内容。
  • 仅使用托管 – 发布的软件包进行最终测试。

恭喜,您拥有在开发周期中使用Managed-Beta软件包的所有技能。挑战让你多练习一下。

Flower icon used to indicate that the content is for Salesforce Classic

请记住,该模块适用于Salesforce Classic。当您启动动手组织时,请切换至Salesforce Classic以完成此挑战。

应用程序部署(3)打包

学习目标

完成本单元后,您将能够:

  • 列出命名空间的关键功能。
  • 描述为AppExchange合作伙伴使用托管 – 发布的软件包的好处。
  • 描述安装Managed-Beta软件包与Managed-Released软件包的影响。

Package里有什么?

一个包是用于组件的容器,例如Java JAR文件或Ruby GEM,用于将应用程序分发给客户。它包含一组具有唯一名称空间的元数据。一个软件包可以包含像个别组件一样小或与一组相关应用程序一样大的东西。

Salesforce平台就其本质而言鼓励一种敏捷开发模型,在该模型中,您可以逐步进行测试,并随时调整设计。 Managed-Beta软件包支持这种测试和修改方法。

托管 – 发布的软件包用于实时产品。您的客户期望一个稳定的应用程序随着时间的推移而不断发展,而不会破坏他们在其之上构建的业务流程。托管 – 发布的软件包有助于确保您不会破坏客户的定制并为您的知识产权提供保护。

管理发布的软件包的优点

托管 – 发布的软件包提供:

  • Apex的知识产权保护
  • 内置对API可访问组件的版本支持
  • 能够分支和修补以前的版本
  • 能够无缝地将补丁和主要更新推送给订户
  • 所有组件的唯一命名以确保无冲突安装
  • 能够通过许可证控制用户访问

客户组织中的包生命周期

我们来看看您的应用程序的打包和分发生命周期。

  1. 您在托管 – 发布的软件包中发布您的应用的第1版。
  2. 客户安装包装。
  3. 客户定制您的应用程序。
  4. 您在托管 – 发布的软件包中发布您的应用的第2版。
  5. 客户在现有软件包的顶部安装新版本的软件包。

我们说一个托管 – 发布的软件包是可升级的,因为客户可以在他们现有的版本上安装新版本。非托管软件包(合作伙伴通常不使用)和托管 – Beta软件包不可升级。

Salesforce平台具有高度可定制性,您的客户可能会定制您的应用。当您发布新版本时,它们取决于应用程序的一定程度的一致性,以使其定制不会中断。

托管 – 发布的软件包具有内置的安全措施,可以最大限度地减少新版本的影响。例如,您不能删除已提供给客户或对象的Apex方法。有关更多详细信息,请参阅ISVforce指南中的“托管软件包中可用的组件”部分。

创建一个简单的应用程序来打包

我们将在此打破我们自己的规则,并在创建包的同一组织中设置一个简单的应用程序。您只能在合作伙伴开发版(PDE)或Developer Edition组织中创建软件包。因此,请使用我们在最后一个单元中创建的PDE组织。

让我们通过创建一个世界上最简单的应用程序来完成一些实践包装的步骤。我们将创建一个显示自定义对象的单页应用程序。

  1. 转到设置菜单。
  2. 在Lightning Platform主页上,单击 Add App.
  3. 如下填写App Quick Start页面。
    字段
    App Trail Tracker
    Label Trail
    Plural Label Trails
    Screen of app quick start
  4. 点击 Create.
  5. 点击 Go To My App

而已。让我们试试这个应用程序。

  1. 点击 New.
  2. 对于Trail名称,输入 AppExchange Partner Basics.
  3. 点击 Save.

您已经使用您的应用创建了一条记录。十分简单。

包和命名空间

对于所有AppExchange应用程序和一些OEM嵌入式应用程序,客户将您的应用程序安装在具有自定义设置的现有组织中。考虑以下情况。

  • 客户已经使用API​​名称Vendor__c创建了一个自定义对象。
  • 您的应用有一个API名称为Vendor__c的自定义对象。

将安装您的应用程序覆盖您的客户的对象?不,谢天谢地。命名空间将我们从命运中解救出来。

为了防止冲突,托管包总是有一个名称空间。命名空间在Salesforce中是唯一的,因此托管软件包的安装不会与客户和其他合作伙伴所做的自定义设置相冲突。

开发组织只能有一个名称空间。您只能使用该名称空间创建一个包,但可以对该包进行更新并发布新版本。

命名空间如何被添加到您的应用程序?

当您在组织中创建名称空间时,它将附加到组织中的每个组件。如果您在该组织中创建了一个包,则添加到包中的每个组件都随附该命名空间。以下自定义对象显示(1)组织具有命名空间TrailApp_Test1,以及(2)Trail对象的API名称是TrailApp_Test1__Trail__c。

Screen showing Namespace Prefix and API Name using namespace

但是,添加名称空间时,Salesforce不会更新非Salesforce工件,如JavaScript,其中包含对对象或字段的引用。您必须自己更新这些参考。

选择一个名字空间

因为名称空间是唯一的,所以首先为你的黄金包org选择名字空间。您的客户会看到您用于上传到AppExchange的包的名称空间。如果您的公司名称是AW Computing,则需要命名空间,如awc或awcomputing。

不要在您的测试版包装组织中使用该名称空间,因为那么它不适用于您的黄金包组织。

创建一个名字空间

让我们创建您的名称空间,以便您可以打包您的应用程序。

注意

Trailhead不支持命名空间组织,因此请确保您正在开发新版开发人员版或合作伙伴开发人员版组织。如果您在用于完成Trailhead挑战的组织中创建名称空间,那么您将无法使用它获得新徽章。

  1. 从安装程序中,在快速查找框中输入软件包,然后单击 Packages.
  2. 在页面的开发者设置部分,点击 Edit.
  3. 要确认您要设置命名空间,请单击 Continue.
  4. 为名称空间前缀输入一个值。请记住,不要使用稍后可能要使用的名称。
    Screen for setting up namespace
  5. 点击 Check Availability. 重复步骤4和5,直到找到可用的名称空间。
  6. 点击 New.
  7. 点击 Review My Selections.
  8. 点击 Save.

软件包和测试

使托管 – 发布的软件包成为销售和发布应用程序的最佳选择的因素也使得它成为测试的不好选择。将某些组件添加到托管包后,您无法修改它们。比方说,在开发应用程序时,您会创建四个自定义对象,Larry,Curly,Moe和John。当你去测试你的应用时,你决定约翰是不必要的。抱歉!如果对象John在您的托管 – 发布包中,则无法删除它。

为了解决这个问题,我们提供了Managed-Beta软件包。 Beta软件包的组件可在您的软件包组织中编辑,直到创建一个托管 – 已发布的软件包。

注意

您只能在沙箱或Developer Edition组织或通过环境中心创建的测试组织中安装测试版软件包。

创建一个Managed-Beta包

继续并按照以下步骤创建您的Managed-Beta软件包。
  1. 如果您不在软件包页面上,请从安装程序中,在快速查找框中输入软件包,然后单击 Packages.
  2. 在Packages部分中,单击 New.
  3. 对于Package Name,输入 Trail App.
  4. 选择托管复选框以启用该选项。出现提示时,单击 OK.
    Screen showing creating managed package
  5. 点击 Save.
  6. 在“组件”子选项卡中,单击 Add.
  7. 选择 Trail Tracker 应用程序,然后点击 Add to Package. 请注意,包中添加了几个相关组件。
  8. 点击 Back to Package List.
注意,默认情况下创建了一个托管 – 测试版包,正是我们想要的。
Beta版本不被视为主要版本,因此软件包版本号不会更改。

使您的软件包可用于安装

当你准备在另一个组织中安装你的软件包时,你需要上传它。
  1. 从软件包列表中单击您的软件包名称。
  2. 点击 Upload.
  3. 如下所示填写Package Details部分。
    字段
    Version Name Trail App Test 1
    Description 我通过构建应用程序创建了一个AppExchange合作伙伴跟踪的简单应用程序的测试版包。
    Screen for uploading a package
  4. 点击 Upload. 如果上传成功,您会收到包含安装URL的消息。
    Screen for package with installation URL
  5. 复制安装URL以用于安装软件包。
  6. 退出您的组织。

将您的软件包安装到测试组织中

  1. 将安装URL粘贴到浏览器中。
  2. 在出现的登录页面上,输入在单元2中创建的Trailhead Test组织的凭证。
  3. 在出现的页面上,点击 Install.
    Screen for installing package
  4. 点击 Done.
  5. 从应用程序菜单中选择您的应用程序,确认您的应用程序已安装。
    Force.com App menu with new app

概要

你现在知道关于软件包的基础知识。

  • 您必须在Partner Developer Edition或Developer Edition组织中创建软件包。
  • 要创建包,请选择一个唯一的名称空间。
  • 不要在测试组织上占用你的好名字空间,否则你会后悔的。
  • 在测试周期中使用Managed-Beta软件包,因为它很容易修改其内容。
  • 仅使用托管 – 发布的软件包进行最终测试。

恭喜,您拥有在开发周期中使用Managed-Beta软件包的所有技能。挑战让你多练习一下。

Flower icon used to indicate that the content is for Salesforce Classic

请记住,该模块适用于Salesforce Classic。当您启动动手组织时,请切换至Salesforce Classic以完成此挑战。

应用程序部署(2)管理环境

学习目标

完成本单元后,您将能够:

  • 描述您从Environment Hub执行的任务。
  • 定义我的域名。
  • 描述如何设置单一登录到环境中的成员组织。

什么是环境中心?

现在是时候开始创建组织了。 Environment Hub应用程序是您创建组织和组织管理的一站式商店。

使用Environment Hub应用程序,您可以将现有组织连接到集线器。您可以创建标准和合作伙伴版本组织来开发,测试和打包您的应用程序。您可以设置从您的集线器org到其连接组织的单点登录,以便轻松访问开发和测试组织。

如果您想尝试本单元中的步骤,则需要使用Environment Hub应用程序的组织结构。

使用环境Hub所需的权限

如果您拥有系统管理员配置文件,则您拥有使用所有Environment Hub功能所需的权限。我们假设你有这些超级大国,并且你迫不及待地想创建一个组织。

但是,如果您希望其他用户访问集线器,或者您没有这些权限,则可以立即进行设置。在ISVforce指南的“配置环境中心”部分中了解有关集线器访问权限的更多信息。您或您的Salesforce管理员可以设置新配置文件,修改现有配置文件或使用正确权限创建权限集。

在开发管理组织中启用我的域

在开始之前,让我们使用Salesforce My Domain设置自己的域。是否要设置我的域名?对于AppExchange合作伙伴,这是肯定的。 Salesforce需要我的域作为安全措施来帮助防止恶意攻击 – 以防安全漏洞深藏在第三方或自定义组件中。
如果您的DE组织已启用“我的域”,或者您使用了Trailhead Playground组织,请跳过此部分。您已经设置了“我的域名”。

当您设置我的域名时,您会标记您的网址。例如,您可以创建像https://yourDomain.my.salesforce.com这样的自定义网址,而不是像https://na30.my.salesforce.com这样的网址。

Salesforce我的域向导将引导您完成这些步骤。My Domain wizard

  1. 选择你的域名。
    1. 从设置中,在快速查找框中输入我的域名,然后选择My Domain.
    2. 在https://后输入您的域的名称,然后单击Check Availability. 如果此名称已被使用,请选择另一个名称。
    3. 点击 Register Domain.
    Salesforce使用您的新域名更新其域名注册中心。完成后,您将收到一封电子邮件,其中包含“您的开发人员版本域可供测试”这个主题,它只需几分钟。

    注意

    在获得激活电子邮件之前,您无法进入下一步。

  2. 将我的域名推广到您的组织。
    1. 在激活电子邮件中,单击链接登录到您的Salesforce域并返回到向导。
    2. 请注意,浏览器地址栏中的网址显示您的新域名。URL of subdomain
    3. 点击您的组织,确保链接指向您的新域名。您可能尚未在您的DE组织中创建链接,因此我们可以继续。 (在生产组织中创建域时,这一重要步骤很容易被忽略。)
    4. 单击 Deploy to Users, 然后单击 OK.
    5. 点击 OK.
    在您的生产组织中,部署域会在您的组织中推出域URL。使用原始网址的请求会重定向到您的新网域。
恭喜,你已经建立了我的域名。在生产组织中设置“我的域”时,您需要执行几个步骤。通过完成用户认证模块的我的域单元了解更多信息。既然您已经使用域名保护了您的组织并将其品牌化,那么让我们继续。

感受力量:创建你的第一个组织

现在让我们创建一个开发组织,您可以在其中创建一个简单的应用程序。

  1. 从App菜单中选择 Environment Hub.
  2. 从ITEMS列表中选择 Environment Hub.
  3. 点击 Create Org.
  4. 为了目的,选择 Development .
  5. 在组织名称中,输入Trailhead Development Org.
    Screen for creating an org
  6. 填写剩余的必填字段。由于这是一个新的组织,所以您必须输入新的用户名,因为用户名不能在Salesforce组织中重复使用。
  7. 阅读主认购协议并选择是否接受。
  8. 点击 Create.
当您的组织准备就绪时,您会收到一封电子邮件确认,并且该组织出现在您的中心成员名单中。当电子邮件到达时,点击验证帐户以激活组织。

简要说明……

在继续之前,请确保您拥有环境Hub的AppExchange合作伙伴版本。
  1. 点击 Create Org.
  2. 为了目的,选择 Test/Demo.
  3. 确认您的版本选择列表看起来像这个。
    Edition menu with Partner versions of editions
  4. 点击 Cancel.
如果您没有看到突出显示的版本选项,请在合作伙伴社区提交案例以获取AppExchange合作伙伴环境中心。合作伙伴版本持续一年。非合作版本的使用寿命较短。

设置单点登录(SSO)

当您的组织准备就绪时,它将在环境中心中列为已连接的组织。

List of hub members with action menu highlight

注意右侧的下拉菜单。它有一个登录选项。如果您还没有设置SSO,登录只会将您带到登录页面。让我们激活SSO以充分利用Environment Hub。

  1. 从环境列表中选择组织名称。
  2. 点击 Enable SSO.
  3. 通过在新的屏幕上点击启用SSO,确认您想要 Enable SSO
  4. 转到单点登录用户映射相关列表,然后选择 New SSO User Mapping.
  5. 对于会员组织的用户名,请在环境中心查找用户。对于Environment Hub User,请输入您用于设置Trailhead Development Org的用户名。
    New SSO User Mapping screen
  6. 点击 Save.
  7. 选择 Login.

您现在已登录到相关组织。有用,不是吗?当您登录到成员组织时,您没有提供密码。因为您使用Environment Hub创建了组织,所以无需密码即可连接。

查看ISVforce指南的Environment Hub部分中的Single Sign-on,了解可用于连接组织的其他SSO方法。

让我们再来一次

它从不伤害练习,对吧?实际上,我们需要一个测试组织,用于在下一个单元中加载包含您的应用的软件包。所以,在这里。

  1. 从App菜单中选择 Environment Hub.
  2. 从ITEMS列表中选择 Environment Hub.
  3. 点击 Create Org.
  4. 为了目的,选择 Test/Demo.
  5. 在组织名称中,输入 Trailhead Test.
  6. 填写剩余的必填字段。请记住,这必须是新用户名,因为它必须在所有Salesforce组织中都是唯一的。
  7. 阅读主认购协议,然后选择是否接受。
  8. 点击 Create.
别忘了。找到您的电子邮件确认,并等待您的组织出现在您的中心成员名单中。在您确认并验证了您的帐户后,请继续并设置SSO以使您的生活更轻松。

保持有组织

您将在您的业务生命周期中创建许多组织。通过Environment Hub应用程序使用自定义列表视图,可以帮助您快速找到组织,从而让您的生活更轻松。

当您创建自定义列表视图时,您可以设置过滤器来确定您看到哪些组织并指定要显示的列。

将其他组织连接到集线器

也许你是一位发烧友,在你成为AppExchange合作伙伴之前,他们开始在Developer Edition org中创建你的应用。或者,您可能还有其他一些围绕您希望从环境中心访问的组织。没问题。就是这样。
  1. 登录到环境中心,然后选择 Connect Org.
  2. 输入您要连接的组织的管理员用户名,以及可选的简短说明。描述使得后来更容易找到组织,特别是如果您的中心有许多成员。
  3. 默认情况下,为您连接的组织启用单点登录(SSO)。要禁用SSO,请取消选择 Auto-enable SSO for this org.
  4. 再次选择 Connect Org.
  5. 在弹出窗口中,输入组织的管理员用户名和密码。如果您没有看到弹出窗口,请暂时停用浏览器的广告拦截软件,然后重试。
  6. 选择 Log In, 然后选择 Allow.

将Orgs从一个集线器移到另一个集线器

在某个时候,你的公司可能会发展到你希望在环境中心拥有另一个组织。使用Remove命令可以很容易地断开组织与环境Hub的连接。

并且很容易再次将它连接到同一个Environment Hub。但是,要将其连接到新的环境中心,请向合作伙伴支持提交一个案例,以断开与以前的环境中心的关联。

概要

你现在知道如何:

  • 设置我的域名。
  • 使用Environment Hub创建组织。
  • 将现有组织连接到环境中心。
  • 设置SSO。
  • 使用自定义列表视图来帮助您保持组织。

布拉沃。参加测验,然后进入下一个单位,在那里你可以使用这些组织。

应用程序部署(2)管理环境

学习目标

完成本单元后,您将能够:

  • 描述您从Environment Hub执行的任务。
  • 定义我的域名。
  • 描述如何设置单一登录到环境中的成员组织。

什么是环境中心?

现在是时候开始创建组织了。 Environment Hub应用程序是您创建组织和组织管理的一站式商店。

使用Environment Hub应用程序,您可以将现有组织连接到集线器。您可以创建标准和合作伙伴版本组织来开发,测试和打包您的应用程序。您可以设置从您的集线器org到其连接组织的单点登录,以便轻松访问开发和测试组织。

如果您想尝试本单元中的步骤,则需要使用Environment Hub应用程序的组织结构。

使用环境Hub所需的权限

如果您拥有系统管理员配置文件,则您拥有使用所有Environment Hub功能所需的权限。我们假设你有这些超级大国,并且你迫不及待地想创建一个组织。

但是,如果您希望其他用户访问集线器,或者您没有这些权限,则可以立即进行设置。在ISVforce指南的“配置环境中心”部分中了解有关集线器访问权限的更多信息。您或您的Salesforce管理员可以设置新配置文件,修改现有配置文件或使用正确权限创建权限集。

在开发管理组织中启用我的域

在开始之前,让我们使用Salesforce My Domain设置自己的域。是否要设置我的域名?对于AppExchange合作伙伴,这是肯定的。 Salesforce需要我的域作为安全措施来帮助防止恶意攻击 – 以防安全漏洞深藏在第三方或自定义组件中。
如果您的DE组织已启用“我的域”,或者您使用了Trailhead Playground组织,请跳过此部分。您已经设置了“我的域名”。

当您设置我的域名时,您会标记您的网址。例如,您可以创建像https://yourDomain.my.salesforce.com这样的自定义网址,而不是像https://na30.my.salesforce.com这样的网址。

Salesforce我的域向导将引导您完成这些步骤。My Domain wizard

  1. 选择你的域名。
    1. 从设置中,在快速查找框中输入我的域名,然后选择My Domain.
    2. 在https://后输入您的域的名称,然后单击Check Availability. 如果此名称已被使用,请选择另一个名称。
    3. 点击 Register Domain.
    Salesforce使用您的新域名更新其域名注册中心。完成后,您将收到一封电子邮件,其中包含“您的开发人员版本域可供测试”这个主题,它只需几分钟。

    注意

    在获得激活电子邮件之前,您无法进入下一步。

  2. 将我的域名推广到您的组织。
    1. 在激活电子邮件中,单击链接登录到您的Salesforce域并返回到向导。
    2. 请注意,浏览器地址栏中的网址显示您的新域名。URL of subdomain
    3. 点击您的组织,确保链接指向您的新域名。您可能尚未在您的DE组织中创建链接,因此我们可以继续。 (在生产组织中创建域时,这一重要步骤很容易被忽略。)
    4. 单击 Deploy to Users, 然后单击 OK.
    5. 点击 OK.
    在您的生产组织中,部署域会在您的组织中推出域URL。使用原始网址的请求会重定向到您的新网域。
恭喜,你已经建立了我的域名。在生产组织中设置“我的域”时,您需要执行几个步骤。通过完成用户认证模块的我的域单元了解更多信息。既然您已经使用域名保护了您的组织并将其品牌化,那么让我们继续。

感受力量:创建你的第一个组织

现在让我们创建一个开发组织,您可以在其中创建一个简单的应用程序。

  1. 从App菜单中选择 Environment Hub.
  2. 从ITEMS列表中选择 Environment Hub.
  3. 点击 Create Org.
  4. 为了目的,选择 Development .
  5. 在组织名称中,输入Trailhead Development Org.
    Screen for creating an org
  6. 填写剩余的必填字段。由于这是一个新的组织,所以您必须输入新的用户名,因为用户名不能在Salesforce组织中重复使用。
  7. 阅读主认购协议并选择是否接受。
  8. 点击 Create.
当您的组织准备就绪时,您会收到一封电子邮件确认,并且该组织出现在您的中心成员名单中。当电子邮件到达时,点击验证帐户以激活组织。

简要说明……

在继续之前,请确保您拥有环境Hub的AppExchange合作伙伴版本。
  1. 点击 Create Org.
  2. 为了目的,选择 Test/Demo.
  3. 确认您的版本选择列表看起来像这个。
    Edition menu with Partner versions of editions
  4. 点击 Cancel.
如果您没有看到突出显示的版本选项,请在合作伙伴社区提交案例以获取AppExchange合作伙伴环境中心。合作伙伴版本持续一年。非合作版本的使用寿命较短。

设置单点登录(SSO)

当您的组织准备就绪时,它将在环境中心中列为已连接的组织。

List of hub members with action menu highlight

注意右侧的下拉菜单。它有一个登录选项。如果您还没有设置SSO,登录只会将您带到登录页面。让我们激活SSO以充分利用Environment Hub。

  1. 从环境列表中选择组织名称。
  2. 点击 Enable SSO.
  3. 通过在新的屏幕上点击启用SSO,确认您想要 Enable SSO
  4. 转到单点登录用户映射相关列表,然后选择 New SSO User Mapping.
  5. 对于会员组织的用户名,请在环境中心查找用户。对于Environment Hub User,请输入您用于设置Trailhead Development Org的用户名。
    New SSO User Mapping screen
  6. 点击 Save.
  7. 选择 Login.

您现在已登录到相关组织。有用,不是吗?当您登录到成员组织时,您没有提供密码。因为您使用Environment Hub创建了组织,所以无需密码即可连接。

查看ISVforce指南的Environment Hub部分中的Single Sign-on,了解可用于连接组织的其他SSO方法。

让我们再来一次

它从不伤害练习,对吧?实际上,我们需要一个测试组织,用于在下一个单元中加载包含您的应用的软件包。所以,在这里。

  1. 从App菜单中选择 Environment Hub.
  2. 从ITEMS列表中选择 Environment Hub.
  3. 点击 Create Org.
  4. 为了目的,选择 Test/Demo.
  5. 在组织名称中,输入 Trailhead Test.
  6. 填写剩余的必填字段。请记住,这必须是新用户名,因为它必须在所有Salesforce组织中都是唯一的。
  7. 阅读主认购协议,然后选择是否接受。
  8. 点击 Create.
别忘了。找到您的电子邮件确认,并等待您的组织出现在您的中心成员名单中。在您确认并验证了您的帐户后,请继续并设置SSO以使您的生活更轻松。

保持有组织

您将在您的业务生命周期中创建许多组织。通过Environment Hub应用程序使用自定义列表视图,可以帮助您快速找到组织,从而让您的生活更轻松。

当您创建自定义列表视图时,您可以设置过滤器来确定您看到哪些组织并指定要显示的列。

将其他组织连接到集线器

也许你是一位发烧友,在你成为AppExchange合作伙伴之前,他们开始在Developer Edition org中创建你的应用。或者,您可能还有其他一些围绕您希望从环境中心访问的组织。没问题。就是这样。
  1. 登录到环境中心,然后选择 Connect Org.
  2. 输入您要连接的组织的管理员用户名,以及可选的简短说明。描述使得后来更容易找到组织,特别是如果您的中心有许多成员。
  3. 默认情况下,为您连接的组织启用单点登录(SSO)。要禁用SSO,请取消选择 Auto-enable SSO for this org.
  4. 再次选择 Connect Org.
  5. 在弹出窗口中,输入组织的管理员用户名和密码。如果您没有看到弹出窗口,请暂时停用浏览器的广告拦截软件,然后重试。
  6. 选择 Log In, 然后选择 Allow.

将Orgs从一个集线器移到另一个集线器

在某个时候,你的公司可能会发展到你希望在环境中心拥有另一个组织。使用Remove命令可以很容易地断开组织与环境Hub的连接。

并且很容易再次将它连接到同一个Environment Hub。但是,要将其连接到新的环境中心,请向合作伙伴支持提交一个案例,以断开与以前的环境中心的关联。

概要

你现在知道如何:

  • 设置我的域名。
  • 使用Environment Hub创建组织。
  • 将现有组织连接到环境中心。
  • 设置SSO。
  • 使用自定义列表视图来帮助您保持组织。

布拉沃。参加测验,然后进入下一个单位,在那里你可以使用这些组织。