使用 的 Shield 範例 AWS CLI - AWS SDK 程式碼範例

文件 AWS SDK AWS 範例 SDK 儲存庫中有更多可用的 GitHub 範例。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 的 Shield 範例 AWS CLI

下列程式碼範例示範如何使用 AWS Command Line Interface 搭配 Shield 來執行動作和實作常見案例。

Actions 是大型程式的程式碼摘錄,必須在內容中執行。雖然 動作會示範如何呼叫個別服務函數,但您可以在其相關案例中查看內容中的動作。

每個範例都包含完整原始程式碼的連結,您可以在其中找到如何在內容中設定和執行程式碼的指示。

主題

動作

下列程式碼範例示範如何使用 associate-drt-log-bucket

AWS CLI

授權 DRT 存取 Amazon S3 儲存貯體

下列associate-drt-log-bucket範例會在 DRT 與指定的 S3 儲存貯體之間建立關聯。這允許 DRT 代表 帳戶存取儲存貯體。:

aws shield associate-drt-log-bucket \ --log-bucket flow-logs-for-website-lb

此命令不會產生輸出。

如需詳細資訊,請參閱 AWS Shield 進階開發人員指南中的授權 DDoS 回應團隊

下列程式碼範例示範如何使用 associate-drt-role

AWS CLI

授權 DRT 代表您緩解潛在攻擊

下列associate-drt-role範例會在 DRT 與指定角色之間建立關聯。DRT 可以使用 角色來存取和管理 帳戶。

aws shield associate-drt-role \ --role-arn arn:aws:iam::123456789012:role/service-role/DrtRole

此命令不會產生輸出。

如需詳細資訊,請參閱 AWS Shield 進階開發人員指南中的授權 DDoS 回應團隊

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 AssociateDrtRole

下列程式碼範例示範如何使用 create-protection

AWS CLI

為單一 AWS 資源啟用 AWS Shield Advanced 保護

下列create-protection範例會啟用指定 AWS CloudFront 分發的 Shield Advanced 保護。

aws shield create-protection \ --name "Protection for CloudFront distribution" \ --resource-arn arn:aws:cloudfront::123456789012:distribution/E198WC25FXOWY8

輸出:

