日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
如何使用CloudCustodian實(shí)現(xiàn)云治理即代碼

如何使用Cloud Custodian實(shí)現(xiàn)云治理即代碼

譯文
作者:李睿 2022-01-14 08:00:00

云計(jì)算 用戶(hù)采用Cloud Custodian能夠編寫(xiě)簡(jiǎn)單的YAML策略,以創(chuàng)建管理良好的云計(jì)算基礎(chǔ)設(shè)施。

【51CTO.com快譯】用戶(hù)采用Cloud Custodian能夠編寫(xiě)簡(jiǎn)單的YAML策略,以創(chuàng)建管理良好的云計(jì)算基礎(chǔ)設(shè)施。

在當(dāng)今不斷擴(kuò)展的云計(jì)算基礎(chǔ)設(shè)施中,很難管理所有資源都合規(guī)。而企業(yè)都有一組需要遵循的策略,用于檢測(cè)違規(guī)行為并對(duì)其云計(jì)算資源使用采取補(bǔ)救措施。這通常是通過(guò)編寫(xiě)多個(gè)自定義腳本并使用一些第三方工具和集成來(lái)完成的。許多開(kāi)發(fā)團(tuán)隊(duì)都知道管理和編寫(xiě)自定義腳本并跟蹤這些腳本有多么困難。但他們可以利用Cloud Custodian DSL策略輕松管理云計(jì)算資源。

什么是云治理?

云治理是一個(gè)框架,它定義了開(kāi)發(fā)人員如何創(chuàng)建策略來(lái)控制成本、最小化安全風(fēng)險(xiǎn)、提高效率以及加速部署。

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

(1)AWS Config

AWS Config主要記錄和監(jiān)控AWS資源的所有配置數(shù)據(jù),可以構(gòu)建規(guī)則來(lái)幫助強(qiáng)制執(zhí)行使用的合規(guī)性。比如設(shè)置多賬戶(hù)和多區(qū)域選項(xiàng)。它還提供了一些可以使用的預(yù)定義AWS托管規(guī)則,或者用戶(hù)可以自己編寫(xiě)自定義規(guī)則。還可以根據(jù)匹配情況采取補(bǔ)救措施。對(duì)于自定義策略,需要編寫(xiě)自己的lambda函數(shù)來(lái)執(zhí)行操作。

但是,用戶(hù)可以使用Cloud Custodian設(shè)置AWS Config規(guī)則和使用c7n-org支持多賬戶(hù)和多區(qū)域的自定義規(guī)則。此外,它還可以自動(dòng)配置AWS lambda函數(shù)。

(2)Azure政策

Azure政策跨Azure資源實(shí)施組織標(biāo)準(zhǔn)。它提供了一個(gè)聚合視圖來(lái)評(píng)估環(huán)境的整體狀態(tài),并且能夠深入到每個(gè)資源、每個(gè)策略的粒度(例如,用戶(hù)只能創(chuàng)建A和B系列虛擬機(jī))。用戶(hù)可以打開(kāi)內(nèi)置策略或?yàn)樗匈Y源創(chuàng)建自定義策略。它還可以對(duì)不合規(guī)的資源采取自動(dòng)修復(fù)措施。

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

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

什么是Cloud Custodian?

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

用戶(hù)可以使用Cloud Custodian,如下所示:

  • 合規(guī)性和安全性即代碼:可以將簡(jiǎn)單的YAML DSL策略編寫(xiě)作為代碼。
  • 節(jié)約成本:刪除不需要的資源,并實(shí)施開(kāi)/關(guān)時(shí)間政策可以節(jié)約成本。
  • 運(yùn)營(yíng)效率:通過(guò)添加治理即代碼,它減少了在云中安全創(chuàng)新的摩擦,并提高了開(kāi)發(fā)人員的效率。

它是如何工作的?

當(dāng)運(yùn)行Cloud Custodian命令時(shí),根據(jù)云計(jì)算提供商的不同情況,將資源、過(guò)濾器、操作作為輸入,并轉(zhuǎn)換為云計(jì)算提供商API調(diào)用(例如AWS Boto3 API)。無(wú)需擔(dān)心自定義腳本或AWS CLI命令。用戶(hù)可以獲得清晰易讀的策略以及Cloud Custodian中內(nèi)置的許多常見(jiàn)過(guò)濾器和操作。如果需要自定義過(guò)濾器,總是可以使用JMESPath來(lái)編寫(xiě)過(guò)濾器。

