1. Giriş
Bu codelab'de, VPC Hizmet Kontrolleri'ni kullanarak BigQuery API'yi nasıl koruyacağınızı öğreneceksiniz. Codelab, hizmet çevresi tarafından korunan bir API hizmetiyle başlar. Böylece herkese açık veri kümelerinde sorgular çalıştırılabilir ve sonuçlar, proje tablosuna kaydedilebilir. Sorgu bir projede çalışır ve tablo (sonuçların kaydedildiği) başka bir projede oluşturulur. Bu tablo, verilerin bir projede depolanabileceği ancak farklı bir proje kullanılarak erişilmesi gereken bir kurulumu taklit eder.
Sırada, veri projesini korumak için bir hizmet çevresi bulunuyor. Giriş kuralları ve çıkış kurallarını kullanarak gözlemlenen ihlalleri nasıl düzelteceğinizi ve daha sonra, dahili IP adreslerini kullanarak erişimi kısıtlamak için bir erişim düzeyi eklemeyi öğreneceksiniz. Bu codelab'in hedefleri şunlardır:
- Sırasıyla giriş ve çıkış kurallarını kullanarak giriş ve çıkış ihlallerini nasıl düzelteceğinizi öğrenin.
- Belirli bir ihlalin neden gerçekleştiğini öğrenin.
- Uygulanan ihlal düzeltmesinin kapsamını analiz edin.
- Erişim düzeylerini kullanarak VPC ağındaki dahili IP adreslerinden gelen trafiğe izin verme seçeneğinden yararlanarak düzeltmeyi (giriş / çıkış kuralı) değiştirerek kapsamını değiştirin.
2. Kaynak Kurulumu ve Şartları
Başlamadan önce
Bu codelab'de şunları bildiğinizi varsayıyoruz:
- BigQuery sorgusu çalıştırmayla ilgili temel bilgiler: BigQuery'de Wikipedia veri kümesini sorgulamayı öğrenmek için bu codelab'e göz atabilirsiniz.
- Klasör oluşturma ve yönetme
- Bir klasörde proje oluşturma veya klasördeki mevcut bir projeyi taşıma
- Kapsamlı erişim politikası oluşturma
- Hizmet çevresi oluşturma ve yapılandırma
- Günlüklerde güvenlik politikası ihlallerini bulma
Kurulum
İlk kurulumumuz aşağıdaki gibi tasarlanmıştır:
- Google Cloud kuruluşu.
- Kuruluşa ait bir klasör. Bu codelab'de bu adı
codelab-folder
olarak adlandıracağız. - Aynı klasör (
codelab-folder
) altına iki Google Cloud projesi yerleştirildi. Bu codelab'deproject-1
veproject-2
- olarak adlandırılmaktadır.
- Klasör ve projeleriniz daha önce oluşturulmamışsa Google Cloud Console'da kuruluş altında bir klasör oluşturun ve oluşturulan klasör altında iki yeni proje oluşturun.
- Gerekli izinler:
- Klasörleri yönetmek için IAM rolleri: klasör düzeyinde atanır
- Projeleri yönetmek için IAM rolleri: proje düzeyinde atanır
- VPC Hizmet Kontrolleri'ni yapılandırmak için gereken IAM rolleri: Kuruluş düzeyinde atanır
- BigQuery'yi yönetmek için IAM rolleri: proje düzeyinde atanır
- Compute Engine örneğini yönetmek için IAM rolleri: proje düzeyinde atanır
- Hem
project-2
hem deproject-1
projesi için faturalandırma hesabı.
Normal bir hizmet çevresi oluşturun
Bu codelab'de, project-1
politikasını koruyan normal bir hizmet çevresi kullanacağız.
perimeter-1
adlı normal bir çevre oluşturun veproject-1
değerini ekleyin.
Compute Engine sanal makinesi oluşturun
Bu codelab'de project-2
bölgesinde, us-central1
bölgesinde bulunan ve default
adlı varsayılan VPC ağını kullanan 1 Compute Engine örneği kullanacağız.
- Herkese açık bir görüntüden Compute Engine örneği oluşturma konusunda kılavuz olarak bu belgelere bakabilirsiniz.
Maliyet
Bulut kaynaklarını/API'leri kullanmak için Google Cloud konsolunda faturalandırmayı etkinleştirmeniz gerekir. Bu codelab dışında faturalandırma yapılmasını önlemek için kullanılan kaynakların kullanımını kapatmanızı öneririz. Yeni Google Cloud kullanıcıları 300 ABD doları değerindeki ücretsiz deneme programına katılabilir.
Maliyete tabi kaynaklar BigQuery ve Compute Engine örneğidir. Maliyeti, BigQuery fiyat hesaplayıcı ve Compute Engine fiyat hesaplayıcıyı kullanarak tahmin edebilirsiniz.
3. VPC Hizmet Kontrolleri Kısıtlamaları olmadan BigQuery'ye erişim
project-1
Uygulamasında Herkese Açık Veri Kümesini Sorgulayın ve Sonuçları Kaydedin
- BigQuery API'ye erişip erişemediğinizi doğrulamak için BigQuery Studio sayfasına giderek
project-2
veproject-1
özelliklerine erişin.project-1
, hizmet çevresinde olsa bile çevre henüz herhangi bir hizmeti korumadığından bunu yapabilmeniz gerekir. - Ortak bir veri kümesini sorgulamak için
project-2
tarihinden itibaren aşağıdaki sorguyu çalıştırın.
SELECT name, SUM(number) AS total
FROM `bigquery-public-data.usa_names.usa_1910_2013`
GROUP BY name
ORDER BY total DESC
LIMIT 10;
Herkese açık veri kümesinde sorguyu çalıştırdıktan sonra (project-2
veri kümesinde kalırken):
- Save Results (Sonuçları Kaydet) seçeneğini tıklayıp BigQuery tablosu'nu seçin. (aşağıdaki ekran görüntüsüne bakın).
.
- Hedef proje olarak
project-1
'i seçin. - Veri Kümesine
codelab_dataset
olarak ad verin. (Mevcut bir veri kümesi kullanılmıyorsa YENİ VERİ KÜMESİ OLUŞTUR'u seçin). - Tabloyu şu şekilde adlandırın:
codelab-table
. - Kaydet'i tıklayın.
project-2
üzerinden yapılan sorgunun yürütülmesi sonucunda, herkese açık veri kümesi verileri project-1
konumunda başarıyla depolandı.
Sorgu Veri Kümesi, project-2
konumundan project-1
konumuna kaydedildi
project-2
BigQuery Studio'da kaldığınız sürece aşağıdaki sorguyu çalıştırarak veri seçmek için aşağıdaki sorguyu çalıştırın:
- Proje:
project-1
- Veri kümesi:
codelab_dataset
- Tablo:
codelab-table
SELECT name, total
FROM `project-1.codelab_dataset.codelab-table`
ORDER BY total DESC
LIMIT 10;
Ne project-2
ne de project-1
BigQuery'yi kullanmak üzere kısıtlanmadığından sorgu başarıyla çalıştırılmalıdır. Kullanıcı uygun IAM izinlerine sahip olduğu sürece BigQuery'ye herhangi bir yerden veya herhangi bir yerden erişim izni verilir.
Bu diyagramda, ana hesap bir BigQuery veri kümesini sorguladığında bu işlem gösterilmektedir. Her BigQuery sorgusu bir BigQuery işi başlatır. Bu iş daha sonra, bu senaryoda veri alarak gerçek işlemi gerçekleştirir. Ana erişim, bir Compute Engine örneğinden ve internetten, herkese açık veri kümesinden ve ayrı bir Google Cloud projesinden sorgulama yapılırken gösterilir. Verileri (
GetData
) sorgulama işlemi, VPC Hizmet Kontrolleri tarafından engellenmeden başarıyla tamamlandı.
4. Kaynak Veri Kümesi Projesinde BigQuery API'yi Koruma
perimeter-1
çevresinin yapılandırmasını değiştirin ve korunan kaynak project-1
olacak şekilde BigQuery API hizmetini kısıtlayın.
Hizmet Çevresi Yaptırımını Doğrulama
project-2
tarihinden itibaren, önceki adımda olduğu gibi BigQuery Studio'da aşağıdaki sorguyu çalıştırın:
SELECT name, total
FROM `project-1.codelab_dataset.codelab-table`
ORDER BY total DESC
LIMIT 10;
VPC Hizmet Kontrolleri RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER
ihlali yapılacak
İhlal denetleme günlüğü, çevreyi aşmak için ihlalin gerçekleştiği yer project-1
konumundadır. Günlükler, gözlemlenen vpcServiceControlsUniqueId
ile filtrelenebilir (VPC_SC_DENIAL_UNIQUE_ID
değerini gözlemlenen benzersiz kimlikle değiştirin).
severity=ERROR
resource.type="audited_resource"
protoPayload.metadata.@type="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"
protoPayload.metadata.vpcServiceControlsUniqueId="[*VPC_SC_DENIAL_UNIQUE_ID*]"
İhlal, şu özelliklere sahip bir egressViolations
:
principalEmail
: [sorguyu çalıştıran kullanıcı hesabı]callerIp
: [Sorguyu çalıştıran kullanıcı aracısının IP adresi]
"egressViolations": [
{
"targetResource": "projects/project-2",
"sourceType": "Resource",
"source": "projects/project-1",
"servicePerimeter": "accessPolicies/REDACTED/servicePerimeters/perimeter-1",
"targetResourcePermissions": [ "bigquery.jobs.create"]
} ],
5. BigQuery İşi Oluşturma İhlalini Düzeltme
Bu diyagramda, ana hesap
project-1
konumundaki bir veri kümesi için project-2
üzerinden sorgu çalıştırdığında gösterilmektedir. Sorgunun çalıştırıldığı projedeki (project-2
) veri kümesi projesinden (project-1
) BigQuery işi oluşturma işlemi, BigQuery API'yi koruyan hizmet çevresi perimeter-1
nedeniyle bir VPC Hizmet Kontrolleri çıkış ihlali nedeniyle başarısız olur. Çevre oluşturulduktan sonra project-1
kaynağından çevre dışına doğru herhangi bir BigQuery API isteği başlatılamaz veya koruma altındaki projeye yönelik çevrenin dışında yeniden başlatılamaz; (hizmet çevresi yapılandırmaları tarafından izin verilmedikçe)
Aşağıdakileri temel alan bir çıkış kuralı oluşturarak çıkış ihlali düzeltilebilir:
- kaynak (FROM): kullanıcının e-posta adresi ve içeriği (ör.arayanın IP adresi, cihaz durumu, konum vb.)
- hedef (ALICI): yani hedef kaynak, hizmet ve yöntem veya izin.
Gözlemlenen çıkış ihlalini düzeltmek için BigQuery hizmetinde sorguyu (user@example.com
) çalıştıran kullanıcı hesabı ve bigquery.jobs.create
yöntemi/ izni üzerinden targetResource (project-2
) trafiğine izin veren bir çıkış kuralı oluşturun.
Yapılandırılmış çıkış kuralından beklenen davranış:
- BAŞLANGIÇ | Kimlikler: Yalnızca belirtilen
user@example.com
kimliğinin çevre sınırını aşmasına izin verilmelidir. - ALICI | projeler: belirtilen kimlik, yalnızca hedefin belirtilen
project-2
projesi olması durumunda çevre sınırlarını aşabilir. - ALICI | Hizmetler: Belirtilen kimlik, yalnızca API çağrısı belirtilen hizmet ve yöntemle ilgiliyse belirtilen projeye yönelik çevre dışına trafik başlatabilir. Aksi takdirde, örneğin hizmet çevresi tarafından korunan farklı bir hizmeti denerse diğer hizmetlere izin verilmediğinden işlem engellenir.
Çözümü Test Etme: Çıkış Kuralı
Çıkış kuralı oluşturulduktan sonra aynı sorguyu çalıştırın.
SELECT name, total
FROM `project-1.codelab_dataset.codelab-table`
ORDER BY total DESC
LIMIT 10;
Başka bir ihlal söz konusu olacaktır. Bu kez NO_MATCHING_ACCESS_LEVEL
giriş ihlali söz konusudur. Yeni ihlal, hedef proje ve yöntem açısından ilk ihlalden farklıdır.
Yeni ihlal, şunları içeren bir giriş ihlalidir:
principalEmail
: [sorguyu çalıştıran kullanıcı hesabı]callerIp
: [Sorguyu çalıştıran kullanıcı aracısının IP adresi]
ingressViolations: [
0: {
servicePerimeter: "accessPolicies/REDACTED/servicePerimeters/perimeter-1"
targetResource: "projects/project-1"
targetResourcePermissions: [0: "bigquery.tables.getData"]}
]
bigquery.tables.getData
yönteminin ihlali, BigQuery tablosundan veri almaya çalışan BigQuery işi tarafından başlatılan bir API çağrısından kaynaklanır.
6. BigQuery Tablosu Verilerini Almak İçin İhlali Düzeltme
Giriş kuralları, giriş ihlallerini düzeltirken, hizmet çevresi sınırını kimlerin geçebileceğine dair ayrıntılı bir kontrol ve izin verilen erişim bağlamı (ör. kaynak/ hedef proje ve erişebilecekleri API yöntemi) hakkında ayrıntılı bilgi sağlar.
Giriş ihlali, aşağıdaki şekilde yapılandırılan bir giriş kuralıyla düzeltilir:
- kaynak (FROM): kullanıcının e-posta adresi ve içeriği (ör.arayanın IP adresi, cihaz durumu, konum vb.)
- hedef (ALICI): yani hedef kaynak, hizmet ve yöntem veya izin.
Giriş kuralı, belirtilen kullanıcı tarafından project-1
uygulamasına yönelik trafiğe, belirtilen hizmette ve yöntemde izin verir.
Yapılandırılmış giriş kuralından beklenen davranış:
- BAŞLANGIÇ | Kimlikler: Yalnızca belirtilen
user@example.com
kimliğinin çevre sınırını aşmasına izin verilmelidir. - ALICI | projeler: belirtilen kimlik, yalnızca hedefin belirtilen
project-1
projesi olması durumunda çevre sınırlarını aşabilir. - ALICI | Hizmetler: Belirtilen kimlik, yalnızca API çağrısı BigQuery API ve belirtilen
bigquery.tables.getData
yöntemine yönelikse çevre içindeki trafiği başlatabilir.
Dolayısıyla, aynı sorgunun yürütülmesi VPC Hizmet Kontrolleri ihlalleri olmadan düzgün bir şekilde çalışacaktır.
BigQuery API'yi project-1
bölgesinde başarıyla kısıtlayarak yalnızca user@example.com
tarafından kullanılabilmesini sağladık, user2@example.com
tarafından kullanılmasını sağlamadık.
Bu diyagramda, iki farklı ana hesabın aynı veri kümesini nasıl sorgulamaya çalıştığı gösterilmektedir. VPC Hizmet Kontrolleri'nin
user2@example.com
(noktalı mavi çizgiler) erişimi, hizmet çevresi yapılandırması tarafından project-1
içinden veya bu noktaya doğru BigQuery işlemleri çalıştırmasına izin verilmediği için tarafından reddedildi. VPC Hizmet Kontrolleri yapılandırmaları tarafından project-1
içinden veya başka bir noktaya işlem yapılmasına izin verildiğinden user@example.com
(yeşil düz çizgi) ile erişim başarılı oldu.
7. Hizmet Çevresinin İzin Verilen Trafiği Dahili IP Adresine Göre Kısıtla
Mevcut yapılandırma, tanımlanan kullanıcının project-1
ürününde BigQuery'de herhangi bir konumdan sorgu çalıştırabilmesini sağlar. verileri sorgulamak için IAM izni verildiyse ve hesabını kullandığı sürece bunu yapabilir. Güvenlik açısından bakıldığında, hesabın güvenliğinin ihlal edilmesi durumunda, hesaba erişim elde eden tüm kullanıcılar BigQuery verilerine herhangi bir ek kısıtlama olmadan erişebilir.
Kullanıcı bağlamını belirtmek için giriş ve çıkış kurallarında erişim düzeyinden yararlanılarak başka kısıtlamalar da uygulanabilir. Örneğin, çağrı kimliğine göre erişim yetkisi veren önceden yapılandırılmış bir giriş kuralıyla birlikte kaynak IP'ye göre erişime izin verebilirsiniz. Kaynak IP'ye göre erişim, kullanıcı istemcisine bir genel IP atanmış olması koşuluyla her iki genel IP CIDR aralığı için veya kullanıcı istemcisi bir Google Cloud projesinden çalışıyorsa dahili IP adresi kullanarak uygundur.
Dahili IP Adresi Erişim Koşulu ile Erişim Düzeyi Oluşturma
Bir erişim düzeyi oluşturmak için aynı kapsamlı erişim politikası klasöründe Bağlam Erişim Yöneticisi sayfasını açın.
- Bağlam Erişim Yöneticisi sayfasında ERİŞİM DÜZEYİ OLUŞTUR'u seçin.
- Yeni Erişim Düzeyi bölmesinde:
- Bir başlık girin:
codelab-al
özelliğini kullanabilirsiniz. - Koşullar bölümünde, IP alt ağları'nı tıklayın.
- Gizli IP sekmesini seçin ve VPC AĞLARI SEÇ'i tıklayın.
- Add VPC Networks (VPC Ağları Ekle) bölmesinde,
default
ağına göz atıp ağı bulabilir veya tam ağ adını//compute.googleapis.com/projects/project-2/global/networks/default
biçiminde manuel olarak girebilirsiniz. - VPC Ağı EKLE'yi tıklayın.
- IP ALT AĞLARI SEÇ'i tıklayın.
- Sanal makine örneğinin bulunduğu bölgeyi seçin. Bu codelab için
us-central1
değeri geçerlidir. - KAYDET'i tıklayın.
- Bir başlık girin:
Hâlâ herhangi bir çevre veya giriş/çıkış politikasında zorunlu kılınmayan bir erişim düzeyi oluşturduk.
Giriş Kuralına Erişim Düzeyi Ekleme
Giriş kuralının izin verdiği kullanıcının aynı zamanda erişim düzeyine göre de doğrulanmasını zorunlu kılmak için giriş kuralında erişim düzeyinin yapılandırılması gerekir. Sorgu verilerine erişim yetkisi veren giriş kuralı perimeter-1
konumunda. Kaynağı codelab-al
erişim düzeyi olarak tanımlamak için giriş kuralını değiştirin.
Yeni Yapılandırmaları Test Etme
Giriş kuralına erişim düzeyi eklendikten sonra, project-2
projesi için default
VPC ağındaki istemciden yürütülmediği sürece aynı BigQuery sorgusu başarısız olur. Bu davranışı doğrulamak için uç nokta cihazı internete bağlıyken sorguyu Google Cloud konsolundan yürütün. Sorgu, giriş ihlali uyarısıyla birlikte başarısız bir şekilde sonlandırılır.
Aynı sorgu, project-2
bölgesinde bulunan default
VPC ağından çalıştırılabilir. Benzer şekilde, aynı BigQuery sorgusunun default
VPC ağı kullanılarak project-2
bölgesinde bulunan bir Compute Engine örneğinden yürütülmesi de başarısız olur. Bunun nedeni, giriş kuralının yalnızca user@example.com
ana hesabına izin verecek şekilde yapılandırılmış olmasıdır. Bununla birlikte sanal makine, Compute Engine varsayılan hizmet hesabını kullanıyor.
Aynı komutu project-2
bölgesinde Compute Engine örneğinden başarıyla çalıştırmak için şu işlemlerin yapıldığından emin olun:
- Sanal makine BigQuery API'yi kullanmak için erişim kapsamına sahip. Bu işlem, sanal makine erişim kapsamı olarak Tüm Cloud API'lerine tam erişime izin ver seçilerek yapılabilir.
- Sanal makineye bağlı hizmet hesabının IAM izinlerine ihtiyacı var:
project-2
İçinde BigQuery İşleri Oluşturmaproject-1
konumunda bulunan BigQuery tablosundan BigQuery verilerini alın
- Giriş ve çıkış kuralı, varsayılan Compute Engine hizmet hesabına izin vermelidir.
Şimdi giriş kurallarına (BigQuery tablosundan veri almaya izin vermek için) ve çıkış kuralına (BigQuery işlerinin oluşturulmasına izin vermek için) Compute Engine varsayılan hizmet hesabını eklememiz gerekiyor.
default
VPC ağındaki project-2
bölgesindeki bir Compute Engine örneğinden aşağıdaki bq query komutunu çalıştırın:
bq query --nouse_legacy_sql \
'SELECT name, total
FROM `project-1.codelab_dataset.codelab-table`
ORDER BY total DESC
LIMIT 10;'
Geçerli yapılandırmayla BigQuery komutu yalnızca şu durumlarda başarılı olur:
project-2
bölgesindeki varsayılan VPC ağını kullanarak bir sanal makine üzerinde çalışma ve- belirtilen
us-central1
bölgesinde (IP alt ağı) bulunur ve - hizmet çevresinde yapılandırılmış varsayılan Compute Engine hizmet hesabını kullanarak çalıştırın.
BigQuery komut sorgusu, aşağıdakiler dahil başka bir yerden çalıştırılırsa başarısız olur:
project-2
bölgesinde varsayılan VPC ağını kullanan ancak erişim düzeyine eklenen alt ağdan farklı bir bölgede bulunan bir sanal makinede çalıştırılıyorsa veyauser@example.com
kullanıcısı tarafından internetteki bir kullanıcı istemcisiyle çalıştırılıyorsa.
Bu şema, aynı ana hesap (
user@example.com
) tarafından iki farklı konumdan (internet ve bir Compute Engine örneği) başlatılan erişimi göstermektedir. Doğrudan internetten BigQuery'ye erişim (mavi noktalı çizgiler) VPC Hizmet Kontrolleri tarafından engellenir ancak Compute Engine varsayılan hizmet hesabının kimliğine bürünerek sanal makineden (yeşil kesintisiz çizgiler) erişime izin verilir. İzin verilen erişim, hizmet çevresinin dahili bir IP adresinden korumalı kaynaklara erişime izin verecek şekilde yapılandırılmasından kaynaklanır.
8. Temizleme
Hizmet kullanımda değilken VPC Hizmet Kontrolleri'nin kullanımı için ayrı bir ücret alınmaz ancak en iyi uygulama, bu laboratuvarda kullanılan kurulumu temizlemektir. Ücret ödemek istemiyorsanız sanal makine örneğini ve BigQuery veri kümelerini ya da Google Cloud projelerini silebilirsiniz. Cloud projesinin silinmesi, söz konusu projede kullanılan tüm kaynakların faturalandırılmasını durdurur.
- Sanal makine örneğini silmek için aşağıdaki adımları tamamlayın:
- Google Cloud Console'da Sanal makine örnekleri sayfasına gidin.
- Sanal makine örneği adının sol tarafındaki onay kutusunu işaretleyip Sil'i seçin. İşlemi onaylamak için tekrar Sil'i tıklayın.
- Hizmet çevresini silmek için aşağıdaki adımları tamamlayın:
- Google Cloud konsolunda Güvenlik'i ve ardından erişim politikasının kapsamında olduğu düzeyde (bu örnekte klasör düzeyinde) VPC Hizmet Kontrolleri'ni seçin.
- VPC Hizmet Kontrolleri sayfasında, silmek istediğiniz çevreye karşılık gelen tablo satırında Sil'i tıklayın.
- Erişim Düzeyi'ni silmek için aşağıdaki adımları tamamlayın:
- Google Cloud konsolunda Klasör kapsamındaki Bağlam Erişim Yöneticisi sayfasını açın.
- Izgarada, silmek istediğiniz erişim düzeyinin satırını belirleyin, üç nokta menü simgesini ve ardından Sil'i seçin.
- Projeleri kapatmak için aşağıdaki adımları tamamlayın:
- Google Cloud konsolunda IAM ve Yönetici Ayarları sayfasına giderek silebilirsiniz.
- IAM ve Yönetici Ayarları sayfasında Kapat'ı seçin.
- Proje kimliğini girin ve Yine de kapat'ı seçin.
9. Tebrikler!
Bu codelab'de VPC Hizmet Kontrolleri çevresi oluşturdunuz, bu çevreyi zorunlu kıldınız ve sorunu giderdiniz.
Daha Fazla Bilgi
Aşağıdaki senaryoları da inceleyebilirsiniz:
- Proje, VPC Hizmet Kontrolleri tarafından korunduktan sonra aynı sorguyu herkese açık veri kümesinde çalıştırın.
project-1
ile aynı çevreyeproject-2
ekleyin.project-2
değerini kendi çevresine ekleyin veproject-1
değerini geçerli çevrede tutun.- Yalnızca veri almak için değil, tablodaki verileri güncellemek için de sorgu çalıştırın.
Lisans
Bu çalışma, Creative Commons Attribution 2.0 Genel Amaçlı Lisans ile lisans altına alınmıştır.