狠狠撸

狠狠撸Share a Scribd company logo
コストと脅威を同時に削減! Azureリソースを
Azure AD で効率的に守るためのノウハウ集
安納 順一
日本マイクロソフト株式会社
Commercial Software Engineering
CI01
2
「安全」にしてください!
3
技術 運用
“安全”であることを維持し続けられることが重要
4
Security DevOps
Secure the
subscription
Enable
secure
developme-
nt
Integrate
security into
CICD
Continuous
Assurance
Alerting &
Monitoring
Cloud Risk
Governance
起点はサブスクリプションのセキュリティ設
計
? Azure AD による認証と認可
? 多要素認証
? Identity Protection
? Managed Identity
? ARM & Role-based Access Control
? モニター
? Azure セキュリティセンター
? Log Analytics
? ガバナンス
? Azure Blueprints/Azure Policy
? Just Enough Administration(JEA)
? PowerShell JEA
? Azure AD 特権管理
5
6
Azure AD Join
パスワード連携
OMA-DM
オンプレミス
SAML 2.0
WS-Federation
OpenID Connect
OAuth 2.0
ID
管理
認証
Active
Directory
U/P Sync
SSO
業界標準プロトコルの
サポート
他社 SaaS との ID 連携
Microsoft
Passport
Windows Hello
Windows 10
Browser
セキュリティ
ポリシー
アプリ配布/利用制限
暗号化,
権限管理,追跡
BYOD/CYOD
社内業務
SAML 2.0
WS-Fed.
Azure
Machine
Learning
Intune
Subscription
RBAC
…
Proxy
Connector
KCD
ID 同期
条件付き????
特権 ID 管理
RBAC
Managed ID 多要素認証必須
アクセスOK
アクセス不可
ID
連携
Information
Protection
MDM/
MAM/
MCM
B2B
Azure IaaS
Domain
Services
VPN
Kerberos
ldap
NTLM
Group Policy
SPNego
IWA
アクセス
パネルBusiness
Store
SCIM 2.0
監査
???解析
?????IT検出
???????認証
MS Account
7
Azure Resource Management API
Azure サブスクリプション
8
アプリケーション サービス プロバイダー
条件付きアクセス
Identity Protection
MFA
9
Azure サブスクリプション アプリケーション サービス プロバイ
ダー
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-conditional-access
https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-dynamic-data-masking-get-started-portal
name division email phone
Junichia SEI jxxx@xxxx.com 000-0000-0000
Hirosho C+E hxxx@xxxx.com 000-0000-0000
Sahomma SET sxxx@xxxx.com 000-0000-0000
drobbins DevCrew dxxx@xxxx.com 000-0000-0000
const string authString = "https://login.windows.net/hogehoge.com";
const string clientID = "07e33f8a-166f-4d79-a46d-f96dccf08b76";
const string clientSecret =
"s9e6moGcFsRPP0rENcniLxxxxxhgmpGxxxxxpSIenvY=";
const string resAzureGraphAPI = "https://graph.windows.net";
const string serviceRootURL = "https://graph.windows.net/hogehoge.com”;
こいつをなんとかしたい
※ SQL 接続文字列も同様
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
サブスクリプション
Azure Resource Manager
Azure AD で保護されたリソース”に安全にアクセスするには、
import urllib
import json
from collections import OrderedDict
import pprint
import matplotlib.pyplot as plt
from PIL import Image,ImageOps
import cv2
import numpy
import string
import glob
#img = cv2.imread("./images/給振用紙サンプル_10_U6.jpg")
imgfile_folder = 'images_labeled'
allFiles = []
#allFiles = glob.glob(imgfile_folder + '/*.jpg')
allFiles = glob.glob(imgfile_folder + '/7*.jpg')
print(str(len(allFiles)) + 'このファイルを処理します')
#print(allFiles)
imgs = []
p = []
for f in allFiles:
img = cv2.imread(f)
imgs.append(img)
#img = cv2.equalizeHist(img)
img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
gamma = 2.0
imax = img.max()
img = imax * (img / imax)**(1/gamma)
#plt.imshow(img)
im = Image.fromarray(numpy.uint8(img))
#im = im.convert('L')
im = ImageOps.invert(im)
#plt.imshow(im)
width, height = im.size
img = []
for y in range(height):
for x in range(width):
img.append(im.getpixel((x,y)))
img.insert(0,"0") #ダミーのラベルデータを入れておく
颁辞苍蹿颈驳摆“础辫辫厂别肠谤别迟&辩耻辞迟;闭
颁辞苍蹿颈驳摆“础辫辫厂别肠谤别迟&辩耻辞迟;闭
ハンドオフがある
んじゃない?
そもそも人が介在すること自体が不安
技術だけでなく
セキュリティ運用ルールにおける
ガバナンスとコンプライアンス
RBAC
信頼関係
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
http://169.254.169.254/
metadata/instance?api-
version=2018-02-01
metadata
? ARM 配下の仮想マシン インスタンスに関する情報を提供するインターフェース
? 実行中の仮想マシン インスタンスからのみアクセス可能
? ルーティング不可能なローカルホスト(169.254.169.254)から取得する
http://169.254.169.254/metadata/instance/<category>
{ "compute": { "location": "westus", "name": "avset2",
"offer": "UbuntuServer", "osType": "Linux",
"placementGroupId": "", "platformFaultDomain": "1",
"platformUpdateDomain": "1", "publisher": "Canonical",
"resourceGroupName": "myrg", "sku": "16.04-LTS",
"subscriptionId": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"tags": "", "version": "16.04.201708030", "vmId": "13f56399-
bd52-4150-9748-7190aae1ff21", "vmScaleSetName": "",
"vmSize": "Standard_D1", "zone": "1" }, "network":
{ "interface": [ { "ipv4": { "ipAddress":
[ { "privateIpAddress": "10.1.2.5", "publicIpAddress":
"X.X.X.X" } ], "subnet": [ { "address": "10.1.2.0", "prefix":
"24" } ] }, "ipv6": { "ipAddress": [] }, "macAddress":
"000D3A36DDED" } ] } }
api-version=2017-08-01
Endpoint
Parameter
Header Metadata="true"
http://169.254.169.254/metadata/Identity/OAuth/Token
'http://169.254.169.254/metadata/identity/oauth2/token
?api-version=2018-02-01
&resource=https%3A%2F%2Fvault.azure.net'
Endpoint
Parameter api-version=2018-02-01
resource=https%3A%2F%2Fvault.azure.net
Header Metadata="true"
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
StatusCode : 200
StatusDescription : OK
Content : {"access_token":"eyJ0eXAiOiJKV1QiLxxxxxxxxxxSUzI1NiIsIng1dCI6IndVTG1ZZnNxZFF1V3RW
Xy1oeFZ0REpKWkxxxxxxxxxxZCI6IndVTG1ZZnNxZFF1V3RWXy1oeFZ0REpKWk00USJ9.eyJhdWQiOiJo
dHRwczovL3ZhdWx0LmF6dXJlxxxxxxxxxxlzcy...
RawContent : HTTP/1.1 200 OK
Content-Length: 1599
Content-Type: application/json; charset=utf-8
Date: Wed, 07 Nov 2018 04:12:01 GMT
Server: Microsoft-IIS/10.0
{"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUz...
Forms : {}
$resource = 'https%3A%2F%2Fvault.azure.net'
$baseurl = 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01'
$url = $baseurl + '&resource=' + $resource
$response = Invoke-WebRequest `
-Uri $url `
-Method GET `
-Headers @{Metadata="true"}
$token = ($response.content | ConvertFrom-Json).access_token
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IndVTG1ZZnNxZFF1V3RWXy1oeFZ0REpKWk00USIsImtpZCI6IndVTG1ZZn
NxZFF1V3RWXy1oeFZ0REpKWk00USJ9.eyJhdWQiOiJodHRwczovL3ZhdWx0LmF6dXJlLm5ldCIsImlzcyI6Imh0dHBzOi8vc3RzLnd
pbmRvd3MubmV0L2M5Njg3MTQ1LTUyMWYtNDJlNi1hMDAyLWMyZGY0MDRhNzFlZS8iLCJpYXQiOjE1NDE1NjM2MjEsIm5iZiI6MTU0M
TU2MzYyMSwiZXhwIjoxNTQxNTkyNzIxLCJhaW8iOiI0MlJnWUlnTys5WmZMcjV1cnl6djNUV3Jkd3ZjQXdBPSIsImFwcGlkIjoiZDR
mMDAzMmMtODBiNy00NzMyLThiOTUtZjFlYjllZmQ1N2NjIiwiYXBwaWRhY3IiOiIyIiwiZV9leHAiOjI4ODAwMCwiaWRwIjoiaHR0c
HM6Ly9zdHMud2luZG93cy5uZXQvYzk2ODcxNDUtNTIxZi00MmU2LWEwMDItYzJkZjQwNGE3MWVlLyIsIm9pZCI6ImNlNDY2OGM1LWF
lOWQtNDZmYS1iMTYxLWYxOGFiYWI2ODRkOSIsInN1YiI6ImNlNDY2OGM1LWFlOWQtNDZmYS1iMTYxLWYxOGFiYWI2ODRkOSIsInRpZ
CI6ImM5Njg3MTQ1LTUyMWYtNDJlNi1hMDAyLWMyZGY0MDRhNzFlZSIsInV0aSI6ImhNLWlCeXBXUGtLaE9UNWlvZmtEQUEiLCJ2ZXI
iOiIxLjAiLCJ4bXNfbWlyaWQiOiIvc3Vic2NyaXB0aW9ucy8zMjZjMzU5Ni04YWRhLTQ0YmItYWY2OS1iZDk4YWVmMGFjYmUvcmVzb
3VyY2Vncm91cHMvdGVjaHN1bW1pdDIwMTgvcHJvdmlkZXJzL01pY3Jvc29mdC5Db21wdXRlL3ZpcnR1YWxNYWNoaW5lcy90czIwMTh
2bTAyIn0.jWbL_EZyr43BgQEN-CC5cM15XTFeSVmZpKrUW3-N5SJpNONpES6Q8YQQkKRhRrpmkBADy45fI8eMj28R7sCDo1lTl4hzz
aEplNlgSKtDv1xO6GD9vaxlS9V1eMcjimLEHk9N5QyZSllv21_F32rsnC_dv67W5v0KQZVGgTpHallEDR1SL_p9-kagdy4KBJ00GnR
ooW7laLmQUkxDlYBVAv0kB6ebnkPspWKoFQSxk0xd-HVKHDBvUVhCBW8dTVTX3XGDM8dcIH6c-EOde_uXdWO6q-nVJJZEYAzf4F3Vi
IeMbM851Bc57Mp4MkhG38tEP4GF9eK7Jj8zXOTPLY10NA
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
$KeyVault = "https://pharaojpkey.vault.azure.net/"
$KeyContainer = $KeyVault + "secrets/testSecret"
$KVuri = $KeyContainer + "?api-version=2016-10-01"
$KeyVaultResponse = Invoke-WebRequest `
-Uri $KVuri `
-Method GET `
-Headers @{Authorization="Bearer $KeyVaultToken"}
($KeyVaultResponse.Content | ConvertFrom-Json).Value
const rp = require('request-promise');
const getToken = function(resource, apiver, cb) {
var options = {
uri: `${process.env["MSI_ENDPOINT"]}/?resource=${resource}&api-
version=${apiver}`,
headers: {
'Secret': process.env["MSI_SECRET"]
}
};
rp(options)
.then(cb);
}
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
? システム割り当てマネージド ID(system-assigned managed identity)
? Azure サービス インスタンス上で直接有効にされるID
? 各インスタンスで機能を有効にする
? インスタンスが削除された場合、Azure AD の資格情報および ID を自動的にクリーンアップされる
? ユーザー割り当てマネージド ID(user-assigned managed identity) ※Preview
? 複数のリソースに割り当て可能なマネージド ID
? 現時点では VM と Container サービスでのみ使用可能
RBAC
信頼関係
信頼関係
サービス システム割り当てID ユーザー割り当てID
Azure Virtual Machines 〇 Preview
Virtual Machine Scale Sets 〇 Preview
Azure App Service
Windows:〇
Linux: Coming Soon
?
Azure Functions 〇 ?
Azure Logic Apps 〇 ?
Azure Data Factory V2 〇 ?
Azure API Management 〇 ?
Azure Container Instances
Windows: ?
Linux: Preview
Windows: -
Linux: Preview
最新情報
https://docs.microsoft.com/ja-jp/azure/active-directory/managed-identities-azure-resources/services-support-msi
2018/10/23 現在
Service Resource ID Status
Azure Resource Manager https://management.azure.com/ 使用可能
Microsoft Graph https://graph.windows.net 使用可能
Azure Key Vault https://vault.azure.net/ 使用可能
Azure Data Lake https://datalake.azure.net/ 使用可能
Azure SQL https://database.windows.net/ 使用可能
Azure Event Hubs https://eventhubs.azure.net/ プレビュー
Azure Service Bus https://servicebus.azure.net/ プレビュー
Azure Storage https://storage.azure.com/ プレビュー
最新情報
https://docs.microsoft.com/ja-jp/azure/active-directory/managed-identities-azure-resources/services-support-msi
2018/10/23 現在
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
Resource
Group
{
"properties": {
"displayName": "NSG X on every nic",
"description": "This policy enforces a specific NSG on every virtual network interface",
"parameters": {
"nsgId": {
"type": "string",
"metadata": {
"description": "Resource Id of the Network Security Group",
"displayName": "Network Security Group Id"
}
}
},
"policyRule": {
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Network/networkInterfaces"
},
{
"not": {
"field": "Microsoft.Network/networkInterfaces/networkSecurityGroup.id",
"equals": "[parameters('nsgId')]"
}
}
]
},
"then": {
"effect": "deny"
}
}
}
}
42
Blueprint
Policy Assignment
Role Assignment(RBAC)
Azure Resource Manager Template
Built-in
Custom
Management Group
and
43
43
Resource
Group
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
Azure Blueprints & Policy to get DevOps right | Best of Microsoft Ignite 2018
https://www.youtube.com/watch?v=OiOXlgFNgDo
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
NoOps
uncomfortable
No
Ops
Security DevOps
Secure the
subscriptio
n
Enable
secure
developme
-nt
Integrate
security
into CICD
Continuous
Assurance
Alerting &
Monitoring
Cloud Risk
Governance
起点はサブスクリプションのセキュリティ設計
? Azure AD による認証と認可
? 多要素認証
? Identity Protection
? Managed Identity
? ARM & Role-based Access Control
? モニター
? Azure セキュリティセンター
? Log Analytics
? ガバナンス
? Azure Blueprints/Azure Policy
? Just Enough Administration(JEA)
? PowerShell JEA
? Azure AD 特権管理
52
参考URL
https://docs.microsoft.com/ja-jp/azure/security/
? Advanced threat detection
? Azure logging and auditing
? Azure network security
? Azure serverless platform security
? Container security in Azure
? Enabling operational security
? Isolation in the Azure cloud
? Secure hybrid network architecture
? Security technical capabilities
Information
「Ask The Speaker」
各ブレイクアウトセッション終了後の休憩時
間に、
登壇したスピーカーに直接ご質問いただける
コーナーを B2F 「Ask The Speaker」
Room に用意
しています。セッション内容のより深い理解
のため、
ぜひお役立てください。
(※ハンズオンラーニング、シアターセッション、ビジネス
トラック
及び 一部のセッションを除きます)
EXPO
AREA 1
EXPO
AREA 2
Room
C
セッションアンケートにご協力ください。
公式イベントアプリで、「Microsoft Tech Summit 2018 参加者アンケート(必
須)」と
「各セッションアンケート( 5 つ以上)」、合わせて 6 つ以上のアンケートに
ご回答ください。
もれなくオリジナルグッズを贈呈いたします。
Information
Twitter のご案内
本セッションに関するご質問やご感想は、 #mstsjp18 と セッション ID の
ハッシュタグで、ご投稿をお願いします。
#mstsjp18
55
? 2018 Microsoft Corporation. All rights reserved.
本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

