├── alistirmalar
├── README.md
└── kisim4sonualistirma.md
├── images
└── azureegitim.png
├── LICENSE
├── README.md
└── linkler
└── README.md
/alistirmalar/README.md:
--------------------------------------------------------------------------------
1 | # **[4. Kısım Sonu Alıştırmaları](./kisim4sonualistirma.md)**
2 |
--------------------------------------------------------------------------------
/images/azureegitim.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aytitech/azure_az104_az900/HEAD/images/azureegitim.png
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Ayti.Tech
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Azure Administrator | AZ-104 ve AZ-900 Sertifika Sınavlarına Hazırlık Eğitimi
2 |
3 | Ayti.tech olarak temel hedeflerimizden bir tanesini, Türk bilişim sektörü çalışanlarının bilgi seviyesini bu alanda ileri gelen ülkelerdeki bilişim çalışanlarından daha ileriye taşımak olarak belirledik. Bu hedef doğrultusunda Türk bilişim çalışanlarının dil bariyerine takılmadan kendi dillerinde eğitim alabilmeleri için birçok önemli konuda eğitimler hazırlıyoruz. Bu eğitimlerden dördüncüsünü de son dönemlerin yükselen public cloud ortamlarından Azure üstüne hazırladık. Genellikle Azure olarak adlandırılan Microsoft Azure, Microsoft’un temel bulut bilişim platformdur. Microsoft tarafından birçok IAAS, PAAS ve SAAS tabanlı servisin, kullandığın kadar öde de dahil bir ok ödeme seçeneği ile hizmet olarak sunulduğu Azure platformu, public cloud providerlar arasında AWS ve Google Cloud’la birlikte sektörün en önemli oyuncularından biridir. Ve bizler de sizlerin bu alandaki bilgi seviyesini yükseltmeyi amaçlıyoruz.
4 |
5 | [Ayti.Tech YouTube Kanalı](https://www.youtube.com/watch?v=W1cp3qEAC1M&list=PLm8ggkC19szAggb3smwNleuitkHSInf8i)
6 |
7 | Toplamda 7 kısım ve 25 saatten fazla içerik olacak şekilde YouTube üstünden ücretsiz yayınlanacak "AZ-900 ve AZ-104 Sertifika Sınavlarına Hazırlık" eğitiminde 3 temel amacımız mevcut. İlk olarak bu eğitim sonunda Azure ve bulut bilişim konseptiyle ilgili bilmeniz gereken tüm temel bilgileri edineceksiniz. İki, profesyonel bir ortamda, Azure üstünde çalışabilmeniz ve iş yüklerinizi koşturabilmeniz için bilmeniz gereken tüm önemli bilgileri edineceksiniz. 3 ve son olarak da az-900 ve az-104 sınavlarını geçebilmeniz adına gerekli bilgileri bu eğitim sonunda edinmiş olacaksınız.
8 |
--------------------------------------------------------------------------------
/linkler/README.md:
--------------------------------------------------------------------------------
1 | # Eğitimde Verilen Linkler
2 |
3 | ## Diğer Eğitimlerim
4 | Docker: https://ayti.tech/docker
5 |
6 | Kubernetes: https://ayti.tech/k8s
7 |
8 | AWS: https://ayti.tech/aws
9 |
10 | ---
11 | ## Kısım 1
12 |
13 | Forum "Soru&Cevap": https://cafe.ayti.tech
14 |
15 | Ücretsiz Azure Hesabı Oluşturma: https://azure.microsoft.com/free/
16 |
17 | Visual Studio Code: https://code.visualstudio.com/
18 |
19 | VS Code Azure Extensions: https://code.visualstudio.com/docs/azure/extensions
20 |
21 | ---
22 |
23 | ## Kısım 2
24 |
25 | ---
26 |
27 | ## Kısım 3
28 |
29 | Azure: https://en.wikipedia.org/wiki/Microsoft_Azure
30 |
31 | Azure History: https://www.forbes.com/sites/janakirammsv/2020/02/03/a-look-back-at-ten-years-of-microsoft-azure/?sh=1ea106e44929
32 |
33 | History of Microsoft: https://en.wikipedia.org/wiki/History_of_Microsoft
34 |
35 | Azure Infra Map: https://infrastructuremap.microsoft.com/
36 |
37 | Azure Servis Listesi: https://azure.microsoft.com/en-us/global-infrastructure/services/
38 |
39 | Compliance: https://docs.microsoft.com/en-us/azure/compliance/
40 |
41 | Project Natick: https://natick.research.microsoft.com/
42 |
43 | Sustainability: https://azure.microsoft.com/en-gb/global-infrastructure/sustainability/#overview
44 |
45 | Azure Portal: https://portal.azure.com
46 |
47 | Azure CLI: https://docs.microsoft.com/en-us/cli/azure
48 |
49 | Azure PowerShell: https://docs.microsoft.com/en-us/powershell/azure/?view=azps-7.4.0
50 |
51 | Azure Cloud Shell: https://docs.microsoft.com/en-us/azure/cloud-shell/overview
52 |
53 | Azure SDKs: https://azure.microsoft.com/en-us/downloads/
54 |
55 | Azure Rest API: https://docs.microsoft.com/en-us/rest/api/azure/
56 |
57 | ---
58 | ## Kısım 4
59 |
60 | Azure Subscription Tipleri: https://azure.microsoft.com/en-us/support/legal/offer-details/
61 |
62 | Resource Providers: https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/azure-services-resource-providers
63 |
64 | Azure Policy GitHub Repository: https://github.com/Azure/azure-policy
65 |
66 | Microsoft Identity Platform Authentication Library: https://docs.microsoft.com/en-us/azure/active-directory/develop/reference-v2-libraries
67 |
68 | Azure Service Principal Oluşturma: https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli
69 |
70 | Managed Identity destekleyen Azure Servisleri: https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/managed-identities-status
71 |
72 | Azure İsim ve Tag Tavsiyeleri: https://docs.microsoft.com/en-us/azure/cloud-adoption-framework/ready/azure-best-practices/naming-and-tagging
73 |
74 | Tag Desteğine Sahip Azure Servisleri: https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/tag-support
75 |
76 | Tag Policy: https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/tag-policies
77 |
--------------------------------------------------------------------------------
/alistirmalar/kisim4sonualistirma.md:
--------------------------------------------------------------------------------
1 | # 4. Kısım Sonu Alıştırmaları
2 |
3 | 1: Yeni bir **Azure AD Kullanıcısı** oluşturun. Ama henüz bununla oturum açmayın.
4 |
5 | Cevabı görmek için genişletin
6 |
7 | - Portalde arama kısmına "Azure Active Directory" yazın ve "Azure AD" yönetim ekranına geçin.
8 | - Sol menüden "Users" kısmına tıklayın. Açılan ekranda "New User>Create New User" yolunu takip edin.
9 | - Ekrandaki kullanıcı adı vb. bilgileri doldurarak kullanıcı oluşturma adımlarını tamamlayın.
10 |
11 |
12 | ***
13 | 2: Azure CLI araclığıyla iki adet **Resource Group** yaratın. Grupların ismi **GroupA** ve **GroupB** olsun.
14 |
15 | Cevabı görmek için genişletin
16 |
17 | ```shell
18 | $ az group create --name "GroupA" --location westeurope
19 | $ az group create --name "GroupB" --location westeurope
20 | ```
21 |
22 |
23 |
24 | ***
25 |
26 | 3: İlk adımda oluşturduğunuz kullanıcıya **GroupA** isimli **Resource Group** üstünde **Contributor**, **GroupB** isimli **Resource Group** üstünde **Reader** rollerini atayın.
27 |
28 | Cevabı görmek için genişletin
29 |
30 | - Portalde arama kısmına "Resource Group" yazın ve "Resource Group" yönetim ekranına geçin.
31 |
32 | - Burada "GroupA" isimli grubu bulun ve tıklayın.
33 |
34 | - Açılan ekranda soldaki menüde "Access control (IAM)" ekranına geçin ve "Add>Add Role Assignment" yolunu takip edin. Açılan listeden "Contributor" rolünü seçin ve next ile devam ederek bir sonraki ekranda "+Select Member" butonuyla birinci alıştırmada oluşturduğunuz kullanıcıyı seçin ve işlemleri tamamlayın.
35 |
36 | - Tekrar "Resource Group" yönetim ekranına geçin ve burada "GroupB" isimli grubu bulun ve tıklayın.
37 |
38 | - Açılan ekranda soldaki menüde "Access control (IAM)" ekranına geçin ve "Add>Add Role Assignment" yolunu takip edin. Açılan listeden "Reader" rolünü seçin ve next ile devam ederek bir sonraki ekranda "+Select Member" butonuyla birinci alıştırmada oluşturduğunuz kullanıcıyı seçin ve işlemleri tamamlayın.
39 |
40 |
41 |
42 | ***
43 |
44 | 4: Hem **Azure Portal** hem de **Azure Cli** üstünde ilk adımda oluşturduğunuz kullanıcıyla oturum açın. Bundan sonraki adımları bu kullanıcı ile uygulayacaksınız.
45 |
46 | Cevabı görmek için genişletin
47 |
48 | - Tarayıcınızın incognito mode özelliğini kullanarak yeni bir sayfa açın ve portal.azure.com adresinden Azure Portal’a birinci alıştırmada oluşturduğunuz kullanıcı ile oturum açın.
49 | - Azure Cli’da ```az logout``` komutuyla oturumu sonlandırın ve ardından tekrar ```azure login``` komutunu kullanın ve birinci alıştırmada oluşturduğunuz kullanıcı ile oturum açın.
50 |
51 |
52 |
53 | ***
54 |
55 | 5: Yeni bir **Resource Group** oluşturmayı deneyin. Oluşturabildiniz mi?
56 |
57 | Cevabı görmek için genişletin
58 |
59 | Kullanıcınızın Subscription seviyesinde yetkisi olmadığından dolayı resource group oluşturamadınız.
60 | ```shell
61 | $ az group create --name "GroupC" --location westeurope
62 | Code: AuthorizationFailed
63 | ```
64 |
65 |
66 |
67 | ***
68 |
69 | 6: **Azure CLI** aracılığıyla **GroupA** isimli **Resource Group** içerisinde bir **Sanal Makine** yaratın.
70 |
71 | Cevabı görmek için genişletin
72 |
73 | Aşağıdaki komutu girdiğiniz zaman size "Admin Password:" yazısı olarak şifre oluşturmanız için bir adım çıkacak. Buraya 2 defa belirlediğiniz en az 12 haneli ve içerisinde büyük harf, küçük harf, rakam ve işaret olan bir şifre giriniz.
74 |
75 | ```shell
76 | $ az vm create --resource-group "GroupA" --name "ilksanalmakine" --image Win2019Datacenter --location westeurope
77 | ```
78 |
79 |
80 |
81 | ***
82 |
83 | 7: Aynı **Sanal Makine** yaratma işlemini bu sefer **GroupB** isimli **Resource Group** üstünde deneyin.
84 |
85 | Cevabı görmek için genişletin
86 |
87 | "code":"AuthorizationFailed" hatası alarak oluşturamamanız gerekir. Çünkü bu kullanıcının GroupB üstünde sadece Reader rolü mevcut.
88 |
89 | ```shell
90 | $ az vm create --resource-group "GroupB" --name "ilksanalmakine" --image Win2019Datacenter --location westeurope
91 | ```
92 |
93 |
94 |
95 | ***
96 |
97 | 8: Tekrar kendi kullanıcınızla oturum açın ve **Subscription** bazında Delete aksiyonlu bir **Resource Lock** oluşturun.
98 |
99 | Cevabı görmek için genişletin
100 |
101 | - Yeni bir tarayıcı ekranı açarak kendi kullanıcınız ile oturum açın.
102 |
103 | - Portalde arama kısmına "Subscriptions" yazın ve "Subscription" yönetim ekranına geçin.
104 |
105 | - Soldaki menüden "Resource Locks" ekranına gelin. +Add butonuna basın ve açılan ekranda "Resource Locks" için isim olarak "dellock" girin ve "Lock Type" olarak "Delete" aksiyonunu seçin.
106 |
107 |
108 |
109 | ***
110 |
111 | 9: **GroupA** isimli **Resource Group**u silmeyi çalışın.
112 |
113 | Cevabı görmek için genişletin
114 |
115 | - Portalde arama kısmına "Resource Group" yazın ve "Resource Group" yönetim ekranına geçin.
116 |
117 | - Burada "GroupA" isimli grubu bulun ve tıklayın.
118 |
119 | - Orta üst menüdeki "Delete Resource Group" butonuna basın ve açılan ekranda "TYPE THE RESOURCE GROUP NAME:" kısmına "GroupA" yazın ve "Delete" butonuna basın.
120 |
121 | - "The resource group GroupA is locked and can't be deleted. Click here to manage locks for this resource group" uyarısı alacak ve silemeyeceksiniz.
122 |
123 |
124 |
125 | ***
126 | 10: Oluşturduğunuz **Resource Lock**’u **Azure Cli** aracılığıyla kaldırın.
127 |
128 | Cevabı görmek için genişletin
129 |
130 | ```shell
131 | $ az lock delete --name dellock
132 | ```
133 |
134 |
135 |
136 | ***
137 |
138 | 11: **GroupA** isimli **Resource Group**’a *departman=hr* olarak **Tag** atayın.
139 |
140 | Cevabı görmek için genişletin
141 |
142 | - Portalde arama kısmına "Resource Group" yazın ve "Resource Group" yönetim ekranına geçin.
143 |
144 | - Burada "GroupA" isimli grubu bulun ve tıklayın.
145 |
146 | - Soldaki menüden "Tags" ekranına gelin. Name kısmına "departman", Value kısmına "ik" değerlerini girip kaydedin.
147 |
148 |
149 |
150 | ***
151 |
152 | 12: Bu **Tag**’in bu **Resource Group** altındaki kaynaklara inherit etmediğini görün. Bunun olmasını sağlayacak **Policy**’i devreye alın ve bu **Tag**lerin oluştuğunu görün.
153 |
154 | Cevabı görmek için genişletin
155 |
156 | - Portalde arama kısmına "Resource Group" yazın ve "Resource Group" yönetim ekranına geçin.
157 |
158 | - Burada "GroupA" isimli grubu bulun ve tıklayın.
159 |
160 | - "ilksanalmakine" isimli sanal makineye tıklayın. Soldaki menüden "Tags" ekranına gelin. Burası boş olmalı. Resource Group'a tag atandığında altındaki kaynaklara da otomatik olarak aynı tag atanmaz.
161 |
162 | - Portalde arama kısmına "Policy" yazın ve "Azure Policy" yönetim ekranına geçin.
163 |
164 | - Sol menüdeki "Assigments" kısmına tıklayın ve açılan ekranda "Assign Policy" butonuyla devam edin.
165 |
166 | - "Scope" kısmında "GroupA" seçin. "Policy Definition" kısmında ... tıklayarak "Add a tag to resources" policy'sini seçin ve next ile devam edin.
167 |
168 | - Üst menüden "Parameters" kısmına gelin ve departman-ik değerlerini ilgili ekranlara girin.
169 |
170 | - Üst menüden "Remediation" kısmına gelin ve "Create a remediation task" checkbox'ını işaretleyi ve ardından "Review+Create" butonuyla devam ederek policy'i oluşturun.
171 |
172 | - Bir süre bekleyin "24 saat sürebilir max.". Sonrasında ilksanalmakine isimli sanal makinenizi bulun ve "Tags" kısmından tag’in eklendiğini teyit edin.
173 |
174 |
175 |
176 | ***
177 |
178 | 13: Yeni bir **Management Group** oluşturun.
179 |
180 | Cevabı görmek için genişletin
181 |
182 | - Portalde arama kısmına "Management groups" yazın ve "Management groups" yönetim ekranına geçin.
183 |
184 | - Karşınıza çıkan ekrandaki "+Create" butonuna basın. Açılan ekranda "Management group ID" kısmına "001", "Management group display name" kısmına da "Alistirma_Management_Group" yazın Submit butonuna tıklayarak oluşturma işlemini tamamlayın.
185 |
186 |
187 |
188 | ***
189 |
190 | 14: Mevcut **Subscription**’ızı oluşturduğunuz **Management Group** altına taşıyın.
191 |
192 | Cevabı görmek için genişletin
193 |
194 | - Portalde arama kısmına "Management groups" yazın ve "Management groups" yönetim ekranına geçin.
195 |
196 | - Ana ekranda "Tenant Root Group" altında size ait "Subscription" göreceksiniz. Bu satırın sağ kısmında ... butonu var, buna tıklayın ve "Move" butonuna basın.
197 |
198 | - Açılan ekranda "Alistirma_Management_Group" seçili olacak şekilde "Save" butonuna basın ve taşıma işlemini tamamlayın.
199 |
200 |
201 |
202 | ***
203 |
204 | 15: Sadece *A* ve *B* serisi **Sanal Makineler** oluşturulabilsin, başka tipte bir **Sanal Makine** oluşturulamasın şeklinde bir **Policy** tanımı yapın ve bunu oluşturduğunuz **Management Group**’a atayın.
205 |
206 | Cevabı görmek için genişletin
207 |
208 | - Portalde arama kısmına "Policy" yazın ve "Azure Policy" yönetim ekranına geçin.
209 |
210 | - Sol menüdeki "Assigments" kısmına tıklayın ve açılan ekranda "Assign Policy" butonuyla devam edin.
211 |
212 | - "Scope" kısmına tıklayın ve "Alistirma_Management_Group" isimli "Management Group" seçin. "Policy Definition" kısmında ... tıklayarak "Allowed size SKUs" policy'sini seçin ve next ile devam edin.
213 |
214 | - Üst menüden "Parameters" kısmına gelin "Allowed size SKUs" kısmında tüm A ve B serilerini seçin. "İlk 30 seçenek, Standard_D1'e kadar olan tüm seçenekler işaretlenecek". "Review+Create" butonuyla devam ederek policy'i oluşturun.
215 |
216 |
217 |
218 | ***
219 |
220 | 16: *D* serisi bir **Sanal Makine** oluşturmayı deneyin ve oluşturamadığınızı görün. Sonrasında da şu ana kadar yapmış olduğunuz iki "Policy Assigment" işlemini de geri alın.
221 |
222 | Cevabı görmek için genişletin
223 |
224 | - Aşağıdaki komutu "Azure CLI" girdiğiniz zaman size "Admin Password:" yazısı olarak şifre oluşturmanız için bir adım çıkacak. Buraya 2 defa belirlediğiniz en az 12 haneli ve içerisinde büyük harf, küçük harf, rakam ve işaret olan bir şifre giriniz. Ardından "The template deployment failed because of policy violation..." hatası alacaksınız.
225 |
226 | ```shell
227 | $ az vm create --resource-group "GroupA" --name "ikincisanalmakine" --image Win2019Datacenter --location westeurope --size Standard_DS1_v2
228 |
229 | $ {"error":{"code":"InvalidTemplateDeployment","message":"The template deployment failed because of policy violation...
230 | ```
231 |
232 | - Portalde arama kısmına "Policy" yazın ve "Azure Policy" yönetim ekranına geçin.
233 |
234 | - Sol menüdeki "Assigments" kısmına tıklayın. Açılan ekranda önce "- Portalde arama kısmına "Policy" yazın ve "Azure Policy" yönetim ekranına geçin.
235 |
236 | - Sol menüdeki "Assigments" kısmına tıklayın ve açılan ekranda "Add a tag to resources" policy'sinin sağ tarafında bulunan ... tıklayın ve "Delete Assigment" seçeneği ile devam ederek silin. Aynı işlemi "Allowed virtual machine size SKUs" policy'si için de yapın ve silin.
237 |
238 |
239 |
240 |
241 | ***
242 |
243 | 17: **Subscription**’ızı tekrar **Root Management Group**’a taşıyın.
244 |
245 | Cevabı görmek için genişletin
246 |
247 | - Portalde arama kısmına "Management groups" yazın ve "Management groups" yönetim ekranına geçin.
248 |
249 | - Ana ekranda "Alistirma_Management_Group" altında size ait "Subscription" göreceksiniz. Bu satırın sağ kısmında ... butonu var, buna tıklayın ve "Move" butonuna basın.
250 |
251 | - Açılan ekranda "Tenant Root Group" seçili olacak şekilde "Save" butonuna basın ve taşıma işlemini tamamlayın.
252 |
253 |
254 |
255 | ***
256 |
257 | 18: **Azure Cli** araclığıyla bir **Service Principal** oluşturun.
258 |
259 | Cevabı görmek için genişletin
260 |
261 | Aşağıdaki komutu "Azure CLI" girdiğiniz zaman yeni bir "Service Principal" oluşturacaksınız. Bu komutun çıktısını bir yere not edin.
262 |
263 | ```shell
264 | $ az ad sp create-for-rbac --name ilkServicePrincipal
265 | ```
266 |
267 |
268 |
269 | ***
270 |
271 | 19: Oluşturduğunuz **Service Principal**’in **GroupA** isimli **Resource Group** üstünde **Reader** rölüne sahip olmasını sağlayın.
272 |
273 | Cevabı görmek için genişletin
274 |
275 | - Aşağıdaki komutu girin ve bu komutun çıktısındaki "id" değerinizi bir kere not edin. Bu sizin "Subscription Id" değeriniz.
276 |
277 | ```shell
278 | $ az account show
279 | {
280 | "environmentName": "AzureCloud",
281 | "homeTenantId": "5fccn384-ad28-4535-1234-cdf3b6cb9f83",
282 | "id": "a22ss2s9-3324-23s2-a8ef-92ce597fcb2f",
283 | "isDefault": true,
284 | "managedByTenants": [],
285 | "name": "Ayti.Tech Egitim Subscription",
286 | "state": "Enabled",
287 | "tenantId": "5fccn384-ad28-4535-1234-cdf3b6cb9f83",
288 | "user": {
289 | "cloudShellID": true,
290 | "name": "live.com#ategitim@hotmail.com",
291 | "type": "user"
292 | }
293 | }
294 | ```
295 |
296 | - Aşağıdaki komutta "appId" yerine oluşturduğunuz "Service Principal" appID değerini, "mySubscriptionID" yerine de "Subscription Id" değerinizi girin. Örn: ```az role assignment create --assignee 36fb113d-88d2-23f3-82f4-123874fae2b1 --role Reader --scope /subscriptions/a22ss2s9-3324-23s2-a8ef-92ce597fcb2f/resourceGroups/GroupA```
297 |
298 | ```shell
299 | $ az role assignment create --assignee appID --role Reader --scope /subscriptions/mySubscriptionID/resourceGroups/GroupA
300 | ```
301 |
302 | - Portalde arama kısmına "Resource Group" yazın ve "Resource Group" yönetim ekranına geçin.
303 |
304 | - Burada "GroupA" isimli grubu bulun ve tıklayın.
305 |
306 | - Açılan ekranda soldaki menüde "Access control (IAM)" ekranına geçin ve "Role assignments" kısmına gelin. Açılan ekranda "ilkServicePrincipal" isimli Service Principal'a "Reader" rolünün atandığını teyit edin.
307 |
308 |
309 |
310 | ***
311 |
312 | 20: Oluşturduğunuz **Service Principal**’i kullanarak **Azure** ile sağladığı **Rest Api** üstünden haberleşin ve **GroupA** isimli **Resource Group** altındaki kaynakları listeleyin. “Postman ya da Curl kullanabilirsiniz”.
313 |
314 | Cevabı görmek için genişletin
315 |
316 | - Azure Cloud Shell oturumu açın. "Eğer makinenizde Curl yüklü ise buna gerek yok, kendi komut satırınızdan da halledebilirsiniz".
317 |
318 | - Service Principal oluşturduğumuz adımda komutun çıktısını bir yere kaydedin demiştim. Şimdi buradaki bilgiler bize lazım olacak. Aşağıdaki komutta [APP_ID], [PASSWORD] ve [TENANT_ID] kısımlarını o çıktıdaki değerlerle değiştirerek bu komutu çalıştırın. Bu bizim client_credential flow'unu kullanarak Authorization Token'ımızı almamızı sağlayacak. Örnek Komut: ```curl -X POST -d 'grant_type=client_credentials&client_id=36fb113d-1234-1234-1234-2318741232b1&client_secret=123456Zko5IKYdMw~b6eFBJKeJIsP-vLcvHPaIa&resource=https%3A%2F%2Fmanagement.azure.com%2F' https://login.microsoftonline.com/123494cb4-1234-4148-1234-12345b9f83/oauth2/token```
319 |
320 | ```shell
321 | curl -X POST -d 'grant_type=client_credentials&client_id=[APP_ID]&client_secret=[PASSWORD]&resource=https%3A%2F%2Fmanagement.azure.com%2F' https://login.microsoftonline.com/[TENANT_ID]/oauth2/token
322 | ```
323 |
324 | - Bu komutun çıktısı bize aşağıdaki gibi bir json değer sağlayacak. Burada access_token'dan sonra gelen token değerini kopyalayın ve bir yere kaydedin. "eyJ0eX... ile başlayıp ...RNw ile biten kısım."
325 |
326 | ```shell
327 | {"token_type":"Bearer","expires_in":"3599","ext_expires_in":"3599","expires_on":"1679335415","not_before":"1679331515","resource":"https://management.azure.com/","access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ii1LSTNROW5OUjdiUm9meG1lWm9YcWJIWkdldyIsImtpZCI6Ii1LSTNROW5OUjdiUm9meG1lWm9YcWJIWkdldyJ9.eyJhdWQiOiJodHRwczovL21hbmFnZW1lbnQuYXp1cmUuY29tLyIsImlzcyI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0LzVmYzk0Y2I0LWFmOTgtNDE0OC1iODhiLWNkZjNiNmNiOWY4My8iLCJpYXQiOjE2NzkzMzE1MTUsIm5iZiI6MTY3OTMzMTUxNSwiZXhwIjoxNjc5MzM1NDE1LCJhaW8iOiJFMlpnWUVnM1ZkbWY2aHNwdi91UE1iZmY4L01DQUE9PSIsImFwcGlkIjoiMzZmYjExM2QtMjJiNi00M2IyLThkZDQtMjMxODc0ZmFlMmIxIiwiYXBwaWRhY3IiOiIxIiwiaWRwIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvNWZjOTRjYjQtYWY5OC00MTQ4LWI4OGItY2RmM2I2Y2I5ZjgzLyIsImlkdHlwIjoiYXBwIiwib2lkIjoiY2JjMWY3YzMtMzU1OC00ZTlhLWFmODUtZmEwOWVhMzcxNmIxIiwicmgiOiIwLkFZSUF0RXpKWDVpdlNFRzRpODN6dHN1ZmcwWklmM2tBdXRkUHVrUGF3ZmoyTUJPVkFBQS4iLCJzdWIiOiJjYmMxZjdjMy0zNTU4LTRlOWEtYWY4NS1mYTA5ZWEzNzE2YjEiLCJ0aWQiOiI1ZmM5NGNiNC1hZjk4LTQxNDgtYjg4Yi1jZGYzYjZjYjlmODMiLCJ1dGkiOiJjOU5TZ3plekkwV3RZNTRwdUlWZUFBIiwidmVyIjoiMS4wIiwieG1zX3RjZHQiOjE2NjI3Mjk1NjB9.BsYmD4TdI76X2NZBqfMSbBTTJD_5aRb9XSMIUhi7so4zgA1WyW8n8onLar7pkcAIRCQS-yBlnGOHiKhiWH6IuIRPRCN5YacJvrb6lbXCVmO2dkoUCGGGVq3M6GrTkk5AUbSBLbtROi4hJKh_FWrbYpoSeYXSn9XWgw1VyF9Gbh_s2B-QhR9SsYKrS_onJdiaeafuOH13bZCupmWtmxxOMHeX8RdfGFXA9cHo8DjRkC9wyHlKXPZIKC2t22M8auR-5EVcGlF8IvIea2e0ZKrcEUAcK9TvY7sQiqz-9L7ymWhaygKyMOrB_T7-e6xoIes1UadrbqpPZSw1RNt06NpRNw"}
328 | ```
329 |
330 | - Artık sorgumuzu göndermeye hazırız. Aşağıdaki komuttaki [Token] değerini silelim bir önceki adımda kopyaladığımız değeri yapıştıralım. [Subscription ID] değerini de Subscription ID'mizile değiştirelim. Bu komutun sonucu bizler "GroupA" altındaki tüm kaynakları json olarak geri döndürecek. Örnek Komut: ```curl -X GET -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ii1LSTNROW5OUjdiUm9meG1lWm9YcWJIWkdldyIsImtpZCI6Ii1LSTNROW5OUjdiUm9meG1lWm9YcWJIWkdldyJ9.eyJhdWQiOiJodHRwczovL21hbmFnZW1lbnQuYXp1cmUuY29tLyIsImlzcyI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0LzVmYzk0Y2I0LWFmOTgtNDE0OC1iODhiLWNkZjNiNmNiOWY4My8iLCJpYXQiOjE2NzkzMzE1MTUsIm5iZiI6MTY3OTMzMTUxNSwiZXhwIjoxNjc5MzM1NDE1LCJhaW8iOiJFMlpnWUVnM1ZkbWY2aHNwdi91UE1iZmY4L01DQUE9PSIsImFwcGlkIjoiMzZmYjExM2QtMjJiNi00M2IyLThkZDQtMjMxODc0ZmFlMmIxIiwiYXBwaWRhY3IiOiIxIiwiaWRwIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvNWZjOTRjYjQtYWY5OC00MTQ4LWI4OGItY2RmM2I2Y2I5ZjgzLyIsImlkdHlwIjoiYXBwIiwib2lkIjoiY2JjMWY3YzMtMzU1OC00ZTlhLWFmODUtZmEwOWVhMzcxNmIxIiwicmgiOiIwLkFZSUF0RXpKWDVpdlNFRzRpODN6dHN1ZmcwWklmM2tBdXRkUHVrUGF3ZmoyTUJPVkFBQS4iLCJzdWIiOiJjYmMxZjdjMy0zNTU4LTRlOWEtYWY4NS1mYTA5ZWEzNzE2YjEiLCJ0aWQiOiI1ZmM5NGNiNC1hZjk4LTQxNDgtYjg4Yi1jZGYzYjZjYjlmODMiLCJ1dGkiOiJjOU5TZ3plekkwV3RZNTRwdUlWZUFBIiwidmVyIjoiMS4wIiwieG1zX3RjZHQiOjE2NjI3Mjk1NjB9.BsYmD4TdI76X2NZBqfMSbBTTJD_5aRb9XSMIUhi7so4zgA1WyW8n8onLar7pkcAIRCQS-yBlnGOHiKhiWH6IuIRPRCN5YacJvrb6lbXCVmO2dkoUCGGGVq3M6GrTkk5AUbSBLbtROi4hJKh_FWrbYpoSeYXSn9XWgw1VyF9Gbh_s2B-QhR9SsYKrS_onJdiaeafuOH13bZCupmWtmxxOMHeX8RdfGFXA9cHo8DjRkC9wyHlKXPZIKC2t22M8auR-5EVcGlF8IvIea2e0ZKrcEUAcK9TvY7sQiqz-9L7ymWhaygKyMOrB_T7-e6xoIes1UadrbqpPZSw1RNt06NpRNw" -H "Content-Type: application/json" https://management.azure.com/subscriptions/a12347529-1234-46c0-a8ef-222ce597fcb2f/resourceGroups/GroupA/resources?pi-version=2021-04-01```
331 |
332 | ```shell
333 | $ curl -X GET -H "Authorization: Bearer [Token]" -H "Content-Type: application/json" https://management.azure.com/subscriptions/[Subscription ID]/resourceGroups/GroupA/resources?api-version=2021-04-01
334 | ```
335 |
336 |
337 |
338 | ***
339 |
340 | 21: **GroupA** isimli **Resource Group** altında oluşturduğunuz **Sanal Makinede**, **System Assigned Managed Identity** hizmetini devreye alın. Bu **Managed Identity**’e **GroupB** isimli **Resource Group** üstünde **Reader** rölünü atayın.
341 |
342 | Cevabı görmek için genişletin
343 |
344 |
345 | - Portalde arama kısmına "Resource Group" yazın ve "Resource Group" yönetim ekranına geçin.
346 |
347 | - Burada "GroupA" isimli grubu bulun ve tıklayın.
348 |
349 | - "ilksanalmakine" isimli sanal makineye tıklayın. Soldaki menüden "Identity" ekranına gelin. Karşınıza çıkan ekranda "Status" kısmını Off seçeneğinden On seçeneğine döndürün ve "Save" butonuna basın. Bu sayede bu makineye bir "Managed Identiy" atanacak.
350 |
351 | - Portalde arama kısmına "Resource Group" yazın ve "Resource Group" yönetim ekranına geçin.
352 |
353 | - Burada "GroupB" isimli grubu bulun ve tıklayın.
354 |
355 | - Açılan ekranda soldaki menüde "Access control (IAM)" ekranına geçin ve "Add>Add Role Assignment" yolunu takip edin. Açılan listeden "Reader" rolünü seçin ve next ile devam ederek bir sonraki ekranda ilk olarak "Assign access to" kısmında "Managed Identity" seçin. Ardından "+Select Member" butonuyla "ilksanalmakine" isimli managed identity'i seçin ve işlemleri tamamlayın.
356 |
357 |
358 |
359 | ***
360 |
361 | 22: 200 TL'lık bir **Budget** oluşturun ve bu **Budget**’a ulaşıldığı zaman size mail göndermesini sağlayacak işlemleri tamamlayın.
362 |
363 | Cevabı görmek için genişletin
364 |
365 | - Portalde arama kısmına "Subscriptions" yazın ve "Subscription" yönetim ekranına geçin.
366 |
367 | - Soldaki menüden "Budgets" ekranına gelin. +Add butonuna basın ve yeni bir budget oluşturma adımlarına başlayın. "Name" kısmına bir isim girin, "Reset Period" kısmı "Monthly" olarak seçilsin. "Creation date" ve "Expiration date" kısımlarını olduğu gibi bırakın. "Amount" kısmını TL ise 200, Euro ya da Dolar ise 10 değerini girin ve
368 |
369 | - Bir sonraki adımda "Alert condition" kısmında tip olarak "Actual" ve "% of budget" kısmına da 90 değerini girin. "Alert recipients (email)" kısmına da email adresinizi girip "Create" butonuyla devam edin.
370 |
371 |
372 |
373 | ***
374 |
375 | 23: **Az PowerShell Module** kullanarak **GroupA** ve **GroupB** isimli **Resource Group**ları silin.
376 |
377 | Cevabı görmek için genişletin
378 |
379 | ```shell
380 | > Remove-AzResourceGroup -Name "GroupA"
381 |
382 | Confirm
383 | Are you sure you want to remove resource group 'GroupA'
384 | [Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): Y
385 | ```
386 |
387 | ```shell
388 | > Remove-AzResourceGroup -Name "GroupB"
389 |
390 | Confirm
391 | Are you sure you want to remove resource group 'GroupA'
392 | [Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): Y
393 | ```
394 |
395 |
396 |
397 | ***
398 |
--------------------------------------------------------------------------------