{"id":2150,"date":"2021-03-07T12:31:28","date_gmt":"2021-03-07T05:31:28","guid":{"rendered":"https:\/\/vticloud.io\/?p=2150"},"modified":"2021-09-20T09:42:32","modified_gmt":"2021-09-20T02:42:32","slug":"cac-phuong-phap-tot-nhat-de-bao-mat-cho-dich-vu-amazon-s3","status":"publish","type":"post","link":"https:\/\/vticloud.io\/en\/cac-phuong-phap-tot-nhat-de-bao-mat-cho-dich-vu-amazon-s3\/","title":{"rendered":"Best security practices for securing Amazon S3"},"content":{"rendered":"<p><\/p>\n<p data-renderer-start-pos=\"1\"><strong>Amazon Simple Storage Service (Amazon S3)<\/strong> is one of the well-known services for storing data in the cloud of Amazon Web Services (AWS). The service is secured in accordance with AWS default policies, however, accidentally exposing data stored in buckets is easy to happen if you start changing existing default configurations or ignoring alerts.<\/p>\n<p data-renderer-start-pos=\"375\">In the article below, VTI Cloud will take a few important steps <strong data-renderer-mark=\"true\"><span style=\"color: #ff6600;\">to protect the data stored in the Amazon S3 service<\/span>.<\/strong><\/p>\n<h2 id=\"B\u01b0\u1edbc-1:-\u0110\u1eb7t-t\u00ean-Bucket-(Bucket-Naming)\" data-renderer-start-pos=\"502\">Step 1: Name the S3 bucket (Bucket Naming)\u00a0<\/h2>\n<p data-renderer-start-pos=\"543\">The first step in the security of Amazon S3 or often ignored by users is <strong data-renderer-mark=\"true\">the naming of buckets.<\/strong><\/p>\n<p data-renderer-start-pos=\"658\">On the Internet, you&#8217;ll easily find tools to scan and enumerate the names of publicly available buckets such as <a class=\"sc-hXRMBi eMCAAt\" title=\"https:\/\/github.com\/eth0izzle\/bucket-stream\" href=\"https:\/\/github.com\/eth0izzle\/bucket-stream\" data-renderer-mark=\"true\">bucket-stream<\/a> and <a class=\"sc-hXRMBi eMCAAt\" title=\"https:\/\/github.com\/sa7mon\/S3Scanner\" href=\"https:\/\/github.com\/sa7mon\/S3Scanner\" data-renderer-mark=\"true\">S3Scanner.<\/a> If you accidentally configure the public, the bucket of the organization will easily be &#8220;seen&#8221; by the above tools and the data in the bucket will likely leak.<\/p>\n<p data-renderer-start-pos=\"960\">Bucket names are resolved by DNS so bucket names can be found on DNS logs or when public. AWS will provide a link where users can connect to S3 Bucket, such as <em data-renderer-mark=\"true\"> <strong data-renderer-mark=\"true\">tenbucket.s3.amazonaws.com.<\/strong> <\/em><\/p>\n<h3 id=\"*-C\u00e1ch-\u0111\u1eb7t-t\u00ean-bucket-hi\u1ec7u-qu\u1ea3\" data-renderer-start-pos=\"1182\">* Effective bucket naming\u00a0<\/h3>\n<p data-renderer-start-pos=\"1215\">VTI Cloud&#8217;s advice, as well as from the AWS side, is that the name of the bucket name in Amazon S3 should be unique and limited to coincide with any other bucket. This bucket name is only recognizable to you but does not give a clue who this bucket belongs to\/what organization it belongs to.<\/p>\n<blockquote>\n<p data-renderer-start-pos=\"1498\"><strong data-renderer-mark=\"true\">For example:<\/strong> When naming buckets that store highly secure data, you can name it <em data-renderer-mark=\"true\"> <strong data-renderer-mark=\"true\">data-1-abcdef<\/strong><\/em>. With &#8221; data &#8221; being the purpose of the data stored in the bucket,<strong data-renderer-mark=\"true\">&#8220;1&#8221; to<\/strong> show that this <strong data-renderer-mark=\"true\">data<\/strong>is only known to you or your team (which can be typed &#8220;<strong data-renderer-mark=\"true\">2<\/strong>&#8221; with public data) and &#8220;<strong data-renderer-mark=\"true\">abcdef<\/strong>&#8221; is a random phrase or number.<\/p>\n<\/blockquote>\n<p data-renderer-start-pos=\"1810\">You should limit the use of AWS Account ID in bucket names because they are vulnerable to revealing business information and identities.<\/p>\n<p data-renderer-start-pos=\"1810\"><img loading=\"lazy\" class=\"aligncenter size-full wp-image-2151\" src=\"https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/bucket-naming.png\" alt=\"bucket naming\" width=\"1085\" height=\"643\" srcset=\"https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/bucket-naming.png 1085w, https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/bucket-naming-300x178.png 300w, https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/bucket-naming-1024x607.png 1024w, https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/bucket-naming-768x455.png 768w\" sizes=\"(max-width: 1085px) 100vw, 1085px\" \/><\/p>\n<h2 id=\"B\u01b0\u1edbc-2:-Thi\u1ebft-l\u1eadp-theo-d\u00f5i-v\u00e0-gi\u00e1m-s\u00e1t-log-cho-Amazon-S3\" data-renderer-start-pos=\"1928\">Step 2: Set up log tracking and monitoring for Amazon S3<\/h2>\n<p data-renderer-start-pos=\"1986\">Requests to S3 buckets at the bucket level <strong data-renderer-mark=\"true\">such <\/strong><strong data-renderer-mark=\"true\">as creating or deleting buckets<\/strong> can be tracked by the AWS CloudTrail service. Therefore, VTI Cloud encourages enabling AWS CloudTrail services and placing CloudTrail logs in a separate account (not related by other services and for read-only permission such as <em data-renderer-mark=\"true\"> <strong data-renderer-mark=\"true\">AWSCloudTrailReadOnlyAccess) <\/strong><\/em>for safety.<\/p>\n<blockquote>\n<p data-renderer-start-pos=\"2338\">Learn more about AWS CloudTrail Identity-Based Policy: <span style=\"color: #ff9900;\"><a class=\"sc-hXRMBi eMCAAt\" style=\"color: #ff9900;\" title=\"https:\/\/docs.aws.amazon.com\/awscloudtrail\/latest\/userguide\/security_iam_id-based-policy-examples.html\" href=\"https:\/\/docs.aws.amazon.com\/awscloudtrail\/latest\/userguide\/security_iam_id-based-policy-examples.html\" data-renderer-mark=\"true\">AWS CloudTrail Identity-Based Policy Examples &#8211; AWS CloudTrail (amazon.com)<\/a><\/span><\/p>\n<\/blockquote>\n<p data-renderer-start-pos=\"2466\">In addition to the actions at the bucket level above, VTI Cloud also <strong data-renderer-mark=\"true\">encourages recording logs<\/strong> of actions inside buckets, e.g. PUT, GET, and DELETE actions, helping you track who or what accessed (or tried to access) your data.<\/p>\n<h3 data-renderer-start-pos=\"2724\">2.1. Log Monitoring for Amazon Simple Storage Service<\/h3>\n<p data-renderer-start-pos=\"2777\">There are 02 main ways to monitor logs in Amazon S3, including <a class=\"sc-hXRMBi eMCAAt\" title=\"https:\/\/docs.aws.amazon.com\/AmazonS3\/latest\/userguide\/cloudtrail-logging.html\" href=\"https:\/\/docs.aws.amazon.com\/AmazonS3\/latest\/userguide\/cloudtrail-logging.html\" data-renderer-mark=\"true\">CloudTrail<\/a> object level logging and S3 <a class=\"sc-hXRMBi eMCAAt\" title=\"https:\/\/docs.aws.amazon.com\/AmazonS3\/latest\/userguide\/ServerLogs.html\" href=\"https:\/\/docs.aws.amazon.com\/AmazonS3\/latest\/userguide\/ServerLogs.html\" data-renderer-mark=\"true\">server access logging.<\/a> VTI Cloud recommends <strong data-renderer-mark=\"true\">activating at least one of these methods,<\/strong> using CloudTrail is the easiest option.<\/p>\n<p data-renderer-start-pos=\"3017\">CloudTrail logs record<strong data-renderer-mark=\"true\"> requests made to S3, IP addresses, request implementer, date stamp, <\/strong>and some other<strong data-renderer-mark=\"true\"> details.<\/strong><\/p>\n<blockquote>\n<p data-renderer-start-pos=\"3147\">S3 server access logs provide newline-delimited logs that can contain additional details to help you investigate. Read more S3 server access log format at: <span style=\"color: #ff6600;\"><a class=\"sc-hXRMBi eMCAAt\" style=\"color: #ff6600;\" title=\"https:\/\/docs.aws.amazon.com\/AmazonS3\/latest\/userguide\/LogFormat.html\" href=\"https:\/\/docs.aws.amazon.com\/AmazonS3\/latest\/userguide\/LogFormat.html\" data-renderer-mark=\"true\">Amazon S3 server access log format &#8211; Amazon Simple Storage Service<\/a><\/span><\/p>\n<\/blockquote>\n<p data-renderer-start-pos=\"3147\"><img loading=\"lazy\" class=\"aligncenter size-full wp-image-2152\" src=\"https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/s3-cloudtrial.png\" alt=\"s3 cloudtrial\" width=\"1411\" height=\"788\" srcset=\"https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/s3-cloudtrial.png 1411w, https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/s3-cloudtrial-300x168.png 300w, https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/s3-cloudtrial-1024x572.png 1024w, https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/s3-cloudtrial-768x429.png 768w\" sizes=\"(max-width: 1411px) 100vw, 1411px\" \/><\/p>\n<h3 id=\"2.2.-Thi\u1ebft-l\u1eadp-c\u00e1c-c\u1ea3nh-b\u00e1o-\u0111i-k\u00e8m\" data-renderer-start-pos=\"3389\">2.2. Set up the accompanying alerts<\/h3>\n<p data-renderer-start-pos=\"3425\">Besides log monitoring, you should still set up some alarms with Amazon CloudWatch on Amazon CloudWatch metrics (Amazon CloudWatch request metrics for Amazon S3).<\/p>\n<blockquote>\n<p data-renderer-start-pos=\"3605\">Read more: <span style=\"color: #ff6600;\"><a class=\"sc-hXRMBi eMCAAt\" style=\"color: #ff6600;\" title=\"https:\/\/docs.aws.amazon.com\/AmazonS3\/latest\/userguide\/metrics-configurations.html\" href=\"https:\/\/docs.aws.amazon.com\/AmazonS3\/latest\/userguide\/metrics-configurations.html\" data-renderer-mark=\"true\">CloudWatch metrics configurations &#8211; Amazon Simple Storage Service<\/a>.<\/span><\/p>\n<\/blockquote>\n<p data-renderer-start-pos=\"3684\">For example, when the bucket is only used to store CloudTrail logs, there will <strong data-renderer-mark=\"true\">be an alert every time the object is<\/strong> deleted (but PUT and GET requests to have a low threshold). This usually occurs when an attacker masks a trace in Amazon S3.<\/p>\n<p data-renderer-start-pos=\"3907\">In addition, depending on the support plan of your organization&#8217;s AWS account, you can use <a class=\"sc-hXRMBi eMCAAt\" title=\"https:\/\/aws.amazon.com\/premiumsupport\/technology\/trusted-advisor\/best-practice-checklist\/#security\" href=\"https:\/\/aws.amazon.com\/premiumsupport\/technology\/trusted-advisor\/best-practice-checklist\/#security\" data-renderer-mark=\"true\"> <u data-renderer-mark=\"true\">AWS Trusted Advisor&#8217;s Amazon S3 bucket permissions check<\/u> <\/a>to check open access permission.<\/p>\n<h3 id=\"2.3.-S\u1eed-d\u1ee5ng-Amazon-GuardDuty\" data-renderer-start-pos=\"4105\">2.3. Using Amazon GuardDuty<\/h3>\n<p data-renderer-start-pos=\"4136\"><a class=\"sc-hXRMBi eMCAAt\" title=\"https:\/\/aws.amazon.com\/guardduty\/\" href=\"https:\/\/aws.amazon.com\/guardduty\/\" data-renderer-mark=\"true\"><span style=\"color: #ff6600;\">Amazon GuardDuty<\/span><\/a> is a smart threat detection service that you should act to help detect threats and abnormalities and has <span style=\"color: #ff6600;\"><a class=\"sc-hXRMBi eMCAAt\" style=\"color: #ff6600;\" title=\"https:\/\/docs.aws.amazon.com\/guardduty\/latest\/ug\/s3_detection.html\" href=\"https:\/\/docs.aws.amazon.com\/guardduty\/latest\/ug\/s3_detection.html\" data-renderer-mark=\"true\">Amazon S3 protection.<\/a><\/span><\/p>\n<p data-renderer-start-pos=\"4326\">This feature allows GuardDuty to monitor activities at the object level to identify potential security risks to data in S3 Buckets.<\/p>\n<p data-renderer-start-pos=\"4475\">If you have activated the <strong data-renderer-mark=\"true\">Amazon GuardDuty service, <\/strong>go to the control panel (in each region you have activated) and verify that you have <strong data-renderer-mark=\"true\">Amazon S3 protection enabled.<\/strong><\/p>\n<p data-renderer-start-pos=\"4475\">An example of architecture using Amazon GuardDuty with Amazon S3:<\/p>\n<p data-renderer-start-pos=\"4475\"><img loading=\"lazy\" class=\"aligncenter size-full wp-image-2153\" src=\"https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/s3-guardDuty.png\" alt=\"s3 guardDuty\" width=\"750\" height=\"458\" srcset=\"https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/s3-guardDuty.png 750w, https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/s3-guardDuty-300x183.png 300w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/p>\n<h3 id=\"2.4.-Access-Analyzer-for-S3\" data-renderer-start-pos=\"4651\">2.4. Access Analyzer for S3<\/h3>\n<p data-renderer-start-pos=\"4680\"><a class=\"sc-hXRMBi eMCAAt\" title=\"https:\/\/docs.aws.amazon.com\/AmazonS3\/latest\/user-guide\/access-analyzer.html\" href=\"https:\/\/docs.aws.amazon.com\/AmazonS3\/latest\/user-guide\/access-analyzer.html\" data-renderer-mark=\"true\"><span style=\"color: #ff6600;\">Access Analyzer for S3<\/span><\/a> informs you that S3 Buckets are configured to allow access by <strong data-renderer-mark=\"true\">anyone on the internet or <\/strong>by other AWS <strong data-renderer-mark=\"true\">accounts<\/strong> (both inside and outside the organization).<\/p>\n<blockquote>\n<p data-renderer-start-pos=\"4872\">For example, access analyzer for S3 may show that a bucket has read or write permissions provided through<em data-renderer-mark=\"true\"> bucket access control list (ACL),<\/em>bucket policy, or access point policy. Access Analyzer for S3 works by activating the<span style=\"color: #ff6600;\"> <a class=\"sc-hXRMBi eMCAAt\" style=\"color: #ff6600;\" title=\"https:\/\/docs.aws.amazon.com\/IAM\/latest\/UserGuide\/access-analyzer-getting-started.html#access-analyzer-enabling\" href=\"https:\/\/docs.aws.amazon.com\/IAM\/latest\/UserGuide\/access-analyzer-getting-started.html#access-analyzer-enabling\" data-renderer-mark=\"true\">IAM Access Analyzer<\/a> <\/span>first.<\/p>\n<\/blockquote>\n<h2 id=\"B\u01b0\u1edbc-3:-M\u00e3-h\u00f3a-d\u1eef-li\u1ec7u-cho-Amazon-S3\" data-renderer-start-pos=\"5136\">Step 3: Encrypt data for Amazon S3<\/h2>\n<p data-renderer-start-pos=\"5175\">Encryption is considered an additional layer of security to control access to Amazon S3 data. Encryption will give deeper control over access to your bucket.<\/p>\n<p data-renderer-start-pos=\"5337\">There are many encryption options in Amazon S3, however, the easiest way to activate is also the easiest to use, and also very secure is <span style=\"color: #ff6600;\"><a class=\"sc-hXRMBi eMCAAt\" style=\"color: #ff6600;\" title=\"https:\/\/docs.aws.amazon.com\/AmazonS3\/latest\/userguide\/default-bucket-encryption.html\" href=\"https:\/\/docs.aws.amazon.com\/AmazonS3\/latest\/userguide\/default-bucket-encryption.html\" data-renderer-mark=\"true\">the default server-side encryption using AWS Key Management Service.<\/a><\/span> The default encryption will be valid with all new and available buckets.<\/p>\n<blockquote>\n<p data-renderer-start-pos=\"5629\">If you don&#8217;t use KMS default encryption, you must try to encrypt requests to objects in the bucket and have to set a bucket policy to reject uncoded requests.<\/p>\n<\/blockquote>\n<h3 id=\"*-L\u01b0u-\u00fd-khi-c\u1ea5u-h\u00ecnh-AWS-KMS\" data-renderer-start-pos=\"5811\">* Note when configuring AWS KMS<\/h3>\n<ol class=\"ak-ol\" data-indent-level=\"1\">\n<li>\n<p data-renderer-start-pos=\"5843\">When using the KMS key, pay attention to <a class=\"sc-hXRMBi eMCAAt\" title=\"https:\/\/docs.aws.amazon.com\/kms\/latest\/developerguide\/requests-per-second.html\" href=\"https:\/\/docs.aws.amazon.com\/kms\/latest\/developerguide\/requests-per-second.html\" data-renderer-mark=\"true\">request quotas<\/a> per second, if less than 5000 requests \/ second, do not worry too much. Upon reaching the threshold, AWS KMS returns the ThrottlingException error as follows:<\/p>\n<\/li>\n<\/ol>\n<blockquote>\n<p data-renderer-start-pos=\"6037\">You have exceeded the rate at which you may call KMS. Reduce the frequency of your calls. <br \/>\n(Service: AWSKMS; Status Code: 400; Error Code: ThrottlingException; Request ID: <em data-renderer-mark=\"true\"><span data-renderer-mark=\"true\">&lt;ID&gt;<\/span><\/em><\/p>\n<\/blockquote>\n<p data-renderer-start-pos=\"6215\">2. Consider using different keys for data sensitivity levels, and each key&#8217;s access will have to be different.<\/p>\n<blockquote>\n<p data-renderer-start-pos=\"6346\">For example, each KMS key will be used for different buckets in the same AWS account, the data and sensitivity level at each bucket are different.<\/p>\n<\/blockquote>\n<p data-renderer-start-pos=\"6488\">3. Use <strong data-renderer-mark=\"true\">the AWS Key Management Service Key (SSE-KMS)<\/strong> and select your own custom key to enabling default encryption:<\/p>\n<p data-renderer-start-pos=\"6488\"><img loading=\"lazy\" class=\"aligncenter size-full wp-image-2154\" src=\"https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/server-side-encryption.png\" alt=\"server-side encryption\" width=\"1529\" height=\"1303\" srcset=\"https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/server-side-encryption.png 1529w, https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/server-side-encryption-300x256.png 300w, https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/server-side-encryption-1024x873.png 1024w, https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/server-side-encryption-768x654.png 768w\" sizes=\"(max-width: 1529px) 100vw, 1529px\" \/><\/p>\n<h2 id=\"B\u01b0\u1edbc-4:-Qu\u1ea3n-l\u00fd-truy-c\u1eadp\" data-renderer-start-pos=\"6619\">Step 4: Access Control<\/h2>\n<h3 data-renderer-start-pos=\"6645\">4.1. Prevent access to Amazon S3 from outside (Public)<\/h3>\n<p data-renderer-start-pos=\"6706\">You can easily set up central controls to limit public access to S3 buckets regardless of whether they&#8217;re old or new buckets.<\/p>\n<blockquote>\n<p data-renderer-start-pos=\"6857\">Buckets or &#8220;public&#8221; ACL objects only if members who are granted access are identified as users of the <strong data-renderer-mark=\"true\">AllUsers <\/strong>group and the <strong data-renderer-mark=\"true\">AuthenticatedUsers group.<\/strong><\/p>\n<\/blockquote>\n<p data-renderer-start-pos=\"7020\">If a request is made from <a class=\"sc-hXRMBi eMCAAt\" title=\"https:\/\/aws.amazon.com\/s3\/features\/access-points\/?nc1=h_ls\" href=\"https:\/\/aws.amazon.com\/s3\/features\/access-points\/?nc1=h_ls\" data-renderer-mark=\"true\"><span style=\"color: #ff6600;\">Amazon S3 Access Point<\/span>,<\/a> Amazon S3 checks whether public access prohibition policies apply to Access Point and will reject this request if it applies.<\/p>\n<p data-renderer-start-pos=\"7238\">There are many different configurations for block public access, VTI Cloud recommends activating the whole <strong data-renderer-mark=\"true\">(Block all public access).<\/strong> However, it is still necessary to check the logs of the buckets to avoid blocking requests from valid sources.<\/p>\n<p data-renderer-start-pos=\"7238\"><img loading=\"lazy\" class=\"aligncenter size-full wp-image-2155\" src=\"https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/block-public-access.png\" alt=\"block public access\" width=\"1555\" height=\"950\" srcset=\"https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/block-public-access.png 1555w, https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/block-public-access-300x183.png 300w, https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/block-public-access-1024x626.png 1024w, https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/block-public-access-768x469.png 768w, https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/block-public-access-1536x938.png 1536w\" sizes=\"(max-width: 1555px) 100vw, 1555px\" \/><\/p>\n<h3 id=\"4.2.-Access-Control-List-(ACLs),-AWS-Identity-and-Access-Management-(IAM)-v\u00e0-Bucket-Policy\" data-renderer-start-pos=\"7478\">4.2. Access Control List (ACLs), AWS Identity and Access Management (IAM), and Bucket Policy<\/h3>\n<p data-renderer-start-pos=\"7570\">ACLs are one of the basic ways to grant access to buckets. Resource-based ACL \u2013 in this case, S3 bucket \u2013 to manage access (as opposed to identity-based as users\/roles such as AWS Identity and Management). With AWS IAM, IAM policy will impact bucket levels and object levels.<\/p>\n<p data-renderer-start-pos=\"7893\">When you create a bucket or an object, Amazon S3 creates a default ACL, granting resource owners full control over the resource. You can also attach S3 ACLs to each object in the bucket to manage access to those objects<\/p>\n<h4 id=\"M\u1eabu-ACL-c\u1ea5p-quy\u1ec1n-truy-c\u1eadp-cho-Amazon-S3-bucket\" data-renderer-start-pos=\"8138\">ACL template grants access to Amazon S3 bucket<\/h4>\n<p><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;<\/code><br \/>\n<code>&lt;AccessControlPolicy xmlns=\"http:\/\/s3.amazonaws.com\/doc\/2006-03-01\/\"&gt;<\/code><br \/>\n<code>\u00a0 &lt;Owner&gt;<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0&lt;ID&gt;Owner-canonical-user-ID&lt;\/ID&gt;<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0&lt;DisplayName&gt;display-name&lt;\/DisplayName&gt;<\/code><br \/>\n<code>\u00a0 &lt;\/Owner&gt;<\/code><br \/>\n<code>&lt;AccessControlList&gt;<\/code><br \/>\n<code>\u00a0 &lt;Grant&gt;<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0&lt;Grantee xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xsi:type=\"CanonicalUser\"&gt;<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0&lt;ID&gt;Owner-canonical-user-ID&lt;\/ID&gt;<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0&lt;DisplayName&gt;display-name&lt;\/DisplayName&gt;<\/code><br \/>\n<code>\u00a0 &lt;\/Grantee&gt;<\/code><br \/>\n<code>\u00a0 &lt;Permission&gt;FULL_CONTROL&lt;\/Permission&gt;<\/code><br \/>\n<code>&lt;\/Grant&gt;<\/code><\/p>\n<p><code>\u00a0 &lt;Grant&gt;<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0&lt;Grantee xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xsi:type=\"CanonicalUser\"&gt;<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0 \u00a0&lt;ID&gt;user1-canonical-user-ID&lt;\/ID&gt;<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0 \u00a0&lt;DisplayName&gt;display-name&lt;\/DisplayName&gt;<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0&lt;\/Grantee&gt;<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0&lt;Permission&gt;WRITE&lt;\/Permission&gt;<\/code><br \/>\n<code>\u00a0 &lt;\/Grant&gt;<\/code><\/p>\n<p><code>\u00a0 &lt;Grant&gt;<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0&lt;Grantee xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xsi:type=\"CanonicalUser\"&gt;<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0 \u00a0&lt;ID&gt;user2-canonical-user-ID&lt;\/ID&gt;<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0 \u00a0&lt;DisplayName&gt;display-name&lt;\/DisplayName&gt;<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0&lt;\/Grantee&gt;<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0&lt;Permission&gt;READ&lt;\/Permission&gt;<\/code><br \/>\n<code>\u00a0 &lt;\/Grant&gt;<\/code><\/p>\n<p><code>\u00a0 &lt;Grant&gt;<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0&lt;Grantee xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xsi:type=\"Group\"&gt;<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0 \u00a0&lt;URI&gt;http:\/\/acs.amazonaws.com\/groups\/global\/AllUsers&lt;\/URI&gt; <\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0&lt;\/Grantee&gt;<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0&lt;Permission&gt;READ&lt;\/Permission&gt;<\/code><br \/>\n\u00a0 <code>\u00a0&lt;\/Grant&gt;<\/code><\/p>\n<p><code>\u00a0 &lt;Grant&gt;<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0&lt;Grantee xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xsi:type=\"Group\"&gt;<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0 \u00a0&lt;URI&gt;http:\/\/acs.amazonaws.com\/groups\/s3\/LogDelivery&lt;\/URI&gt;<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0&lt;\/Grantee&gt;<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0&lt;Permission&gt;WRITE&lt;\/Permission&gt;<\/code><br \/>\n<code>\u00a0 &lt;\/Grant&gt;<\/code><\/p>\n<p><code>\u00a0 &lt;\/AccessControlList&gt;<\/code><br \/>\n<code>&lt;\/AccessControlPolicy&gt;<\/code><\/p>\n<p data-renderer-start-pos=\"9735\">However, to be simple in setting up access, you can use other methods. Include <strong data-renderer-mark=\"true\">bucket policy if<\/strong> you want to grant permissions to another account or <strong data-renderer-mark=\"true\">use IAM policy (SSO)<\/strong> if you need to grant access in an account or organization.<\/p>\n<h4 id=\"M\u1eabu-S3-Bucket-Policy\" data-renderer-start-pos=\"9980\">Template of S3 Bucket Policy<\/h4>\n<p><code>{<\/code><br \/>\n<code>\u00a0 \"Version\": \"2021-02-19\",<\/code><br \/>\n<code>\u00a0 \"Statement\": [<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0{<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0 \u00a0\"Effect\": \"Allow\",<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0 \u00a0\"Principal\": {<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0\"AWS\": [\"arn:aws:iam::111122223333:user\/Alice\",<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\"arn:aws:iam::111122223333:root\"]<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0 \u00a0},<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0 \u00a0\"Action\": \"s3:*\",<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0 \u00a0\"Resource\": [\"arn:aws:s3:::my_bucket\",<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"arn:aws:s3:::my_bucket\/*\"]<\/code><br \/>\n<code>\u00a0 \u00a0 }<\/code><br \/>\n<code>\u00a0 ]<\/code><br \/>\n<code>}<\/code><\/p>\n<p data-renderer-start-pos=\"10344\">This S3 Bucket Policy allows root account 111122223333 and IAM user Alice is allowed to perform actions on the S3 bucket (including internal data) named &#8220;my_bucket&#8221;.<\/p>\n<blockquote>\n<p data-renderer-start-pos=\"10523\">Read more: <span style=\"color: #ff9900;\"><a class=\"sc-hXRMBi eMCAAt\" style=\"color: #ff9900;\" title=\"https:\/\/docs.aws.amazon.com\/AmazonS3\/latest\/userguide\/example-bucket-policies.html#example-bucket-policies-use-case-1\" href=\"https:\/\/docs.aws.amazon.com\/AmazonS3\/latest\/userguide\/example-bucket-policies.html#example-bucket-policies-use-case-1\" data-renderer-mark=\"true\">Bucket policy examples &#8211; Amazon Simple Storage Service<\/a><\/span><\/p>\n<\/blockquote>\n<h4 id=\"M\u1eabu-IAM-Policy\" data-renderer-start-pos=\"10590\">Template of IAM Policy<\/h4>\n<p><code>{<\/code><br \/>\n<code>\u00a0 \"Version\": \"2021-02-19\",<\/code><br \/>\n<code>\u00a0 \"Statement\":[{<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0\"Effect\": \"Allow\",<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0\"Action\": \"s3:*\",<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0\"Resource\": [\"arn:aws:s3:::my_bucket\",<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"arn:aws:s3:::my_bucket\/*\"]<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0}<\/code><br \/>\n<code>\u00a0 ]<\/code><br \/>\n<code>}<\/code><\/p>\n<p>IAM policy grants the IAM (user, group, or role) that it is tied to permission to enforce actions on the S3 bucket (including internal data) named &#8220;my_bucket&#8221;.<\/p>\n<blockquote>\n<p data-renderer-start-pos=\"10981\">IAM policy can limit access to each bucket and object prefix, can refer to the actions, resources and conditions of S3 in the following link:\u00a0 <span style=\"color: #ff9900;\"><a class=\"sc-hXRMBi eMCAAt\" style=\"color: #ff9900;\" title=\"https:\/\/docs.aws.amazon.com\/service-authorization\/latest\/reference\/list_amazons3.html\" href=\"https:\/\/docs.aws.amazon.com\/service-authorization\/latest\/reference\/list_amazons3.html\" data-renderer-mark=\"true\">https:\/\/docs.aws.amazon.com\/service-authorization\/latest\/reference\/list_amazons3.html<\/a><\/span><\/p>\n<\/blockquote>\n<h3 id=\"4.3.-MFA-Delete\" data-renderer-start-pos=\"11215\">4.3. MFA Delete<\/h3>\n<p data-renderer-start-pos=\"11232\">Multi-factor authentication (MFA) Delete is a feature that adds an authentication layer to protect data and bucket from accidental deletion (versioning state of the bucket and permanent deletion of object version)<\/p>\n<p data-renderer-start-pos=\"11434\">There are some notes when activating, only the root account (bucket owner) can enable the MFA Delete feature. In addition, to use MFA for versioning in the S3 bucket, you can only configure via AWS Command Line Interface (AWS CLI) or API (this API is used to configure versioning for buckets)<\/p>\n<blockquote>\n<p data-renderer-start-pos=\"11735\">Amazon S3 stores the MFA Delete configuration in the same subresource versioning and is saved in bucket&#8217;s versioning status.<\/p>\n<\/blockquote>\n<p data-renderer-start-pos=\"11735\"><code>&lt;VersioningConfiguration xmlns=\"http:\/\/s3.amazonaws.com\/doc\/2006-03-01\/\"&gt; <\/code><\/p>\n<p data-renderer-start-pos=\"11735\"><code>\u00a0 &lt;Status&gt;VersioningState&lt;\/Status&gt;<\/code><\/p>\n<p data-renderer-start-pos=\"11735\"><code>\u00a0 &lt;MfaDelete&gt;MfaDeleteState&lt;\/MfaDelete&gt;<\/code><code>\u00a0<\/code><\/p>\n<p data-renderer-start-pos=\"11735\"><code>&lt;\/VersioningConfiguration&gt;<\/code><\/p>\n<p data-renderer-start-pos=\"12035\">Command to enable the MFA Delete for bucket versioning with AWS CLI:<\/p>\n<p data-renderer-start-pos=\"12106\"><code><span class=\"code\" data-renderer-mark=\"true\">$ aws s3api put-bucket-versioning --profile my-root-profile --bucket my-bucket-name --versioning-configuration Status=Enabled,MFADelete=Enabled --mfa \u201carn:aws:iam::00000000:mfa\/root-account-mfa-device 123456\u201d<\/span><\/code><\/p>\n<h3 id=\"4.4.-Access-Points\" data-renderer-start-pos=\"12316\">4.4. Access Points<\/h3>\n<p data-renderer-start-pos=\"12336\"><a class=\"sc-hXRMBi eMCAAt\" title=\"https:\/\/docs.aws.amazon.com\/AmazonS3\/latest\/userguide\/access-points.html\" href=\"https:\/\/docs.aws.amazon.com\/AmazonS3\/latest\/userguide\/access-points.html\" data-renderer-mark=\"true\"><span style=\"color: #ff6600;\">Access points<\/span><\/a> are network endpoints attached to buckets that are used to perform operations on S3 objects, such as GetObject and PutObject.<\/p>\n<p data-renderer-start-pos=\"12501\">The access point is used to share data between accounts, instead of using bucket policy in section 4.3 above. Note that the access point only acts on objects in buckets.<\/p>\n<p data-renderer-start-pos=\"12682\">VTI Cloud encourages the use of Access Point for the following jobs:<\/p>\n<ul class=\"ak-ul\" data-indent-level=\"1\">\n<li>\n<p data-renderer-start-pos=\"12752\"><strong data-renderer-mark=\"true\">Manage shared large amounts of data<\/strong><\/p>\n<\/li>\n<\/ul>\n<p data-renderer-start-pos=\"12794\">Using Access Point, you can split a large bucket policy into separate, discrete access point policies for each application that needs to access a shared data set.<\/p>\n<p data-renderer-start-pos=\"12968\">This makes it simpler to focus on building the right access policy for an app, while not having to worry about disrupting any other apps that are in this data set.<\/p>\n<ul class=\"ak-ul\" data-indent-level=\"1\">\n<li>\n<p data-renderer-start-pos=\"13180\"><strong data-renderer-mark=\"true\">Restrict access to VPC<\/strong><\/p>\n<\/li>\n<\/ul>\n<p data-renderer-start-pos=\"13214\">S3 Access Point can limit all access to S3 storage from VPC.<\/p>\n<p data-renderer-start-pos=\"13293\">You can create a <a class=\"sc-hXRMBi eMCAAt\" title=\"https:\/\/docs.aws.amazon.com\/organizations\/latest\/userguide\/orgs_manage_policies_scps.html\" href=\"https:\/\/docs.aws.amazon.com\/organizations\/latest\/userguide\/orgs_manage_policies_scps.html\" data-renderer-mark=\"true\"><strong data-renderer-mark=\"true\"><span style=\"color: #ff6600;\">Service Control Policy<\/span> <\/strong><\/a>and require all access points to be restricted to your VPC, helping to secure your data on private networks.<\/p>\n<ul class=\"ak-ul\" data-indent-level=\"1\">\n<li>\n<p data-renderer-start-pos=\"13476\"><strong data-renderer-mark=\"true\">Limit access to specific ID accounts<\/strong><\/p>\n<\/li>\n<\/ul>\n<p data-renderer-start-pos=\"13529\">With S3 Access Points, VPC Endpoint policies can be specified, allowing access only to Access points (buckets) that are owned by specific ACCOUNT IDs.<\/p>\n<p data-renderer-start-pos=\"13688\">This simplifies the creation of access policies that allow access to buckets in the same account and denies any access to any other Amazon S3 service through the Endpoint VPC.<\/p>\n<ul class=\"ak-ul\" data-indent-level=\"1\">\n<li>\n<p data-renderer-start-pos=\"13896\"><strong data-renderer-mark=\"true\">Provide unique names<\/strong><\/p>\n<\/li>\n<\/ul>\n<p data-renderer-start-pos=\"13921\">S3 Access points enable naming of access that is unique in an account and AWS region; for example, each region\/account will have 01 &#8220;TEST&#8221; access point.<\/p>\n<h2 data-renderer-start-pos=\"14071\">Step 5: Safety for Amazon\u00a0S3<\/h2>\n<h3 id=\"5.1.-Bucket-versioning\" data-renderer-start-pos=\"14107\">5.1. Bucket versioning<\/h3>\n<p data-renderer-start-pos=\"14131\">From a security perspective, VTI Cloud recommends enabling versioning for buckets because it&#8217;s safe against tampering with or accidentally deleting encrypted data or data.<\/p>\n<p data-renderer-start-pos=\"14299\">Permissions for S3 are separated between <strong data-renderer-mark=\"true\">actions on objects and <\/strong>object <strong data-renderer-mark=\"true\">versions.<\/strong> For example, the DeleteObject action differs from DeleteObjectVersion. This means that with the DeleteObject permission, the object can only be deleted at the current point, but not the version of the object.<\/p>\n<p data-renderer-start-pos=\"14299\"><img loading=\"lazy\" class=\"aligncenter size-full wp-image-2157\" src=\"https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/bucket-versioning.png\" alt=\"bucket versioning\" width=\"1569\" height=\"398\" srcset=\"https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/bucket-versioning.png 1569w, https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/bucket-versioning-300x76.png 300w, https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/bucket-versioning-1024x260.png 1024w, https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/bucket-versioning-768x195.png 768w, https:\/\/vticloud.io\/wp-content\/uploads\/2021\/03\/bucket-versioning-1536x390.png 1536w\" sizes=\"(max-width: 1569px) 100vw, 1569px\" \/><\/p>\n<h3 id=\"5.2.-S3-Object-Lock\" data-renderer-start-pos=\"14576\">5.2. S3 Object Lock<\/h3>\n<p data-renderer-start-pos=\"14597\">\u200eS3 Object Lock is an option you can enable to prevent objects from being deleted or overwritten for a fixed period of time. This is like a write-once-read-many (WORM) model and has been evaluated by various regulations to protect your data. \u200e<\/p>\n<p data-renderer-start-pos=\"14853\">\u200eThis feature is recommended to protect data for a certain period of time.\u200e<\/p>\n<h3 id=\"5.3.-Amazon-Macie\" data-renderer-start-pos=\"14935\">5.3. Amazon Macie<\/h3>\n<p data-renderer-start-pos=\"14954\">\u200eAmazon Macie is a fully managed data security and data privacy service that uses machine learning techniques and sample reconciliation to detect and protect your sensitive data in AWS.\u200e<\/p>\n<p data-renderer-start-pos=\"15153\">\u200eAmazon Macie automatically detects sensitive data at scale and reduces the cost of protecting your data. Macie automatically provisions Amazon S3 buckets, including a list of un-encrypted buckets, publicly accessible buckets, and buckets shared with AWS accounts outside of accounts you have defined in AWS Organizations. \u200e<\/p>\n<p data-renderer-start-pos=\"15496\">\u200eMacie then applies machine learning and sample reconciliation techniques to the buckets selected to identify and alert you to sensitive data, such as personally identifying information (PII). Macie alerts or search results can be searched or filtered in the AWS Management Console and sent to Amazon EventBridge, formerly known as Amazon CloudWatch Events, for easy integration with existing processes or event management systems, or used in combination with AWS services, like AWS Step Functions to perform automated remediation actions. \u200e<\/p>\n<blockquote>\n<p data-renderer-start-pos=\"16042\">Read more about Amazon Macie: <span style=\"color: #ff9900;\"><a class=\"sc-hXRMBi eMCAAt\" style=\"color: #ff9900;\" title=\"https:\/\/docs.aws.amazon.com\/macie\/\" href=\"https:\/\/docs.aws.amazon.com\/macie\/\" data-renderer-mark=\"true\">https:\/\/docs.aws.amazon.com\/macie\/<\/a><\/span><\/p>\n<\/blockquote>\n<h2 id=\"K\u1ebft-lu\u1eadn\" data-renderer-start-pos=\"16110\">Conclusion<\/h2>\n<p data-renderer-start-pos=\"16120\">\u200eThe above are the best methods with annotations and advice from VTI Cloud for the security of the Amazon Simple Storage Service (Amazon S3).\u00a0<\/p>\n<blockquote>\n<p data-renderer-start-pos=\"16120\">For an overall checklist of system security on AWS, you can refer to the previous VTI Cloud article:\u200e <span style=\"color: #ff6600;\"><a style=\"color: #ff6600;\" href=\"https:\/\/vticloud.io\/en\/checklist-bao-mat-dam-may-tren-amazon-web-services\/\">Security Checklist for systems on Amazon Web Services | VTI CLOUD<\/a><\/span><\/p>\n<\/blockquote>\n<h2 id=\"Tham-kh\u1ea3o\" data-renderer-start-pos=\"16454\">Reference<\/h2>\n<p data-renderer-start-pos=\"16465\">Security Best Practices for Amazon S3 &#8211; Amazon Simple Storage Service<\/p>\n<p data-renderer-start-pos=\"16536\">How to secure Amazon S3: latest best practices (securingthe.cloud)<\/p>\n<h2>About VTI Cloud<\/h2>\n<p data-renderer-start-pos=\"6835\"><strong data-renderer-mark=\"true\">VTI Cloud<\/strong>\u00a0is an\u00a0<a class=\"sc-iELTvK jHUAie\" title=\"https:\/\/vticloud.io\/news_events\/vti-cloud-chinh-thuc-tro-thanh-advanced-consulting-partner-cua-aws\/\" href=\"https:\/\/vticloud.io\/news_events\/vti-cloud-chinh-thuc-tro-thanh-advanced-consulting-partner-cua-aws\/\" data-renderer-mark=\"true\"><span style=\"color: #ff6600;\">Advanced Consulting Partner<\/span><\/a>\u00a0of AWS Vietnam with a team of over 50+ AWS certified solution engineers. With the desire to support customers in the journey of digital transformation and migration to the AWS cloud, VTI Cloud is proud to be a pioneer in consulting solutions, developing software, and deploying AWS infrastructure to customers<strong data-renderer-mark=\"true\">\u00a0in Vietnam<\/strong>\u00a0<strong data-renderer-mark=\"true\">and Japan.<\/strong><\/p>\n<p data-renderer-start-pos=\"7217\">Building safe, high-performance, flexible, and cost-effective architectures for customers is\u00a0<strong data-renderer-mark=\"true\">VTI Cloud\u2019s<\/strong>\u00a0leading mission in enterprise technology mission.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>Amazon Simple Storage Service (Amazon S3) is one of the well-known services for storing data in the cloud of Amazon Web Services (AWS). The service is secured in accordance with AWS default policies, however, accidentally exposing data stored in buckets is easy to happen if you start changing existing default configurations or ignoring alerts. In [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":2161,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[13],"tags":[111,118,51,67,116,117,34,46],"_links":{"self":[{"href":"https:\/\/vticloud.io\/en\/wp-json\/wp\/v2\/posts\/2150"}],"collection":[{"href":"https:\/\/vticloud.io\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vticloud.io\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vticloud.io\/en\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/vticloud.io\/en\/wp-json\/wp\/v2\/comments?post=2150"}],"version-history":[{"count":1,"href":"https:\/\/vticloud.io\/en\/wp-json\/wp\/v2\/posts\/2150\/revisions"}],"predecessor-version":[{"id":3160,"href":"https:\/\/vticloud.io\/en\/wp-json\/wp\/v2\/posts\/2150\/revisions\/3160"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vticloud.io\/en\/wp-json\/wp\/v2\/media\/2161"}],"wp:attachment":[{"href":"https:\/\/vticloud.io\/en\/wp-json\/wp\/v2\/media?parent=2150"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vticloud.io\/en\/wp-json\/wp\/v2\/categories?post=2150"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vticloud.io\/en\/wp-json\/wp\/v2\/tags?post=2150"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}