在某些情況下,可能需要定期或根據(jù)某些事件運(yùn)行政策。為此Cloud Custodian自動(dòng)預(yù)配lambda函數(shù)和CloudWatch事件規(guī)則。CloudWatch事件規(guī)則可以安排(每10分鐘)或觸發(fā)以響應(yīng)CloudTrail、EC2實(shí)例狀態(tài)事件等的API調(diào)用。

如何安裝和設(shè)置Cloud Custodian?

可以簡(jiǎn)單地使用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變量中獲取的,用戶(hù)應(yīng)該有權(quán)訪問(wèn)在策略YAML文件中定義的所需IAM角色和策略。另一種選擇是在容器內(nèi)掛載文件/目錄。

Cloud Custodian policy.yaml解釋

Cloud Custodian有一個(gè)簡(jiǎn)單的YAML文件,其中包括資源、過(guò)濾器和操作:

  • 資源:Custodian能夠針對(duì)多個(gè)云計(jì)算提供商(AWS、GCP、Azure),每個(gè)提供商都有自己的資源類(lèi)型(例如ec2、s3存儲(chǔ)桶)。
  • 過(guò)濾器:過(guò)濾器是Custodian中針對(duì)特定資源子集的方式。它可以基于某些日期、標(biāo)簽等,可以使用JMESPath表達(dá)式編寫(xiě)自定義過(guò)濾器。
  • 操作:操作是對(duì)與過(guò)濾器匹配的資源做出的實(shí)際決定。這一操作可以很簡(jiǎn)單,例如向所有者發(fā)送報(bào)告,說(shuō)明資源與云治理規(guī)則不匹配或刪除資源。

操作和過(guò)濾器都可以結(jié)合任意多的規(guī)則來(lái)很好地表達(dá)需求。

  
 
 
 
  1. - name: first-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策略示例,但還是挑選了一些策略,用戶(hù)可以使用這些策略來(lái)節(jié)省成本和合規(guī)。

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

組織面臨的最常見(jiàn)問(wèn)題之一是刪除舊的AMI、快照和卷的復(fù)雜性,這些舊的AMI、快照和卷在環(huán)境中存在1年多并且增加了更多的費(fèi)用。最終,必須編寫(xiě)多個(gè)自定義腳本來(lái)處理這種情況。

以下是刪除超過(guò)30天的快照的簡(jiǎn)單策略:

  
 
 
 
  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

以下是如何運(yùn)行Cloud Custodian策略的示例。

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

