成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何使用Cloud Custodian實現云治理即代碼

譯文
云計算
用戶采用Cloud Custodian能夠編寫簡單的YAML策略,以創建管理良好的云計算基礎設施。

【51CTO.com快譯】用戶采用Cloud Custodian能夠編寫簡單的YAML策略,以創建管理良好的云計算基礎設施。

在當今不斷擴展的云計算基礎設施中,很難管理所有資源都合規。而企業都有一組需要遵循的策略,用于檢測違規行為并對其云計算資源使用采取補救措施。這通常是通過編寫多個自定義腳本并使用一些第三方工具和集成來完成的。許多開發團隊都知道管理和編寫自定義腳本并跟蹤這些腳本有多么困難。但他們可以利用Cloud Custodian DSL策略輕松管理云計算資源。

什么是云治理?

云治理是一個框架,它定義了開發人員如何創建策略來控制成本、最小化安全風險、提高效率以及加速部署。

提供治理即代碼的工具有哪些?

(1)AWS Config

AWS Config主要記錄和監控AWS資源的所有配置數據,可以構建規則來幫助強制執行使用的合規性。比如設置多賬戶和多區域選項。它還提供了一些可以使用的預定義AWS托管規則,或者用戶可以自己編寫自定義規則。還可以根據匹配情況采取補救措施。對于自定義策略,需要編寫自己的lambda函數來執行操作。

但是,用戶可以使用Cloud Custodian設置AWS Config規則和使用c7n-org支持多賬戶和多區域的自定義規則。此外,它還可以自動配置AWS lambda函數。

(2)Azure政策

Azure政策跨Azure資源實施組織標準。它提供了一個聚合視圖來評估環境的整體狀態,并且能夠深入到每個資源、每個策略的粒度(例如,用戶只能創建A和B系列虛擬機)。用戶可以打開內置策略或為所有資源創建自定義策略。它還可以對不合規的資源采取自動修復措施。

Azure政策在部署上構建自定義驗證層以防止偏離客戶定義的規則時可靠且高效。Cloud Custodian和Azure政策在合規性實施方面可以完成的場景有很大的重疊。在查看用戶的要求時,建議首先確定可以通過Azure政策實施的要求。然后可以使用Custodian來實現其余的要求。Custodian還經常用于向Azure政策涵蓋的要求添加第二層保護或緩解措施。這樣就可以確保正確配置策略。

到目前為止,已經看到了什么是云治理以及市場上可用的工具是什么。以下了解一下Cloud Custodian可以在云治理方面提供什么。

什么是Cloud Custodian?

Cloud Custodian是一個CNCF沙盒項目,用于實時管理公共云資源。它幫助用戶以代碼的形式編寫治理,就像以代碼的形式編寫基礎設施一樣。它檢測非投訴資源并采取措施對其進行補救。Cloud Custodian也是一個云原生工具。它可以與多個云計算提供商(AWS、Azure、GCP等)一起使用。

用戶可以使用Cloud Custodian,如下所示:

  • 合規性和安全性即代碼:可以將簡單的YAML DSL策略編寫作為代碼。
  • 節約成本:刪除不需要的資源,并實施開/關時間政策可以節約成本。
  • 運營效率:通過添加治理即代碼,它減少了在云中安全創新的摩擦,并提高了開發人員的效率。

它是如何工作的?

當運行Cloud Custodian命令時,根據云計算提供商的不同情況,將資源、過濾器、操作作為輸入,并轉換為云計算提供商API調用(例如AWS Boto3 API)。無需擔心自定義腳本或AWS CLI命令。用戶可以獲得清晰易讀的策略以及Cloud Custodian中內置的許多常見過濾器和操作。如果需要自定義過濾器,總是可以使用JMESPath來編寫過濾器。

在某些情況下,可能需要定期或根據某些事件運行政策。為此Cloud Custodian自動預配lambda函數和CloudWatch事件規則。CloudWatch事件規則可以安排(每10分鐘)或觸發以響應CloudTrail、EC2實例狀態事件等的API調用。

如何安裝和設置Cloud Custodian?