More Related Content

Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD

  • 1. コストと脅威を同時に削減! Azureリソースを Azure AD で効率的に守るためのノウハウ集 安納 順一 日本マイクロソフト株式会社 Commercial Software Engineering CI01
  • 4. 4 Security DevOps Secure the subscription Enable secure developme- nt Integrate security into CICD Continuous Assurance Alerting & Monitoring Cloud Risk Governance 起点はサブスクリプションのセキュリティ設 計 ? Azure AD による認証と認可 ? 多要素認証 ? Identity Protection ? Managed Identity ? ARM & Role-based Access Control ? モニター ? Azure セキュリティセンター ? Log Analytics ? ガバナンス ? Azure Blueprints/Azure Policy ? Just Enough Administration(JEA) ? PowerShell JEA ? Azure AD 特権管理
  • 5. 5
  • 6. 6 Azure AD Join パスワード連携 OMA-DM オンプレミス SAML 2.0 WS-Federation OpenID Connect OAuth 2.0 ID 管理 認証 Active Directory U/P Sync SSO 業界標準プロトコルの サポート 他社 SaaS との ID 連携 Microsoft Passport Windows Hello Windows 10 Browser セキュリティ ポリシー アプリ配布/利用制限 暗号化, 権限管理,追跡 BYOD/CYOD 社内業務 SAML 2.0 WS-Fed. Azure Machine Learning Intune Subscription RBAC … Proxy Connector KCD ID 同期 条件付き???? 特権 ID 管理 RBAC Managed ID 多要素認証必須 アクセスOK アクセス不可 ID 連携 Information Protection MDM/ MAM/ MCM B2B Azure IaaS Domain Services VPN Kerberos ldap NTLM Group Policy SPNego IWA アクセス パネルBusiness Store SCIM 2.0 監査 ???解析 ?????IT検出 ???????認証 MS Account
  • 7. 7 Azure Resource Management API Azure サブスクリプション
  • 13. https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-dynamic-data-masking-get-started-portal name division email phone Junichia SEI jxxx@xxxx.com 000-0000-0000 Hirosho C+E hxxx@xxxx.com 000-0000-0000 Sahomma SET sxxx@xxxx.com 000-0000-0000 drobbins DevCrew dxxx@xxxx.com 000-0000-0000
  • 14. const string authString = "https://login.windows.net/hogehoge.com"; const string clientID = "07e33f8a-166f-4d79-a46d-f96dccf08b76"; const string clientSecret = "s9e6moGcFsRPP0rENcniLxxxxxhgmpGxxxxxpSIenvY="; const string resAzureGraphAPI = "https://graph.windows.net"; const string serviceRootURL = "https://graph.windows.net/hogehoge.com”; こいつをなんとかしたい ※ SQL 接続文字列も同様
  • 17. サブスクリプション Azure Resource Manager Azure AD で保護されたリソース”に安全にアクセスするには、
  • 18. import urllib import json from collections import OrderedDict import pprint import matplotlib.pyplot as plt from PIL import Image,ImageOps import cv2 import numpy import string import glob #img = cv2.imread("./images/給振用紙サンプル_10_U6.jpg") imgfile_folder = 'images_labeled' allFiles = [] #allFiles = glob.glob(imgfile_folder + '/*.jpg') allFiles = glob.glob(imgfile_folder + '/7*.jpg') print(str(len(allFiles)) + 'このファイルを処理します') #print(allFiles) imgs = [] p = [] for f in allFiles: img = cv2.imread(f) imgs.append(img) #img = cv2.equalizeHist(img) img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) gamma = 2.0 imax = img.max() img = imax * (img / imax)**(1/gamma) #plt.imshow(img) im = Image.fromarray(numpy.uint8(img)) #im = im.convert('L') im = ImageOps.invert(im) #plt.imshow(im) width, height = im.size img = [] for y in range(height): for x in range(width): img.append(im.getpixel((x,y))) img.insert(0,"0") #ダミーのラベルデータを入れておく
  • 24. http://169.254.169.254/ metadata/instance?api- version=2018-02-01 metadata ? ARM 配下の仮想マシン インスタンスに関する情報を提供するインターフェース ? 実行中の仮想マシン インスタンスからのみアクセス可能 ? ルーティング不可能なローカルホスト(169.254.169.254)から取得する http://169.254.169.254/metadata/instance/<category> { "compute": { "location": "westus", "name": "avset2", "offer": "UbuntuServer", "osType": "Linux", "placementGroupId": "", "platformFaultDomain": "1", "platformUpdateDomain": "1", "publisher": "Canonical", "resourceGroupName": "myrg", "sku": "16.04-LTS", "subscriptionId": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx", "tags": "", "version": "16.04.201708030", "vmId": "13f56399- bd52-4150-9748-7190aae1ff21", "vmScaleSetName": "", "vmSize": "Standard_D1", "zone": "1" }, "network": { "interface": [ { "ipv4": { "ipAddress": [ { "privateIpAddress": "10.1.2.5", "publicIpAddress": "X.X.X.X" } ], "subnet": [ { "address": "10.1.2.0", "prefix": "24" } ] }, "ipv6": { "ipAddress": [] }, "macAddress": "000D3A36DDED" } ] } } api-version=2017-08-01 Endpoint Parameter Header Metadata="true"
  • 27. StatusCode : 200 StatusDescription : OK Content : {"access_token":"eyJ0eXAiOiJKV1QiLxxxxxxxxxxSUzI1NiIsIng1dCI6IndVTG1ZZnNxZFF1V3RW Xy1oeFZ0REpKWkxxxxxxxxxxZCI6IndVTG1ZZnNxZFF1V3RWXy1oeFZ0REpKWk00USJ9.eyJhdWQiOiJo dHRwczovL3ZhdWx0LmF6dXJlxxxxxxxxxxlzcy... RawContent : HTTP/1.1 200 OK Content-Length: 1599 Content-Type: application/json; charset=utf-8 Date: Wed, 07 Nov 2018 04:12:01 GMT Server: Microsoft-IIS/10.0 {"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUz... Forms : {} $resource = 'https%3A%2F%2Fvault.azure.net' $baseurl = 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01' $url = $baseurl + '&resource=' + $resource $response = Invoke-WebRequest ` -Uri $url ` -Method GET ` -Headers @{Metadata="true"}
  • 28. $token = ($response.content | ConvertFrom-Json).access_token eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IndVTG1ZZnNxZFF1V3RWXy1oeFZ0REpKWk00USIsImtpZCI6IndVTG1ZZn NxZFF1V3RWXy1oeFZ0REpKWk00USJ9.eyJhdWQiOiJodHRwczovL3ZhdWx0LmF6dXJlLm5ldCIsImlzcyI6Imh0dHBzOi8vc3RzLnd pbmRvd3MubmV0L2M5Njg3MTQ1LTUyMWYtNDJlNi1hMDAyLWMyZGY0MDRhNzFlZS8iLCJpYXQiOjE1NDE1NjM2MjEsIm5iZiI6MTU0M TU2MzYyMSwiZXhwIjoxNTQxNTkyNzIxLCJhaW8iOiI0MlJnWUlnTys5WmZMcjV1cnl6djNUV3Jkd3ZjQXdBPSIsImFwcGlkIjoiZDR mMDAzMmMtODBiNy00NzMyLThiOTUtZjFlYjllZmQ1N2NjIiwiYXBwaWRhY3IiOiIyIiwiZV9leHAiOjI4ODAwMCwiaWRwIjoiaHR0c HM6Ly9zdHMud2luZG93cy5uZXQvYzk2ODcxNDUtNTIxZi00MmU2LWEwMDItYzJkZjQwNGE3MWVlLyIsIm9pZCI6ImNlNDY2OGM1LWF lOWQtNDZmYS1iMTYxLWYxOGFiYWI2ODRkOSIsInN1YiI6ImNlNDY2OGM1LWFlOWQtNDZmYS1iMTYxLWYxOGFiYWI2ODRkOSIsInRpZ CI6ImM5Njg3MTQ1LTUyMWYtNDJlNi1hMDAyLWMyZGY0MDRhNzFlZSIsInV0aSI6ImhNLWlCeXBXUGtLaE9UNWlvZmtEQUEiLCJ2ZXI iOiIxLjAiLCJ4bXNfbWlyaWQiOiIvc3Vic2NyaXB0aW9ucy8zMjZjMzU5Ni04YWRhLTQ0YmItYWY2OS1iZDk4YWVmMGFjYmUvcmVzb 3VyY2Vncm91cHMvdGVjaHN1bW1pdDIwMTgvcHJvdmlkZXJzL01pY3Jvc29mdC5Db21wdXRlL3ZpcnR1YWxNYWNoaW5lcy90czIwMTh 2bTAyIn0.jWbL_EZyr43BgQEN-CC5cM15XTFeSVmZpKrUW3-N5SJpNONpES6Q8YQQkKRhRrpmkBADy45fI8eMj28R7sCDo1lTl4hzz aEplNlgSKtDv1xO6GD9vaxlS9V1eMcjimLEHk9N5QyZSllv21_F32rsnC_dv67W5v0KQZVGgTpHallEDR1SL_p9-kagdy4KBJ00GnR ooW7laLmQUkxDlYBVAv0kB6ebnkPspWKoFQSxk0xd-HVKHDBvUVhCBW8dTVTX3XGDM8dcIH6c-EOde_uXdWO6q-nVJJZEYAzf4F3Vi IeMbM851Bc57Mp4MkhG38tEP4GF9eK7Jj8zXOTPLY10NA
  • 31. $KeyVault = "https://pharaojpkey.vault.azure.net/" $KeyContainer = $KeyVault + "secrets/testSecret" $KVuri = $KeyContainer + "?api-version=2016-10-01" $KeyVaultResponse = Invoke-WebRequest ` -Uri $KVuri ` -Method GET ` -Headers @{Authorization="Bearer $KeyVaultToken"} ($KeyVaultResponse.Content | ConvertFrom-Json).Value
  • 32. const rp = require('request-promise'); const getToken = function(resource, apiver, cb) { var options = { uri: `${process.env["MSI_ENDPOINT"]}/?resource=${resource}&api- version=${apiver}`, headers: { 'Secret': process.env["MSI_SECRET"] } }; rp(options) .then(cb); }
  • 34. ? システム割り当てマネージド ID(system-assigned managed identity) ? Azure サービス インスタンス上で直接有効にされるID ? 各インスタンスで機能を有効にする ? インスタンスが削除された場合、Azure AD の資格情報および ID を自動的にクリーンアップされる ? ユーザー割り当てマネージド ID(user-assigned managed identity) ※Preview ? 複数のリソースに割り当て可能なマネージド ID ? 現時点では VM と Container サービスでのみ使用可能 RBAC 信頼関係 信頼関係
  • 35. サービス システム割り当てID ユーザー割り当てID Azure Virtual Machines 〇 Preview Virtual Machine Scale Sets 〇 Preview Azure App Service Windows:〇 Linux: Coming Soon ? Azure Functions 〇 ? Azure Logic Apps 〇 ? Azure Data Factory V2 〇 ? Azure API Management 〇 ? Azure Container Instances Windows: ? Linux: Preview Windows: - Linux: Preview 最新情報 https://docs.microsoft.com/ja-jp/azure/active-directory/managed-identities-azure-resources/services-support-msi 2018/10/23 現在
  • 36. Service Resource ID Status Azure Resource Manager https://management.azure.com/ 使用可能 Microsoft Graph https://graph.windows.net 使用可能 Azure Key Vault https://vault.azure.net/ 使用可能 Azure Data Lake https://datalake.azure.net/ 使用可能 Azure SQL https://database.windows.net/ 使用可能 Azure Event Hubs https://eventhubs.azure.net/ プレビュー Azure Service Bus https://servicebus.azure.net/ プレビュー Azure Storage https://storage.azure.com/ プレビュー 最新情報 https://docs.microsoft.com/ja-jp/azure/active-directory/managed-identities-azure-resources/services-support-msi 2018/10/23 現在
  • 41. { "properties": { "displayName": "NSG X on every nic", "description": "This policy enforces a specific NSG on every virtual network interface", "parameters": { "nsgId": { "type": "string", "metadata": { "description": "Resource Id of the Network Security Group", "displayName": "Network Security Group Id" } } }, "policyRule": { "if": { "allOf": [ { "field": "type", "equals": "Microsoft.Network/networkInterfaces" }, { "not": { "field": "Microsoft.Network/networkInterfaces/networkSecurityGroup.id", "equals": "[parameters('nsgId')]" } } ] }, "then": { "effect": "deny" } } } }
  • 42. 42 Blueprint Policy Assignment Role Assignment(RBAC) Azure Resource Manager Template Built-in Custom Management Group and
  • 43. 43 43
  • 47. Azure Blueprints & Policy to get DevOps right | Best of Microsoft Ignite 2018 https://www.youtube.com/watch?v=OiOXlgFNgDo
  • 49. NoOps
  • 51. Security DevOps Secure the subscriptio n Enable secure developme -nt Integrate security into CICD Continuous Assurance Alerting & Monitoring Cloud Risk Governance 起点はサブスクリプションのセキュリティ設計 ? Azure AD による認証と認可 ? 多要素認証 ? Identity Protection ? Managed Identity ? ARM & Role-based Access Control ? モニター ? Azure セキュリティセンター ? Log Analytics ? ガバナンス ? Azure Blueprints/Azure Policy ? Just Enough Administration(JEA) ? PowerShell JEA ? Azure AD 特権管理
  • 52. 52 参考URL https://docs.microsoft.com/ja-jp/azure/security/ ? Advanced threat detection ? Azure logging and auditing ? Azure network security ? Azure serverless platform security ? Container security in Azure ? Enabling operational security ? Isolation in the Azure cloud ? Secure hybrid network architecture ? Security technical capabilities
  • 53. Information 「Ask The Speaker」 各ブレイクアウトセッション終了後の休憩時 間に、 登壇したスピーカーに直接ご質問いただける コーナーを B2F 「Ask The Speaker」 Room に用意 しています。セッション内容のより深い理解 のため、 ぜひお役立てください。 (※ハンズオンラーニング、シアターセッション、ビジネス トラック 及び 一部のセッションを除きます) EXPO AREA 1 EXPO AREA 2 Room C
  • 54. セッションアンケートにご協力ください。 公式イベントアプリで、「Microsoft Tech Summit 2018 参加者アンケート(必 須)」と 「各セッションアンケート( 5 つ以上)」、合わせて 6 つ以上のアンケートに ご回答ください。 もれなくオリジナルグッズを贈呈いたします。 Information Twitter のご案内 本セッションに関するご質問やご感想は、 #mstsjp18 と セッション ID の ハッシュタグで、ご投稿をお願いします。 #mstsjp18
  • 55. 55 ? 2018 Microsoft Corporation. All rights reserved. 本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

Editor's Notes

  1. 安全なクラウドサブスクリプションは、その後の開発および展開活動を実行するための基盤を提供します。エンジニアリングチームは、アラート、ARMポリシー、RBAC、セキュリティセンターポリシー、JEA、リソースロックなどの要素を含む、サブスクリプションのセキュリティを展開および設定する機能を備えている必要があります。同様に、すべての設定が安全なベースラインへの適合。 コーディング段階と初期開発段階では、開発者はセキュアなコードを記述し、クラウドアプリケーションの安全な構成をテストする能力を備えている必要があります。ビルド検証テスト(BVT)と同様に、Azureのさまざまなリソースタイプのセキュリティをチェックできるセキュリティ検証テスト(SVT) テストの自動化はdevopsの中心的な教えです。 VSTS CICDパイプラインの一部としてSVTを実行する機能を提供することで、これを強調します。これらのSVTを使用すると、クラウドアプリケーションの展開に使用されるターゲットサブスクリプションと、アプリケーションが構築されているAzureリソースがすべて確実にセットアップされるようにすることができます。 絶え間なく変わるdevオペレーション環境では、セキュリティの考え方から離れることは重要なマイルストーンです。我々は、セキュリティをシステムの連続的に変化する状態として扱わなければならない。これは、自動化されたrunbooks、スケジュールなどの組み合わせを使用して継続的な保証を可能にする機能によって可能になります。 セキュリティステータスの可視性は、個々のアプリケーションチームや中央のエンタープライズチームにとって重要です。私たちは、両方のニーズに応えるソリューションを提供しています。さらに、このソリューションは、デベロッパーチームのすべてのステージにわたって展開され、デベロッパーチームと運用チームの間のギャップをセキュリティの観点から、単一の統合されたビューを通じてブリッジします。
  2. 安全なクラウドサブスクリプションは、その後の開発および展開活動を実行するための基盤を提供します。エンジニアリングチームは、アラート、ARMポリシー、RBAC、セキュリティセンターポリシー、JEA、リソースロックなどの要素を含む、サブスクリプションのセキュリティを展開および設定する機能を備えている必要があります。同様に、すべての設定が安全なベースラインへの適合。 コーディング段階と初期開発段階では、開発者はセキュアなコードを記述し、クラウドアプリケーションの安全な構成をテストする能力を備えている必要があります。ビルド検証テスト(BVT)と同様に、Azureのさまざまなリソースタイプのセキュリティをチェックできるセキュリティ検証テスト(SVT) テストの自動化はdevopsの中心的な教えです。 VSTS CICDパイプラインの一部としてSVTを実行する機能を提供することで、これを強調します。これらのSVTを使用すると、クラウドアプリケーションの展開に使用されるターゲットサブスクリプションと、アプリケーションが構築されているAzureリソースがすべて確実にセットアップされるようにすることができます。 絶え間なく変わるdevオペレーション環境では、セキュリティの考え方から離れることは重要なマイルストーンです。我々は、セキュリティをシステムの連続的に変化する状態として扱わなければならない。これは、自動化されたrunbooks、スケジュールなどの組み合わせを使用して継続的な保証を可能にする機能によって可能になります。 セキュリティステータスの可視性は、個々のアプリケーションチームや中央のエンタープライズチームにとって重要です。私たちは、両方のニーズに応えるソリューションを提供しています。さらに、このソリューションは、デベロッパーチームのすべてのステージにわたって展開され、デベロッパーチームと運用チームの間のギャップをセキュリティの観点から、単一の統合されたビューを通じてブリッジします。