{ "ProtectionId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }

如需詳細資訊,請參閱 AWS Shield 進階開發人員指南中的指定要保護的資源

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 CreateProtection

下列程式碼範例示範如何使用 create-subscription

AWS CLI

為 帳戶啟用 AWS Shield Advanced 保護

下列create-subscription範例會啟用帳戶的 Shield Advanced 保護。

aws shield create-subscription

此命令不會產生輸出。

如需詳細資訊,請參閱 Shield Advanced AWS 開發人員指南AWS 中的 Shield Advanced 入門。

下列程式碼範例示範如何使用 delete-protection

AWS CLI

從 AWS 資源中移除 AWS Shield Advanced 保護

下列delete-protection範例會移除指定的 Shield Advanced AWS 保護。

aws shield delete-protection \ --protection-id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111

此命令不會產生輸出。

如需詳細資訊,請參閱 Shield Advanced AWS 開發人員指南中的從 AWS 資源中移除 Shield Advanced。 AWS

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 DeleteProtection

下列程式碼範例示範如何使用 describe-attack

AWS CLI

擷取攻擊的詳細說明

下列describe-attack範例顯示具有指定攻擊 ID 的 DDoS 攻擊詳細資訊。您可以執行 list-attacks命令來取得攻擊 IDs。

aws shield describe-attack --attack-id a1b2c3d4-5678-90ab-cdef-EXAMPLE22222

輸出:

{ "Attack": { "AttackId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "ResourceArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/testElb", "SubResources": [ { "Type": "IP", "Id": "192.0.2.2", "AttackVectors": [ { "VectorType": "SYN_FLOOD", "VectorCounters": [ { "Name": "SYN_FLOOD_BPS", "Max": 982184.0, "Average": 982184.0, "Sum": 11786208.0, "N": 12, "Unit": "BPS" } ] } ], "Counters": [] }, { "Type": "IP", "Id": "192.0.2.3", "AttackVectors": [ { "VectorType": "SYN_FLOOD", "VectorCounters": [ { "Name": "SYN_FLOOD_BPS", "Max": 982184.0, "Average": 982184.0, "Sum": 9821840.0, "N": 10, "Unit": "BPS" } ] } ], "Counters": [] }, { "Type": "IP", "Id": "192.0.2.4", "AttackVectors": [ { "VectorType": "SYN_FLOOD", "VectorCounters": [ { "Name": "SYN_FLOOD_BPS", "Max": 982184.0, "Average": 982184.0, "Sum": 7857472.0, "N": 8, "Unit": "BPS" } ] } ], "Counters": [] }, { "Type": "IP", "Id": "192.0.2.5", "AttackVectors": [ { "VectorType": "SYN_FLOOD", "VectorCounters": [ { "Name": "SYN_FLOOD_BPS", "Max": 982184.0, "Average": 982184.0, "Sum": 1964368.0, "N": 2, "Unit": "BPS" } ] } ], "Counters": [] }, { "Type": "IP", "Id": "2001:DB8::bcde:4321:8765:0:0", "AttackVectors": [ { "VectorType": "SYN_FLOOD", "VectorCounters": [ { "Name": "SYN_FLOOD_BPS", "Max": 982184.0, "Average": 982184.0, "Sum": 1964368.0, "N": 2, "Unit": "BPS" } ] } ], "Counters": [] }, { "Type": "IP", "Id": "192.0.2.6", "AttackVectors": [ { "VectorType": "SYN_FLOOD", "VectorCounters": [ { "Name": "SYN_FLOOD_BPS", "Max": 982184.0, "Average": 982184.0, "Sum": 1964368.0, "N": 2, "Unit": "BPS" } ] } ], "Counters": [] } ], "StartTime": 1576024927.457, "EndTime": 1576025647.457, "AttackCounters": [], "AttackProperties": [ { "AttackLayer": "NETWORK", "AttackPropertyIdentifier": "SOURCE_IP_ADDRESS", "TopContributors": [ { "Name": "198.51.100.5", "Value": 2024475682 }, { "Name": "198.51.100.8", "Value": 1311380863 }, { "Name": "203.0.113.4", "Value": 900599855 }, { "Name": "198.51.100.4", "Value": 769417366 }, { "Name": "203.1.113.13", "Value": 757992847 } ], "Unit": "BYTES", "Total": 92773354841 }, { "AttackLayer": "NETWORK", "AttackPropertyIdentifier": "SOURCE_COUNTRY", "TopContributors": [ { "Name": "United States", "Value": 80938161764 }, { "Name": "Brazil", "Value": 9929864330 }, { "Name": "Netherlands", "Value": 1635009446 }, { "Name": "Mexico", "Value": 144832971 }, { "Name": "Japan", "Value": 45369000 } ], "Unit": "BYTES", "Total": 92773354841 }, { "AttackLayer": "NETWORK", "AttackPropertyIdentifier": "SOURCE_ASN", "TopContributors": [ { "Name": "12345", "Value": 74953625841 }, { "Name": "12346", "Value": 4440087595 }, { "Name": "12347", "Value": 1635009446 }, { "Name": "12348", "Value": 1221230000 }, { "Name": "12349", "Value": 1199425294 } ], "Unit": "BYTES", "Total": 92755479921 } ], "Mitigations": [] } }

如需詳細資訊,請參閱 AWS Shield 進階開發人員指南中的檢閱 DDoS 事件

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 DescribeAttack

下列程式碼範例示範如何使用 describe-drt-access

AWS CLI

若要擷取 DRT 必須代表您緩解攻擊的授權描述

下列describe-drt-access範例會擷取 DRT 擁有的角色和 S3 儲存貯體授權,讓它代表您回應潛在的攻擊。

aws shield describe-drt-access

輸出:

{ "RoleArn": "arn:aws:iam::123456789012:role/service-role/DrtRole", "LogBucketList": [ "flow-logs-for-website-lb" ] }

如需詳細資訊,請參閱 AWS Shield 進階開發人員指南中的授權 DDoS 回應團隊

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 DescribeDrtAccess

下列程式碼範例示範如何使用 describe-emergency-contact-settings

AWS CLI

使用 DRT 擷取您存檔的緊急電子郵件地址

下列describe-emergency-contact-settings範例會擷取 帳戶使用 DRT 存檔的電子郵件地址。這些是 DRT 在回應可疑攻擊時應聯絡的地址。

aws shield describe-emergency-contact-settings

輸出:

{ "EmergencyContactList": [ { "EmailAddress": "ops@example.com" }, { "EmailAddress": "ddos-notifications@example.com" } ] }

如需詳細資訊,請參閱 Shield AWS AWS 進階開發人員指南中的 Shield 如何運作<latest/developerguide/ddoshttps://docs.aws.amazon.com/waf/-overview.html>。

下列程式碼範例示範如何使用 describe-protection

AWS CLI

擷取 Shield Advanced AWS 保護的詳細資訊

下列describe-protection範例顯示具有指定 ID 的 Shield Advanced 保護的詳細資訊。您可以執行 list-protections命令來取得保護 IDs。

aws shield describe-protection \ --protection-id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111

輸出:

{ "Protection": { "Id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Name": "1.2.3.4", "ResourceArn": "arn:aws:ec2:us-west-2:123456789012:eip-allocation/eipalloc-0ac1537af40742a6d" } }

如需詳細資訊,請參閱 AWS Shield 進階開發人員指南中的指定要保護的資源

下列程式碼範例示範如何使用 describe-subscription

AWS CLI

擷取 帳戶的 AWS Shield Advanced 保護詳細資訊

下列describe-subscription範例顯示針對 帳戶提供的 Shield Advanced 保護的詳細資訊:

aws shield describe-subscription

輸出:

{ "Subscription": { "StartTime": 1534368978.0, "EndTime": 1597613778.0, "TimeCommitmentInSeconds": 63244800, "AutoRenew": "ENABLED", "Limits": [ { "Type": "GLOBAL_ACCELERATOR", "Max": 1000 }, { "Type": "ROUTE53_HOSTED_ZONE", "Max": 1000 }, { "Type": "CF_DISTRIBUTION", "Max": 1000 }, { "Type": "ELB_LOAD_BALANCER", "Max": 1000 }, { "Type": "EC2_ELASTIC_IP_ALLOCATION", "Max": 1000 } ] } }

如需詳細資訊,請參閱 Shield AWS 進階開發人員指南中的 Shield 如何運作AWS

下列程式碼範例示範如何使用 disassociate-drt-log-bucket

AWS CLI

移除 DRT 代表您存取 Amazon S3 儲存貯體的授權

下列disassociate-drt-log-bucket範例會移除 DRT 與指定 S3 儲存貯體之間的關聯。此命令完成後,DRT 就無法再代表 帳戶存取儲存貯體。

aws shield disassociate-drt-log-bucket \ --log-bucket flow-logs-for-website-lb

此命令不會產生輸出。

如需詳細資訊,請參閱 AWS Shield 進階開發人員指南中的授權 DDoS 回應團隊

下列程式碼範例示範如何使用 disassociate-drt-role

AWS CLI

移除 DRT 的授權,以代表您緩解潛在的攻擊

下列disassociate-drt-role範例會移除 DRT 與 帳戶之間的關聯。在此呼叫之後,DRT 就無法再存取或管理您的帳戶。

aws shield disassociate-drt-role

此命令不會產生輸出。

如需詳細資訊,請參閱 AWS Shield 進階開發人員指南中的授權 DDoS 回應團隊

下列程式碼範例示範如何使用 get-subscription-state

AWS CLI

若要擷取帳戶的 Shield Advanced AWS 訂閱的目前狀態

下列get-subscription-state範例會擷取帳戶的 Shield Advanced 保護狀態。

aws shield get-subscription-state

輸出:

{ "SubscriptionState": "ACTIVE" }

如需詳細資訊,請參閱 Shield AWS 進階開發人員指南中的 Shield 如何運作AWS

下列程式碼範例示範如何使用 list-attacks

AWS CLI

從 Shield Advanced AWS 擷取攻擊摘要

下列list-attacks範例會擷取指定期間內指定 AWS CloudFront 分佈的攻擊摘要。回應包含您可以提供給 describe-attack命令的攻擊 IDs,以取得攻擊的詳細資訊。

aws shield list-attacks \ --resource-arns arn:aws:cloudfront::12345678910:distribution/E1PXMP22ZVFAOR \ --start-time FromInclusive=1529280000,ToExclusive=1529300000

輸出:

{ "AttackSummaries": [ { "AttackId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "ResourceArn": "arn:aws:cloudfront::123456789012:distribution/E1PXMP22ZVFAOR", "StartTime": 1529280000.0, "EndTime": 1529449200.0, "AttackVectors": [ { "VectorType": "SYN_FLOOD" } ] } ] }

如需詳細資訊,請參閱 AWS Shield 進階開發人員指南中的檢閱 DDoS 事件

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 ListAttacks

下列程式碼範例示範如何使用 list-protections

AWS CLI

從 Shield Advanced AWS 擷取保護摘要

下列list-protections範例會擷取為 帳戶啟用的保護摘要。

aws shield list-protections

輸出:

{ "Protections": [ { "Id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Name": "Protection for CloudFront distribution", "ResourceArn": "arn:aws:cloudfront::123456789012:distribution/E198WC25FXOWY8" } ] }

如需詳細資訊,請參閱 AWS Shield 進階開發人員指南中的指定要保護的資源

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 ListProtections

下列程式碼範例示範如何使用 update-emergency-contact-settings

AWS CLI

使用 DRT 定義存檔的緊急電子郵件地址

下列update-emergency-contact-settings範例定義兩個電子郵件地址,Word DRT應在回應可疑攻擊時聯絡該地址。

aws shield update-emergency-contact-settings \ --emergency-contact-list EmailAddress=ops@example.com EmailAddress=ddos-notifications@example.com

此命令不會產生輸出。

如需詳細資訊,請參閱 Shield AWS 進階開發人員指南中的 Shield 如何運作AWS

下列程式碼範例示範如何使用 update-subscription

AWS CLI

若要修改帳戶的 AWS Shield Advanced 訂閱

下列update-subscription範例會啟用 帳戶的 AWS Shield Advanced 訂閱自動續約。

aws shield update-subscription \ --auto-renew ENABLED

此命令不會產生輸出。

如需詳細資訊,請參閱 Shield AWS 進階開發人員指南中的 Shield 如何運作AWS