可以簡單地使用Python的pip命令安裝Cloud Custodian:

  1. python3 -m venv custodian 
  2. source custodian/bin/activate 
  3. pip install c7n       # This includes AWS support 
  4. pip install c7n_azure # Install Azure package 
  5. pip install c7n_gcp   # Install GCP Package 

使用 Cloud Custodian Docker 映像

  1. docker run  -it \ 
  2.   -v $(pwd)/output:/opt/custodian/output \ 
  3.   -v $(pwd)/policy.yml:/opt/custodian/policy.yml \ 
  4.   --env-file <(env | grep "^AWS\|^AZURE\|^GOOGLE|^KUBECONFIG") \ 
  5.      cloudcustodian/c7n run -v --cache-period 0 -s /opt/custodian/output /opt/custodian/policy.yml 

注:ACCESS和SECRET KEY、DEFAULT_REGION和KUBECONFIG是從ENV變量中獲取的,用戶應該有權訪問在策略YAML文件中定義的所需IAM角色和策略。另一種選擇是在容器內掛載文件/目錄。

Cloud Custodian policy.yaml解釋

Cloud Custodian有一個簡單的YAML文件,其中包括資源、過濾器和操作:

  • 資源:Custodian能夠針對多個云計算提供商(AWS、GCP、Azure),每個提供商都有自己的資源類型(例如ec2、s3存儲桶)。
  • 過濾器:過濾器是Custodian中針對特定資源子集的方式。它可以基于某些日期、標簽等,可以使用JMESPath表達式編寫自定義過濾器。
  • 操作:操作是對與過濾器匹配的資源做出的實際決定。這一操作可以很簡單,例如向所有者發送報告,說明資源與云治理規則不匹配或刪除資源。

操作和過濾器都可以結合任意多的規則來很好地表達需求。

  1. namefirst-policy 
  2.   resource: name-of-cloud-resource 
  3.   description: Description of policy 
  4.     filters: 
  5.       - (some filter that will select a subset of resource) 
  6.       - (more filters) 
  7.     actions: 
  8.       - (an action to trigger on filtered resource) 
  9.       - (more actions) 

Cloud Custodian的示例策略

盡管官方文檔涵蓋了大部分AWS策略示例,但還是挑選了一些策略,用戶可以使用這些策略來節省成本和合規。

(1)ebs-snapshots-month-old.yml

組織面臨的最常見問題之一是刪除舊的AMI、快照和卷的復雜性,這些舊的AMI、快照和卷在環境中存在1年多并且增加了更多的費用。最終,必須編寫多個自定義腳本來處理這種情況。

以下是刪除超過30天的快照的簡單策略:

  1. policies: 
  2.   - name: ebs-snapshots-month-old 
  3.     resource: ebs-snapshot 
  4.     filters: 
  5.       - type: age 
  6.         days: 30 
  7.         op: ge 
  8.     actions: 
  9.       - delete 

以下是如何運行Cloud Custodian策略的示例。

  1. custodian run -v -s /tmp/output /tmp/ebs-snapshots-month-old.yml 

每次運行Custodian命令時,它都會在通過-s選項(例如,

/tmp/output/ebs-snapshot-month-old/custodian-run.log)傳遞的policies.name輸出目錄中創建/附加文件)

  • custodian-run.log:所有控制臺日志都存儲在這里。
  • resources.json:過濾的資源列表。
  • metadata.json:關于過濾資源的元數據。
  • action-*:已采取行動的資源列表。
  • $HOME/.cache/cloud-custodian.cache:所有云API調用結果都緩存在這里。默認值為15分鐘。

要獲得過濾的資源報告,可以運行以下命令。在默認情況下,它提供CSV格式的報告,但可以通過傳遞–format json來更改它。

  1. custodian report -s /tmp/output--format csv ebs-snapshots-month-old.yml 

(2)only-approved-ami.yml

