Nesne Depolama

OpenStack Nesne Depolama (swift) servisi, HTTP üzerinden veri depolayan ve alana yazılım getiren bir yazılım sağlar. Nesneler (verilerin blob’ları), anonim salt okunur erişim, ACL tanımlı erişim veya hatta geçici erişim sunan bir kuruluş hiyerarşisinde saklanır. Nesne Depolama Alanı, katman üzerinden uygulanan birden çok belirteç tabanlı kimlik doğrulama mekanizmasını desteklemektedir.

Applications store and retrieve data in Object Storage via an industry-standard HTTP RESTful API. Back end components of Object Storage follow the same RESTful model, although some APIs, such as those managing durability, are kept private to the cluster. For more details on the API see the OpenStack Storage API.

Nesne Depolama bileşenleri aşağıdaki birincil gruplara ayrılır:

  1. Vekil servisleri

  2. Kimlik doğrulama servisleri

  3. Depolama servisleri

    • Hesap servisi

    • Kapsayıcı servisi

    • Nesne servisi

_images/swift_network_diagram-1.png

OpenStack Nesne Depolama Yönetimi Kılavuzu’ndaki (2013) örnek bir şema

Not

Nesne Deposu kurulumunun İnternet’te olması gerekmez ve ayrıca kamuya açık switch, organizasyonun dahili ağ altyapısının bir parçası olan özel bir bulut olabilir.

Ağ güvenliği

Nesne Depolama servisinin güvenliğini sağlamak, ağ bileşenini güvence altına almakla başlar. Ağ bölümünü atladıysanız, şu adrese gidin .

Yüksek kullanılabilirlik için veriyi çoğaltmak için depolama servisi düğümleri arasında rsync protokolü kullanılır. Ayrıca, vekil servisi, istemci sonlandırma noktası ile bulut ortamı arasında ileri geri veri iletirken depolama servisi ile iletişim kurar.

Uyarı

Nesne Depolama, düğümler arası iletişimle şifreleme veya kimlik doğrulama kullanmaz. Bu nedenle mimari diyagramlarında özel bir anahtar veya özel ağ ([V]LAN) görüyorsunuz. Bu veri alanı diğer OpenStack veri ağlarından da ayrı olmalıdır. Güvenlik alanlarıyla ilgili daha fazla tartışma için bkz. Güvenlik sınırları ve tehditler.

Tüyo

Veri alanındaki depolama düğümleriniz için özel bir (V)LAN ağ segmenti kullanın.

Bu, vekil düğümlerin çift arabirimlere (fiziksel veya sanal) sahip olmasını gerektirir:

  1. Bir tanesi tüketicilerin ulaşabileceği bir kamusal arayüz olarak.

  2. Depolama düğümlerine erişim ile gizli bir arayüz olarak diğeri.

Aşağıdaki görsel olası bir ağ mimarisini göstermektedir.

_images/swift_network_diagram-2.png

Bir yönetim düğümü ile Nesne Depolama ağ mimarisi (OSAM)

Genel servis güvenliği

Servisleri root olmayan bir kullanıcı ile çalıştırın

