

# 目录存储桶的安全最佳实践
<a name="s3-express-security-best-practices"></a>

使用目录存储桶时需要考虑的许多安全功能。以下最佳实操是一般准则，并不代表完整的安全解决方案。这些最佳实践可能不适合您的环境或不满足您的环境要求，请将其视为有用的建议而不是惯例。

## 默认屏蔽公共访问权限和对象所有权设置
<a name="s3-express-security-best-practices-manage-access"></a>

 目录存储桶支持 S3 屏蔽公共访问权限和 S3 对象所有权。这些 S3 功能用于审计和管理对存储桶及对象的访问。

默认情况下，所有的目录存储桶都启用了屏蔽公共访问权限设置。此外，对象所有权设置为强制存储桶拥有者，这意味着访问控制列表（ACL）已禁用。无法修改这些设置。有关使用这些功能的更多信息，请参阅[阻止对您的 Amazon S3 存储的公有访问](access-control-block-public-access.md)和[为您的存储桶控制对象所有权和禁用 ACL。](about-object-ownership.md)。

**注意**  
您无法授予对存储在目录存储桶中的对象的访问权限。您只能授予对目录存储桶的访问权限。S3 Express One Zone 的授权模式与 Amazon S3 的授权模式不同。有关更多信息，请参阅 [使用 `CreateSession` 对可用区端点 API 操作进行授权](s3-express-create-session.md)。

## 身份验证和授权
<a name="s3-express-security-best-practices-create-session"></a>

根据您是向可用区端点 API 操作发出请求还是向区域端点 API 操作发出请求，目录存储桶的身份验证和授权机制会有所不同。可用区 API 操作是对象级（数据面板）操作。区域 API 操作是存储桶级（控制面板）操作。

您可以通过基于会话的全新机制``，对针对可用区端点 API 操作的请求进行身份验证和授权，该机制经过优化，可提供极低的延迟。通过基于会话的身份验证，AWS SDK 使用 `CreateSession` API 操作``来请求临时凭证，以提供对目录存储桶的低延迟访问。这些临时凭证的作用范围限制为特定的目录存储桶，并在 5 分钟后过期。您可以使用这些临时凭证对可用区（对象级）API 调用签名。有关更多信息，请参阅 [使用 `CreateSession` 对可用区端点 API 操作进行授权](s3-express-create-session.md)。

**使用目录存储桶管理凭证对请求进行签名**  
您可以通过您的凭证，使用 AWS 签名版本 4 并将 `s3express` 作为服务名称，对可用区端点（对象级）API 请求进行签名。在对请求签名时，请使用从 `CreateSession` 返回的密钥，还要通过 `x-amzn-s3session-token header` 提供会话令牌。有关更多信息，请参阅 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html)。

[受支持的 AWS SDK](s3-express-SDKs.md#s3-express-getting-started-accessing-sdks) 负责管理凭证和签名事宜。我们建议使用 AWS SDK 来刷新凭证并为您签名请求。

**使用 IAM 凭证对请求签名**  
所有区域（存储桶级）API 调用都必须通过 AWS Identity and Access Management（IAM）凭证（而不是临时会话凭证）进行身份验证和签名。IAM 凭证由 IAM 身份的访问密钥 ID 和秘密访问密钥组成。所有 `CopyObject` 和 `HeadBucket` 请求还必须使用 IAM 凭证进行身份验证和签名。

为了尽可能减少可用区（对象级）操作调用的延迟，我们建议使用通过调用 `CreateSession` 获得的凭证来对您的请求签名，但 `CopyObject` 和 `HeadBucket` 的请求除外。

## 使用 AWS CloudTrail。
<a name="s3-express-security-best-practices-cloudtrail"></a>

AWS CloudTrail 提供用户、角色或 AWS 服务在 Amazon S3 中执行的操作的记录。您可以使用 CloudTrail 收集的信息确定以下事项：
+ 向 Amazon S3 发出的请求
+ 发出请求的 IP 地址
+ 谁发出了请求
+ 发出请求的时间
+ 有关该请求的其他详细信息

当您设置 AWS 账户时，CloudTrail 管理事件默认处于启用状态。以下区域端点 API 操作（存储桶级或控制面板 API 操作）将记录到 CloudTrail 中。
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListDirectoryBuckets.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListDirectoryBuckets.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html)

**注意**  
`ListMultipartUploads` 是可用区端点 API 操作。但是，它会作为管理事件记录到 CloudTrail 中。有关更多信息，请参阅《Amazon Simple Storage Service API 参考》**中的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)。

默认情况下，CloudTrail 跟踪不记录数据事件，但您可以将跟踪配置为记录您指定的目录存储桶的数据事件，或记录您的 AWS 账户中所有目录存储桶的数据事件。以下可用区端点 API 操作（对象级或数据面板 API 操作）将记录到 CloudTrail 中。
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)

 有关将 AWS CloudTrail 与目录存储桶配合使用的更多信息，请参阅[使用 AWS CloudTrail 对目录存储桶进行日志记录](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-one-zone-cloudtrail-logging.html)。

### 使用 AWS 监控工具实施监控
<a name="s3-express-security-best-practices-monitoring"></a>

监控是保持 Amazon S3 和您的 AWS 解决方案的可靠性、安全性、可用性和性能的重要部分。AWS 提供了一些可用来监控 Amazon S3 和您的其他 AWS 服务的工具和服务。例如，您可以监控 Amazon S3 的 Amazon CloudWatch 指标，特别是 `BucketSizeBytes` 和 `NumberOfObjects` 存储指标。

存储在目录存储桶中的对象不会反映在 Amazon S3 的 `BucketSizeBytes` 和 `NumberOfObjects` 存储指标中。但是，目录存储桶支持 `BucketSizeBytes` 和 `NumberOfObjects` 存储指标。要查看您选择的指标，您可以通过指定 `StorageType` 维度来区分 Amazon S3 存储类。有关更多信息，请参阅 [使用 Amazon CloudWatch 监控指标](cloudwatch-monitoring.md)。

有关更多信息，请参阅[使用 Amazon CloudWatch 监控指标](cloudwatch-monitoring.md)和[Amazon S3 中的日志记录和监控](monitoring-overview.md)。