停止運行與可信AMI列表不匹配的EC2。

  1. policies: 
  2. nameonly-approved-ami 
  3.   resource: ec2 
  4.   comment: | 
  5.     Stop running EC2 instances that are using invalid AMIs 
  6.   filters: 
  7.     - "State.Name": running 
  8.     - type: value 
  9.       key: ImageId 
  10.       op: not-in 
  11.       value: 
  12.           - ami-04db49c0fb2215364   # Amazon Linux 2 AMI (HVM) 
  13.           - ami-06a0b4e3b7eb7a300  # Red Hat Enterprise Linux 8 (HVM) 
  14.           - ami-0b3acf3edf2397475    # SUSE Linux Enterprise Server 15 SP2 (HVM) 
  15.           - ami-0c1a7f89451184c8b   # Ubuntu Server 20.04 LTS (HVM) 
  16.   actions: 
  17.     - stop 

(3)Security-group-check.yml

當開發人員在創建POC虛擬機時傾向于允許SSH上的所有流量,或者在測試期間,有時允許端口22訪問所有端口,但忘記刪除該規則時,將會看到一個更常見的問題。以下的策略可以通過自動從所有組中刪除SSH訪問,并僅向安全組添加網絡IP來解決這些問題。

  1. policies: 
  2.   - name: sg-remove-permission 
  3.     resource: security-group 
  4.     filters: 
  5.        - or
  6.              - type: ingress 
  7.                IpProtocol: "-1" 
  8.                Ports: [22] 
  9.                Cidr: "0.0.0.0/0" 
  10.              - type: ingress 
  11.                IpProtocol: "-1" 
  12.                Ports: [22] 
  13.                CidrV6: "::/0" 
  14.     actions: 
  15.       - type: set-permissions 
  16.         remove-ingress: matched 
  17.         add-ingress: 
  18.           - IpPermissions: 
  19.             - IpProtocol: TCP 
  20.               FromPort: 22 
  21.               ToPort: 22 
  22.               IpRanges: 
  23.                 - Description: VPN1 Access 
  24.                   CidrIp: "10.10.0.0/16" 

支持Kubernetes資源

現在可以管理Kubernetes資源,如部署、pod、DaemonSet和卷。以下是可以使用Cloud Custodian編寫的一些示例策略。

  • 刪除POC和未標記的資源。
  • 更新k8資源的標簽和補丁。
  • 根據調查結果調用Webhook。
  1. kubernetes-delete-poc-resource.yml   
  2. policies: 
  3.   - namedelete-poc-namespace 
  4.     resource: k8s.namespace 
  5.     filters: 
  6.     - type: value 
  7.       key'metadata.name' 
  8.       op: regex 
  9.       value: '^.*poc.*$' 
  10.     actions: 
  11.       - delete 
  12.  
  13.   - namedelete-poc-deployments 
  14.     resource: k8s.deployment 
  15.     filters: 
  16.     - type: value 
  17.       key'metadata.name' 
  18.       op: regex 
  19.       value: '^.*poc.*$' 
  20.     actions: 
  21.       - delete 

注意:Cloud Custodian Kubernetes資源仍在開發中。

可以稱為Cloud Custodian的模式類型有哪些?

  • pull:默認方法可以人工運行。首選在CI/CD工具cron中添加它。
  • 定期:根據策略配置云計算資源(例如,帶有CloudWatch cron的AWS Lambda)并按計劃執行。
  • 根據云計算提供商的自定義模式:在事件匹配時執行。

將Cloud Custodian與Jenkins CI集成

為簡單起見,使用Cloud Custodian docker映像并將憑據作為環境變量注入。