Nesne Depolama servisini root (UID 0) servis hesabı altında çalışacak şekilde yapılandırmanızı öneririz. Bir öneri, swift birincil grubu olan swift kullanıcı adınızdır. Nesne Depolama servisleri arasında, örneğin, proxy-server, container-server, account-server bulunur. Kurulum ve yapılandırma için ayrıntılı adımlar OpenStack’teki Kurulum Kılavuzundaki `OpenStack Belgelendirme endeksinde yer alan Nesne Depolama Ekleme bölümünde bulunabilir.

Not

Yukarıdaki bağlantı varsayılan olarak Ubuntu sürümüdür.

Dosya izinleri

/etc/swift dizini, halka topolojisi ve ortam yapılandırması hakkında bilgi içerir. Aşağıdaki izinler önerilir:

# chown -R root:swift /etc/swift/*
# find /etc/swift/ -type f -exec chmod 640 {} \;
# find /etc/swift/ -type d -exec chmod 750 {} \;

Bu, yalnızca root’u, yapılandırma dosyalarını değiştirebilecek durumda kısıtlarken, swift grubundaki servislerin grup üyeliği yoluyla onları okumasına izin verir.

Depolama servislerini korumak

Çeşitli depolama servisleri için varsayılan dinleme portları şunlardır:

Servis adı

Port

Tip

Hesap servisi

6002

TCP

Kapsayıcı servisi

6001

TCP

Nesne Servisi

6000

TCP

Rsync 1

873

TCP

1

Rsync yerine ssync kullanılırsa, nesne servis portu dayanıklılığı korumak için kullanılır.

Önemli

Kimlik doğrulama, depolama düğümlerinde gerçekleşmez. Bu bağlantı noktalarından birinde bir depolama düğümüne bağlanabiliyorsanız, kimlik doğrulaması olmadan verilere erişebilir veya bunları değiştirebilirsiniz. Bu sorundan korunmak için daha önce özel bir depolama ağı kullanma konusunda verilen önerilere uymalısınız.

Nesne Depolama hesabı terminolojisi

Nesne Depolama hesabı, bir kullanıcı hesabı veya kimlik bilgisi değildir. İlişkiler şu şekilde açıklanmaktadır:

OpenStack Nesne Depolama hesabı

Kapsayıcıların koleksiyonu; kullanıcı hesapları veya kimlik doğrulaması değil. Hangi kullanıcılar hesapla ilişkilendirilir ve kullanıcılara nasıl erişebildikleri, kullanılan kimlik doğrulama sistemine bağlıdır. Bakınız Nesne Depolama kimlik doğrulama.

OpenStack Nesne Depolama kapsayıcıları.

Nesnelerin toplanması. Kapsayıcıdaki metaveriler, ACL’ler için kullanılabilir. ACL’lerin anlamı kullanılan doğrulama sistemine bağlıdır.

OpenStack Nesne Depolama nesneleri

Gerçek veri nesneleri. Nesne düzeyindeki ACL’ler metaverileri ile de mümkündür ve kullanılan doğrulama sistemine bağlıdır.

Her seviyede, hangi erişim türünün kime ait olduğunu belirleyen ACL’leriniz vardır. ACL’ler, hangi kimlik doğrulama sisteminin kullanıldığı temel alınarak yorumlanır. En yaygın olarak kullanılan iki kimlik doğrulama sağlayıcı türü Kimlik servisi (keystone) ve TempAuth’dur. Özel kimlik doğrulama sağlayıcıları da mümkündür. Daha fazla bilgi için bkz Nesne Depolama kimlik doğrulama.

Vekil servislerini korumak

Bir vekil düğümün en az iki arabirimi (fiziksel veya sanal) olması gerekir: biri kamu, diğeri gizli. Güvenlik duvarları veya servis bağlama, genel arabirimi koruyabilir. Halka açık servis, son nokta istemci isteklerini işleyen, kimlik doğrulamalarını yapan ve uygun eylemi gerçekleştiren bir HTTP web sunucusudur. Özel arabirim herhangi bir dinleme servisi gerektirmez, bunun yerine özel depolama ağı üzerindeki depolama düğümlerine giden bağlantılar kurmak için kullanılır.

HTTP dinleme portu

Web servisinizi, daha önce bahsedilen swift gibi root olmayan bir kullanıcı (UID 0 olmayan) olarak yapılandırmalısınız. Bunu kolaylaştırmak ve web kabının herhangi bir bölümünü root olarak çalıştırmaktan kaçınmak için 1024’ten daha büyük bir port kullanılması gereklidir. Normalde, HTTP REST API’sını kullanan ve kimlik doğrulama gerçekleştiren istemciler otomatik olarak kimlik doğrulama yanıtından istedikleri tam REST API URL’sini alırlar. OpenStack’in REST API’sı, bir istemcinin bir URL’de kimlik doğrulamasını yapmasına ve ardından gerçek servis için tamamen farklı bir URL kullanması için söylenmesine izin verir. Örneğin, bir Müşteri, https://identity.cloud.example.org:55443/v1/auth adresinde kimlik doğrulaması yapar ve kimlik doğrulama anahtarı cevabını alır ve Depolama URL’si (vekil düğümlerin URL’si veya yük dengeleyici) ise https://swift.cloud.example.org:44443/v1/AUTH_8980’dir.

Web sunucunuzu root olmayan bir kullanıcı olarak başlatılacak ve çalıştırılacak şekilde yapılandırma yöntemi web sunucusu ve işletim sistemine göre değişir.

Yük dengeleyici

Apache’yi kullanma seçeneği uygun değilse veya TLS çalışmalarınızı boşaltmak istediğiniz performans için özel bir ağ aygıtı yük dengeleyici kullanabilirsiniz. Bu, çoklu vekil düğümleri kullanıldığında yedeklilik sağlamak ve yük dengelemek için yaygın bir yöntemdir.

TLS’inizi boşaltmayı seçerseniz, yük dengeleyici ve vekil düğümleriniz arasındaki ağ bağlantısının özel (V)LAN segmentinde olduğundan emin olun; böylece ağdaki diğer düğümler (muhtemelen tehlikeye düşen) şifrelenmemiş trafiği dinleyemezler (sniff). Böyle bir ihlal ortaya çıkarsa, saldırgan uç nokta istemcisine veya bulut yöneticisi kimlik bilgilerine erişebilir ve bulut verisine erişebilir.

Kullandığınız kimlik doğrulama servisi (keystone) veya TempAuth gibi kimlik doğrulama servisi, bitiş noktası istemcilerine verilen yanıtlarda farklı bir URL’yi nasıl yapılandırdığınıza karar verecek; bu nedenle, tek bir vekil düğümü yerine yük dengeleyici kullanıyorlar.

Nesne Depolama kimlik doğrulama

Nesne Depolama Alanı, yalnızca genel genişletilebilirlik sağlamakla kalmaz, aynı zamanda son nokta istemcilerinin kimlik doğrulamasında kullanılan bir katman aracı yeteneği sağlamak için WSGI modelini kullanır. Kimlik doğrulama sağlayıcısı, hangi rollerin ve kullanıcı türlerinin bulunduğunu tanımlar. Bazıları geleneksel kullanıcı adı ve parola kimlik bilgilerini kullanırken, bazıları API anahtar belirteclerinden ve hatta istemci tarafında x.509 sertifikalarından yararlanabilir. Özel sağlayıcılar, özel katman kullanarak entegre edilebilir.

Nesne Depolama, varsayılan olarak iki kimlik doğrulama katman modülü ile birlikte gelir; bunların ikisi de, özel bir kimlik doğrulama katmanı geliştirilmesi için örnek kod olarak kullanılabilir.

TempAuth

TempAuth is the default authentication for Object Storage. In contrast to Identity, it stores the user accounts, credentials, and metadata in object storage itself. More information can be found in the section The Auth System of the Object Storage (swift) documentation.

Keystone

Keystone, OpenStack’te yaygın olarak kullanılan Kimlik sağlayıcısıdır. Nesne Depolama alanında kimlik doğrulama için de kullanılabilir. Keystone’un korunması kapsamı zaten Kimlik bölümünde sağlanmıştır.

Diğer önemli ögeler

/etc/swift dosyasında, her düğümde bir swift_hash_path_prefix ve bir swift_hash_path_suffix ayarı vardır. Bunlar, depolanan nesneler için özet çarpışma ihtimalini azaltmak ve bir kullanıcının başka bir kullanıcının verilerini üzerine yazmasını önlemek için sağlanmıştır.

Bu değer başlangıçta şifreleme açısından güvenli bir rasgele sayı üreteci ile ayarlanmalı ve tüm düğümlerde tutarlı olmalıdır. Doğru ACL’lerle korunduğundan ve veri kaybını önlemek için bir yedek kopyanız olduğundan emin olun.