AWS 中有没有一种方法可以隐藏我的 nodejs 代码,同时向我的客户公开与访问和存储相关的账单信息

Is there a way in AWS to hide my nodejs code while expose access and storage related billing information to my customers

我现在需要根据客户提供的数据进行一些计算,将结果存储在某处,并通过 API 提供结果。为此,我制作了一个 NodeJS 应用程序,可以将数据存储在 NoSQL 数据库中。

我的问题是我希望客户在没有看到源代码的情况下支付所有费用。我不需要自己挣钱,只需要让客户看不到我的计算就可以付账。

为此,我正在考虑 AWS。我可以分出一个 EC2 实例,运行 我的 NodeJS 代码放在上面,并将所有数据存储在 RDS、S3 等中。从这一点来看我有两种可能性:

  1. 我为AWS账户付款(即输入我的信用卡详细信息),并从客户那里收回账单;或

  2. 我要求客户创建一个 AWS 帐户,给我某种访问权限,以便我可以在 EC2 等上下载我的代码

对于选项1,问题是

Is there a way in AWS (IAM user etc) such that a customer can login to the AWS console, view the billing and usage information, but cannot logon to EC2 and see the Node source code

对于选项 2,

Is it even possible that the owner of the account doesnt get to see the source-code on their EC2 instance

请指教

是的,亚马逊有一个关于这个的教程: https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_billing.html

我建议从这里开始,然后在这里提出更多问题,我们可以尽力帮助您。

Is there a way in AWS (IAM user etc) such that a customer can login to the AWS console, view the billing and usage information, but cannot logon to EC2 and see the Node source code

这似乎适合 AWS marketplace AMI based product 产品。您可以在市场上为您的客户提供 AMI。您的客户需要一个 AWS 账户来购买您的 AMI,他们将由 AWS 代表您收费。您将由 AWS 付款。

Is it even possible that the owner of the account doesn't get to see the source-code on their EC2 instance

我认为其中一种方法是在您创建的 AMI 上禁用 sshd 进程。可以有更好的替代方案,但我只是把我能猜到的。

很难完全保护某些东西免受 AWS 账户所有者的侵害。

举个例子,想想前云世界。如果某人可以物理访问 计算机,他们可以打开机箱并移除硬盘。通过将磁盘连接到另一台计算机,他们可以读取内容。但是,您可能会说,如果内容受密码保护怎么办?是的,这会有所帮助,但应用程序如何在不知道密码的情况下访问内容?

完全相同的事情适用于云。如果您使用的是 Amazon EC2 实例,那么 磁盘可以通过快照 复制并连接到另一台计算机。内容可读

您可能 超级聪明 并且知道如何使用加密卷制作 EC2 实例,该实例可以引导和服务流量,而无需授予人们登录权限。如果他们将磁盘附加到另一个 EC2 实例,则它应该是不可读的,因为引导卷已加密。 (但是启动时它是如何工作的?)

如果您想完全确定如何保护您的代码,我建议:

  • 使用您自己的 AWS 账户(这样他们就没有访问权限)
  • 设置整合账单(这样他们就能收到账单,但他们无权访问该帐户)
  • 提供他们可以调用的 API(通过 API 网关 + Lambda,或 Amazon EC2 实例)。您甚至可以花点心思使用 AWS PrivateLink - Amazon Virtual Private Cloud Connectivity Options,它可以在不遍历 Internet 的情况下在另一个 AWS 账户中公开服务。

结果是只有 您可以完全访问这些资源,但他们为帐户付费。这仅在您有 单个 客户使用该服务时才有效,因为该帐户的全部费用将由他们承担。 (如果您从同一帐户为多个客户提供服务,则不合适。)