iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 21
0
Elastic Stack on Cloud

ES 新手,破門而入!!!系列 第 21

【ES新手,破門而入!】Day21 - Security,保護 ES 大作戰!登陸篇

你可以學到?

這兩天,你將學到如何確保 Elasticsearch 的安全性。

本篇的主題包含有:

  1. 阻擋未經授權的存取

那我們就開始吧!

控制使用者的存取權

為了防止對你的 ES 做未經授權的存取,我們必須要有一種方式來授權使用者,然而,單單只是驗證使用者可不可以用這樣,在實務上往往是不夠的,我們還會需要更進一步地去控制什麼資料使用者可以存取,以及什麼任務使用者可以執行。

ES 安全功能讓你可以:

  • 授權使用者
  • 為角色分配訪問權限
  • 為使用者分配這些角色

舉個例子如上圖:

  • 當今天沒有安全性的概念下,所有的 node、index,都可以被任一個使用者做存取與修改,這在現實營運的系統上,是非常恐怖的一件事情!
  • 當今天引入安全性的概念,將不同類別的使用者權限有所區分,限定某些使用者只能存取指定適當的內容,這樣才不會因為人為疏失造成毀滅性的悲劇

Role-Based Access Control(RBAC)

安全功能提供了基於 角色(Role) 的訪問控制(RBAC)機制。使用者可以訪問包含不同權限的多個角色。每個權限設定是針對受保護資源的一組特權。

下圖簡單描繪了 RBAC 的意義:

  • User(使用者):經過授權的使用者
  • Role(角色):一組命名的權限
  • Permission(權限):針對受保護資源的一組特權
  • Privilege(特權):一群命名的行為,使用者可以針對受保護的資源執行
  • Secured Resource(受保護的資源):一個存取權限受限制的資源,例如索引、文件、欄位、ES cluster...等等,都可以是保護的物件

內建的使用者與角色

Elastic Stack 安全功能提供了一些內建使用者,這些資訊儲存在 .security 的索引中並由 Elasticsearch 管理。

這些內建使用者有著固定的一組角色,在使用他們之前你必須要先設置好他們的密碼,下表是所有內建的使用者:

使用者名稱 說明
elastic 超級使用者,有完整存取 cluster 的權限
kibana 被 Kibana 使用的使用者,用於 Kibana 和 ES 的溝通
logstash_system 被 Logstash 使用的使用者,用於 Logstash 儲存監控資訊進 ES
beats_system 被不同 Beats 使用的使用者,用於 Beats 儲存監控資訊進 ES
apm_system 被 APM server 使用的使用者,用於 APM server 儲存監控資訊進 ES
remote_monitoring_user 被 Metricbeat 使用的使用者,用於 Metricbeat 收集和儲存監控資訊進 ES

除了內建使用者之外,當然也會有自定義的使用者,同樣地,這類型的使用者我們也可以指定內建的角色給他們歐!

關於內建角色的權限資訊,更詳細的可以參考這裡:https://www.elastic.co/guide/en/elasticsearch/reference/7.4/built-in-roles.html

內建的方式授權使用者

授權使用者的方式有許多方法,這邊我們來講兩個內建的方式(使用者帳號密碼的資訊,會儲存在 .security 索引中):

  • Security API
  • Kibana

Security API

我們可以管理所有的使用者透過 Security API,所有 Security API 的請求皆是安全的 HTTP 請求,透過這個 API 我們可以做到:

  • 新增和更新使用者/角色
  • 修改密碼
  • 刪除使用者/角色
  • Disable/Enable 使用者
  • GET 使用者/角色

下面是一個 POST 請求新增一位 gg30day 使用者的範例:

POST /_security/user/gg30day
{
  "password" : "iloveiThelpironman2020",
  "roles" : [ "es_cloud"],
  "full_name" : "GG 30 Day",
  "email" : "ironman2020@gg30day.com",
  "metadata" : {
    "hometown" : "鐵人賽大家加油!快要到終點了!"
  }
}

Kibana

在 Kibana 上我們也可以達到和 Security API 相同的操作效果,這部分我們就留到明天的實作篇,來實際操作一遍給大家看看吧!

今日心得與短結

安全性真的是一個系統不可或缺的一環!隨著學習的內容一步一步的往前,更可以了解到要建構一套完善的服務需要考慮的點確實不少~

今天我們學到在 Elastic Stack 中,安全性的概念與做法,明天我們就來實際操作看看吧!


上一篇
【ES新手,破門而入!】Day20 - 地球移民火星!Splunk SPL 移民 Elastic Stack 行前須知
下一篇
【ES新手,破門而入!】Day22 - Security,保護 ES 大作戰!作戰篇
系列文
ES 新手,破門而入!!!30

尚未有邦友留言

立即登入留言