天天看點

使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽

使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽

背景

标簽被廣泛應用于許多雲上管理場景,比如資源管理、财務管理、自動化運維和權限管理。有了标簽,資源就容易被聚類或者被索引,然而,對于許多使用者而言,管理大量标簽始終是一個挑戰。特别是,當使用者需要給一系列關聯資源統一打标時。

雲資源管理過程中,有很多場景需要建立一個功能子產品,這個子產品包含一個父資源和多個子資源。比如說,當使用者建立一個ECS時,他一定需要建立一個磁盤,有時也會建立一個鏡像,同時,磁盤也可能存在快照。因為這些資源屬于同一個父資源,使用者希望,當給父資源打标簽時,其所包含的子資源也要繼承同樣的标簽,或者當使用者在父資源下添加新的子資源時,使用者希望子資源自動繼承父資源已經有的标簽。我們再舉一個例子,專有網絡(VPC)包含交換機、路由表、NAT網關和VPN網關作為子資源,彈性公網IP可以關聯到NAT網關。我們時常聽到使用者回報,當在VPC下建立新的子資源時,希望子資源能夠自動繼承VPC的标簽。

在這篇文章中,我們将介紹子資源如何自動從父資源繼承标簽。我們将使用以上VPC的場景來講解這個解決方案,但是這個方案并不局限于VPC,可以被應用在任何類似的場景。

目标

下圖展示了VPC和子資源之間的關系

使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽

這篇文章中的解決方案将實作以下兩個目标

  1. 當在VPC下建立子資源時,子資源自動繼承父資源的标簽
  2. 當給VPC添加新标簽時,所有子資源自動繼承新标簽

解決方案概覽

此解決方中使用到的雲産品

這些雲産品将按照下圖的關系進行內建

使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽

操作審計持續記錄VPC和其子資源的操作,其中每一條記錄都會被路由到事件總線(EventBridge),然後我們通過事件總線中的規則過濾出我們感興趣的事件。我們會建立2條規則,規則一過濾出所有給VPC打标的操作(TagResources),規則二過濾出建立VPC子資源的操作。最後我們把兩個規則分别連接配接到相應的函數,以實作自動打标的目标

解決方實施

接下來我們逐漸描述該方案的實施過程

為了成功實施該方案,以下條件必須首先滿足

  • 一個阿裡雲賬号
  • 對于NodeJS有基本了解
  • 確定一下步驟都在同一個區域進行

操作審計預設自動開啟,此處無需額外操作和配置

建立一個阿裡雲服務

為了在函數中給資源打标,我們必須賦予函數VPC和Tag相應權限

  1. 打開通路控制→ 角色 → 建立角色
  2. 選擇阿裡雲服務
使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽
  1. 角色命名為TagVPCRole
  2. 選擇受信服務函數計算
使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽
  1. 點選完成
  2. 我們需要給這個角色賦予三個角色,

    AliyunVPCReadOnlyAccess

    ,

    AliyunLogFullAccess

    and

    AliyunTagAdministratorAccess

    :
使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽

建立一個函數服務

接下來我們建立執行打标操作的函數

1.  打開 函數計算

2.  點選 服務及函數

3.  建立一個名為 VPCTagService 的服務

4.  在服務表中找到上面建立的服務

5.  點選 配置

6.  在角色配置部分, 選擇 TagVPCRole

使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽

7.  儲存

建立函數func01

當VPC增加新标簽時,這個函數會自動給子資源打上同樣的标簽

1.  打開函數 函數計算 → 服務 → 函數

2.  點選 建立函數, 建立一個名為func01的函數

使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽

3.  建立完成後,你會被重定向到函數編輯頁面. 點選 上傳代碼,選擇 上傳Zip檔案

使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽

4.  Zip檔案可以從這裡擷取

here

5.  上傳成功後確定點選 儲存和部署,使代碼生效

使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽

建立函數func02

當VPC增加新的子資源時,這個函數會自動給子資源打上同樣的标簽

1.  打開函數 函數計算 → 服務 → 函數

2.  點選 建立函數, 建立一個名為func02的函數

使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽
使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽
使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽

預設事件總線會監聽有操作審計的事件,但是我們并不想因為任意事件觸發一次函數執行。我們隻關心兩類事件,第一類,VPC打标事件,第二類建立VPC子資源事件。是以,我們建立兩個規則,分别過濾這兩類事件。

建立規則1

第一個規則命名為

TagVPC

. 這個規則将用來過濾VPC上的

TagResources

事件。

1.  打開 事件總線->default->事件規則->建立規則

2.  定義事件模式

{
    "data": {
        "eventName": [
            "TagResources"
        ],
        "serviceName": [
            "Vpc"
        ]
    },
    "source": [
        "acs.vpc"
    ],
    "type": [
        "vpc:ActionTrail:AliyunServiceEvent",
        "vpc:ActionTrail:ApiCall",
        "vpc:ActionTrail:ConsoleOperation"
    ]
}           

3.  下一步我們把規則的目标指向對應的函數

  選擇 函數計算 作為服務類型,選擇函數func01

使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽使用阿裡雲操作審計(ActionTrail)自動繼承父資源标簽

建立規則 2

第二條規則命名為

CreateVPCResources

. 這條規則用來過濾建立子資源事件

{
    "data": {
        "resourceType": [
            "ACS::VPC::NatGateway",
            "ACS::VPNGateway::VpnGateway",
            "ACS::ECS::Instance;ACS::EIP::EipAddress",
            "ACS::VPC::VSwitch;ACS::VPC::VPC",
            "ACS::VPC::RouteTable;ACS::VPC::VPC",
            "ACS::VPC::VPC"
        ],
        "eventName": [
            "Create",
            "AssociateEipAddress",
            "CreateVSwitch",
            "CreateRouteTable"
        ]
    },
    "source": [
        "acs.vpc"
    ],
    "type": [
        "vpc:ActionTrail:AliyunServiceEvent",
        "vpc:ActionTrail:ApiCall",
        "vpc:ActionTrail:ConsoleOperation"
    ]
}           

2. 按照上面的方法,把func02添加為這個規則的目标

總結

這篇文章講述了如何從VPC向其子資源自動傳播标簽。此方案适用了

ActionTrail EventBridge

Function Compute

. 雖然我們使用了VPC作為例子,但這個方法同樣适用于其他類似場景

繼續閱讀