注:機密文件應該有大寫和默認區域的密鑰。對于Kubernetes,應該將KUBE CONFIG文件裝入容器中。

  1. export AWS_ACCESS_KEY_ID=<YOUR_AWS_ACCESS_KEY> 
  2. export AWS_SECRET_ACCESS_KEY=<YOUR_AWS_SECRET_ACCESS_KEY> 
  3. export AWS_DEFAULT_REGION=<YOUR_DEFAULT_REGION> 
  4.  
  5. pipeline{ 
  6.     agent{ label 'worker1'
  7.     stages{ 
  8.         stage('cloudcustodian-non-prod'){ 
  9.             steps{ 
  10.                 dir("non-prod"){ 
  11.                     withCredentials([file(credentialsId: 'secretfile', variable: 'var_secretfile')]) 
  12.                     { 
  13.                     sh ''
  14.                     source $var_secretfile  > /dev/null 2>&1 
  15.                     env | grep "^AWS\\|^AZURE\\|^GOOGLE\\|^KUBECONFIG" > envfile 
  16.  
  17.                     for files in $(ls | egrep '.yml|.yaml'
  18.                     do 
  19.                         docker run --rm -t \ 
  20.                         -v $(pwd)/output:/opt/custodian/output \ 
  21.                         -v $(pwd):/opt/custodian/ \ 
  22.                         --env-file envfile \ 
  23.                         cloudcustodian/c7n run -v  -s /opt/custodian/output /opt/custodian/$files 
  24.                     done 
  25.                     ''
  26.                     } 
  27.                 } 
  28.             } 
  29.         } 
  30.         stage("cloudcustodian-prod"){ 
  31.             steps{ 
  32.                 dir("prod"){ 
  33.                     withCredentials([file(credentialsId: 'secretfile', variable: 'var_secretfile')]) 
  34.                     { 
  35.                     sh ''
  36.                     source $var_secretfile  > /dev/null 2>&1 
  37.                     env | grep "^AWS\\|^AZURE\\|^GOOGLE\\|^KUBECONFIG" > envfile 
  38.  
  39.                     for files in $(ls | egrep '.yml|.yaml'
  40.                     do 
  41.                         docker run --rm -t \ 
  42.                         -v $(pwd)/output:/opt/custodian/output \ 
  43.                         -v $(pwd):/opt/custodian/ \ 
  44.                         --env-file envfile \ 
  45.                         cloudcustodian/c7n run -v -s /opt/custodian/output /opt/custodian/$files 
  46.                     done 
  47.                     ''
  48.                     } 
  49.                 } 
  50.             } 
  51.         } 
  52.     } 

Jenkins控制臺輸出:

工具和功能

Cloud Custodian擁有許多由社區開發的附加工具。

(1)多區域和多賬戶支持

可以使用c7n-org插件來配置多個AWS、AZURE、GCP帳戶并并行運行它們。Flag–regionall可用于跨所有區域運行相同的策略。

(2)通知

c7n-mailer插件為警報通知提供了很大的靈活性,可以使用Webhook、電子郵件、隊列服務、Datadog、Slack和Splunk來發出警報。

(3)自動資源標記

c7n_trailcreator腳本將處理CloudTrail記錄以創建資源及其創建者的SQLite DB,然后使用該SQLite DB用其創建者的姓名標記資源。

(4)記錄和報告

它提供JSON和CSV格式的報告。還可以在云原生日志記錄中收集這些指標,并生成漂亮的儀表板。將日志存儲在本地、S3或Cloudwatch上。一致的日志記錄格式可以輕松地對策略進行故障排除。

(5)Custodian試運行

在試運行中,策略的操作部分被忽略。它顯示了哪些資源將受到政策的影響。在運行實際代碼之前先進行試運行始終是最佳實踐。

(6)Custodian緩存

當執行任何策略時,它會從云中獲取數據并將其存儲在本地15分鐘。緩存用于最小化API調用,可以使用–cache-period0選項設置緩存。

(7)編輯器集成

它可以與Visual Studio Code集成以進行自動編譯和建議。

(8)Custodian模式

可以使用custodian schema命令來找出Cloud Custodian中可用的資源、操作和過濾器的類型。

  1. custodian schema    #Shows all resource available in custodian 
  2. custodian schema aws    #Shows aws resource available in custodian 
  3. custodian schema aws.ec2     #Shows aws ec2 action and filters 
  4. custodian schema aws.ec2.actions     #Shows aws ec2 actions only 
  5. custodian schema aws.ec2.actions.stop    #Shows ec2 stop sample policy and schema 

Cloud Custodian如何優于其他工具?

  • 跨多個云平臺和Kubernetes編寫策略的簡單性和一致性。
  • 使用c7n-org的多賬戶和多區域支持。
  • 使用c7n-mailer支持廣泛的通知渠道。
  • Custodian的Terraform提供程序支持針對Terraform IaaC模塊編寫和評估Custodian策略。
  • Custodian與AWS配置深度集成。它可以部署config支持的任何配置規則。此外,它還可以為AWS自定義配置策略自動配置AWS Lambda。
  • 如果需要,可以在Python中實施自定義策略,因為它支持根據云計算提供商SDK的所有規則。
  • Cloud Custodian是一個開源的CNCF沙盒項目。

Cloud Custodian限制

  • 無默認儀表板(支持AWS原生儀表板,但也可以將指標輸出發送到Elasticsearch/Grafana等,并創建儀表板)。
  • Cloud Custodian無法阻止自定義層驗證預部署。它只能定期運行或基于某些事件運行。
  • Cloud Custodian沒有任何內置策略。用戶需要自己編寫所有策略。但是,它有很多很好的示例策略(AWS、Azure、GCP),可以用作參考。

結論

Cloud Custodian能夠將規則和補救措施定義為一項策略,以促進管理良好的云計算基礎設施,還可以使用它來編寫管理Kubernetes資源(如部署、pod等)的策略。與其他基于云的治理工具相比,它提供了一個非常簡單的DSL來編寫策略及其跨云平臺的一致性。這樣Custodian就減少了在云中安全創新的摩擦,并提高了效率。

用戶可以使用Cloud Custodian通過實施非工作時間和清理策略來優化云成本。它還包括許多插件,如多賬戶/區域支持、廣泛的通知工具(Slack、SMTP、SQS、Datadog、Webhooks)等。

原文標題:Implementing Cloud Governance as a Code Using Cloud Custodian,作者:Alok Maurya

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

責任編輯:華軒 來源: 51CTO
相關推薦

2022-09-30 00:00:00

云計算自動化IT

2022-09-19 07:03:47

IaCTerratest測試

2023-03-27 10:00:15

2012-03-21 09:36:48

私有云IT即服務ITaaS

2022-01-10 08:00:00

云原生云計算技術

2023-10-25 16:31:50

云原生數據治理

2017-07-03 11:06:03

混合云平臺存儲

2021-11-24 22:52:09

數據治理企業IT

2015-08-26 10:57:01

數據安全備份即服務云服務

2014-12-09 14:10:46

甲骨文Oracle數據庫

2023-03-20 08:00:00

公共云開發Spring Clo

2021-07-26 09:53:58

IaC基礎設施即代碼云數據中心

2021-07-27 06:51:53

Istio 微服務Service Mes

2009-03-12 13:49:30

DataTemplatWPFC#

2017-04-12 20:25:03

貴州政務云

2011-10-19 14:31:41

云計算代碼云開發

2017-03-02 14:12:13

流水線代碼Clojure

2024-02-04 09:13:24

基礎設施代碼DevOps

2012-08-14 13:24:27

Informatica云計算

2012-07-03 09:27:01

工作場所即服務WpaaSBYOD
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品一二三区在线观看 | 日韩欧美一区在线 | 亚洲va欧美va天堂v国产综合 | 亚洲精品日韩在线 | 激情视频中文字幕 | 国内自拍偷拍 | 久久高清国产 | 男人的天堂在线视频 | 拍拍无遮挡人做人爱视频免费观看 | 中文字幕亚洲一区 | 久久久女 | 亚洲视频免费 | 日韩二区 | 免费在线一区二区三区 | 欧美日韩精品亚洲 | 在线欧美一区 | 日本福利视频 | 精品免费国产一区二区三区四区 | 欧美二区乱c黑人 | 亚洲成人免费电影 | 天天操欧美 | 久久激情网 | 久久久国产一区二区三区 | 欧美h版| 日韩在线视频免费观看 | 午夜在线影院 | 日韩精品在线视频 | 91精品国产一区二区三区香蕉 | 麻豆国产一区二区三区四区 | 麻豆精品久久 | 在线视频国产一区 | 欧美一级欧美一级在线播放 | 国产精品久久久久无码av | 国产精品久久久久久久久久久久午夜片 | 天天干天天爽 | 福利一区视频 | 亚洲人成在线播放 | 欧美精品一区二区三区四区 | 久久久久久国产精品 | www.久草 | 久久精品在线播放 |