Weitere ähnliche Inhalte
Ähnlich wie Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD (20)
Mehr von junichi anno (17)
Kürzlich hochgeladen (10)
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
- 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 特権管理
- 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
- 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 接続文字列も同様
- 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"
}
}
}
}
- 47. Azure Blueprints & Policy to get DevOps right | Best of Microsoft Ignite 2018
https://www.youtube.com/watch?v=OiOXlgFNgDo
- 55. 55
© 2018 Microsoft Corporation. All rights reserved.
本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。
Hinweis der Redaktion
- 安全なクラウドサブスクリプションは、その後の開発および展開活動を実行するための基盤を提供します。エンジニアリングチームは、アラート、ARMポリシー、RBAC、セキュリティセンターポリシー、JEA、リソースロックなどの要素を含む、サブスクリプションのセキュリティを展開および設定する機能を備えている必要があります。同様に、すべての設定が安全なベースラインへの適合。
コーディング段階と初期開発段階では、開発者はセキュアなコードを記述し、クラウドアプリケーションの安全な構成をテストする能力を備えている必要があります。ビルド検証テスト(BVT)と同様に、Azureのさまざまなリソースタイプのセキュリティをチェックできるセキュリティ検証テスト(SVT)
テストの自動化はdevopsの中心的な教えです。 VSTS CICDパイプラインの一部としてSVTを実行する機能を提供することで、これを強調します。これらのSVTを使用すると、クラウドアプリケーションの展開に使用されるターゲットサブスクリプションと、アプリケーションが構築されているAzureリソースがすべて確実にセットアップされるようにすることができます。
絶え間なく変わるdevオペレーション環境では、セキュリティの考え方から離れることは重要なマイルストーンです。我々は、セキュリティをシステムの連続的に変化する状態として扱わなければならない。これは、自動化されたrunbooks、スケジュールなどの組み合わせを使用して継続的な保証を可能にする機能によって可能になります。
セキュリティステータスの可視性は、個々のアプリケーションチームや中央のエンタープライズチームにとって重要です。私たちは、両方のニーズに応えるソリューションを提供しています。さらに、このソリューションは、デベロッパーチームのすべてのステージにわたって展開され、デベロッパーチームと運用チームの間のギャップをセキュリティの観点から、単一の統合されたビューを通じてブリッジします。
- 安全なクラウドサブスクリプションは、その後の開発および展開活動を実行するための基盤を提供します。エンジニアリングチームは、アラート、ARMポリシー、RBAC、セキュリティセンターポリシー、JEA、リソースロックなどの要素を含む、サブスクリプションのセキュリティを展開および設定する機能を備えている必要があります。同様に、すべての設定が安全なベースラインへの適合。
コーディング段階と初期開発段階では、開発者はセキュアなコードを記述し、クラウドアプリケーションの安全な構成をテストする能力を備えている必要があります。ビルド検証テスト(BVT)と同様に、Azureのさまざまなリソースタイプのセキュリティをチェックできるセキュリティ検証テスト(SVT)
テストの自動化はdevopsの中心的な教えです。 VSTS CICDパイプラインの一部としてSVTを実行する機能を提供することで、これを強調します。これらのSVTを使用すると、クラウドアプリケーションの展開に使用されるターゲットサブスクリプションと、アプリケーションが構築されているAzureリソースがすべて確実にセットアップされるようにすることができます。
絶え間なく変わるdevオペレーション環境では、セキュリティの考え方から離れることは重要なマイルストーンです。我々は、セキュリティをシステムの連続的に変化する状態として扱わなければならない。これは、自動化されたrunbooks、スケジュールなどの組み合わせを使用して継続的な保証を可能にする機能によって可能になります。
セキュリティステータスの可視性は、個々のアプリケーションチームや中央のエンタープライズチームにとって重要です。私たちは、両方のニーズに応えるソリューションを提供しています。さらに、このソリューションは、デベロッパーチームのすべてのステージにわたって展開され、デベロッパーチームと運用チームの間のギャップをセキュリティの観点から、単一の統合されたビューを通じてブリッジします。