每次運(yùn)行Custodian命令時(shí),它都會(huì)在通過(guò)-s選項(xiàng)(例如,

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

  • custodian-run.log:所有控制臺(tái)日志都存儲(chǔ)在這里。
  • resources.json:過(guò)濾的資源列表。
  • metadata.json:關(guān)于過(guò)濾資源的元數(shù)據(jù)。
  • action-*:已采取行動(dòng)的資源列表。
  • $HOME/.cache/cloud-custodian.cache:所有云API調(diào)用結(jié)果都緩存在這里。默認(rèn)值為15分鐘。

要獲得過(guò)濾的資源報(bào)告,可以運(yùn)行以下命令。在默認(rèn)情況下,它提供CSV格式的報(bào)告,但可以通過(guò)傳遞–format json來(lái)更改它。

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

(2)only-approved-ami.yml

停止運(yùn)行與可信AMI列表不匹配的EC2。

  
 
 
 
  1. policies:
  2. - name: only-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

當(dāng)開(kāi)發(fā)人員在創(chuàng)建POC虛擬機(jī)時(shí)傾向于允許SSH上的所有流量,或者在測(cè)試期間,有時(shí)允許端口22訪問(wèn)所有端口,但忘記刪除該規(guī)則時(shí),將會(huì)看到一個(gè)更常見(jiàn)的問(wèn)題。以下的策略可以通過(guò)自動(dòng)從所有組中刪除SSH訪問(wèn),并僅向安全組添加網(wǎng)絡(luò)IP來(lái)解決這些問(wèn)題。

  
 
 
 
  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資源

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

  • 刪除POC和未標(biāo)記的資源。
  • 更新k8資源的標(biāo)簽和補(bǔ)丁。
  • 根據(jù)調(diào)查結(jié)果調(diào)用Webhook。
  
 
 
 
  1. kubernetes-delete-poc-resource.yml  
  2. policies:
  3.   - name: delete-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.   - name: delete-poc-deployments
  13.     resource: k8s.deployment
  14.     filters:
  15.     - type: value
  16.       key: 'metadata.name'
  17.       op: regex
  18.       value: '^.*poc.*$'
  19.     actions:
  20.       - delete

注意:Cloud Custodian Kubernetes資源仍在開(kāi)發(fā)中。

可以稱(chēng)為Cloud Custodian的模式類(lèi)型有哪些?

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

將Cloud Custodian與Jenkins CI集成

為簡(jiǎn)單起見(jiàn),使用Cloud Custodian docker映像并將憑據(jù)作為環(huán)境變量注入。

注:機(jī)密文件應(yīng)該有大寫(xiě)和默認(rèn)區(qū)域的密鑰。對(duì)于Kubernetes,應(yīng)該將KUBE CONFIG文件裝入容器中。

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

Jenkins控制臺(tái)輸出:

工具和功能

Cloud Custodian擁有許多由社區(qū)開(kāi)發(fā)的附加工具。

(1)多區(qū)域和多賬戶(hù)支持

可以使用c7n-org插件來(lái)配置多個(gè)AWS、AZURE、GCP帳戶(hù)并并行運(yùn)行它們。Flag–regionall可用于跨所有區(qū)域運(yùn)行相同的策略。

(2)通知

c7n-mailer插件為警報(bào)通知提供了很大的靈活性,可以使用Webhook、電子郵件、隊(duì)列服務(wù)、Datadog、Slack和Splunk來(lái)發(fā)出警報(bào)。

(3)自動(dòng)資源標(biāo)記

c7n_trailcreator腳本將處理CloudTrail記錄以創(chuàng)建資源及其創(chuàng)建者的SQLite DB,然后使用該SQLite DB用其創(chuàng)建者的姓名標(biāo)記資源。

(4)記錄和報(bào)告

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

(5)Custodian試運(yùn)行

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

(6)Custodian緩存

當(dāng)執(zhí)行任何策略時(shí),它會(huì)從云中獲取數(shù)據(jù)并將其存儲(chǔ)在本地15分鐘。緩存用于最小化API調(diào)用,可以使用–cache-period0選項(xiàng)設(shè)置緩存。

(7)編輯器集成

它可以與Visual Studio Code集成以進(jìn)行自動(dòng)編譯和建議。

(8)Custodian模式

可以使用custodian schema命令來(lái)找出Cloud Custodian中可用的資源、操作和過(guò)濾器的類(lèi)型。

  
 
 
 
  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如何優(yōu)于其他工具?

  • 跨多個(gè)云平臺(tái)和Kubernetes編寫(xiě)策略的簡(jiǎn)單性和一致性。
  • 使用c7n-org的多賬戶(hù)和多區(qū)域支持。
  • 使用c7n-mailer支持廣泛的通知渠道。
  • Custodian的Terraform提供程序支持針對(duì)Terraform IaaC模塊編寫(xiě)和評(píng)估Custodian策略。
  • Custodian與AWS配置深度集成。它可以部署config支持的任何配置規(guī)則。此外,它還可以為AWS自定義配置策略自動(dòng)配置AWS Lambda。
  • 如果需要,可以在Python中實(shí)施自定義策略,因?yàn)樗С指鶕?jù)云計(jì)算提供商SDK的所有規(guī)則。
  • Cloud Custodian是一個(gè)開(kāi)源的CNCF沙盒項(xiàng)目。

Cloud Custodian限制

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

結(jié)論

Cloud Custodian能夠?qū)⒁?guī)則和補(bǔ)救措施定義為一項(xiàng)策略,以促進(jìn)管理良好的云計(jì)算基礎(chǔ)設(shè)施,還可以使用它來(lái)編寫(xiě)管理Kubernetes資源(如部署、pod等)的策略。與其他基于云的治理工具相比,它提供了一個(gè)非常簡(jiǎn)單的DSL來(lái)編寫(xiě)策略及其跨云平臺(tái)的一致性。這樣Custodian就減少了在云中安全創(chuàng)新的摩擦,并提高了效率。

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

原文標(biāo)題:Implementing Cloud Governance as a Code Using Cloud Custodian,作者:Alok Maurya

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】


當(dāng)前題目:如何使用CloudCustodian實(shí)現(xiàn)云治理即代碼
標(biāo)題來(lái)源:http://www.5511xx.com/article/dpjssij.html