Microsoft Graph のアクセス レビュー API を使用してセキュリティ グループへのアクセスを確認する
[アーティクル]
03/26/2023
5 人の共同作成者
フィードバック
この記事の内容
Microsoft Graph のアクセス レビュー API を使用すると、組織は ID (プリンシパル とも呼ばれます) がorganization内のリソースに割り当てられているアクセスを監査して証明できます。 他のリソースへのプリンシパルのアクセス権を管理するための最も効率的で効果的な方法の 1 つは、Azure AD セキュリティ グループを使用することです。 たとえば、何百人ものユーザーをセキュリティ グループに割り当て、セキュリティ グループにフォルダーへのアクセス権を割り当てることができます。 アクセス レビュー API を使用すると、組織は、このようなグループへのアクセス権を持つプリンシパルや、organization内の拡張機能など、その他のリソースを定期的に証明できます。
Azure AD セキュリティ グループを使用して、organization内のリソースに ID (プリンシパル とも呼ばれます) アクセス権を割り当てるとします。 セキュリティ グループのすべてのメンバーが、セキュリティ グループに割り当てられているリソースへのアクセスをメンバーシップと拡張機能で必要としていることを定期的に証明する必要があります。
このチュートリアルでは、アクセス レビュー API を使用して、Azure AD テナント内のセキュリティ グループへのアクセスを確認する方法について説明します。 Graph エクスプローラーまたは Postman を使用して、スクリプトまたはアプリに自動化する前に、アクセス レビュー API 呼び出しを試してテストできます。 このテスト環境では、アプリケーションを繰り返し再コンパイルすることなく、クエリを適切に定義および検証するのに役立つ時間を節約できます。
前提条件
このチュートリアルを完了するには、次のリソースと特権が必要です。
Azure AD Premium P2または EMS E5 ライセンスが有効になっている、動作中の Azure AD テナント。
Graph エクスプローラー 、Postman などの API クライアントにサインインするか、独自のクライアント アプリを作成して Microsoft Graph を呼び出します。 このチュートリアルで Microsoft Graph API を呼び出すには、グローバル管理者または ID ガバナンス管理者ロールを持つアカウントを使用する必要があります。
[省略可能]新しい シークレット 、 匿名 、または InPrivate ブラウザー ウィンドウを 開きます。 このチュートリアルの後半でサインインします。
委任されたアクセス許可を自分に付与します: AccessReview.ReadWrite.All
、 Group.ReadWrite.All
。
注:
このチュートリアルに示す応答オブジェクトは、読みやすくするために短縮される場合があります。
特権アクセス グループのレビューでは、アクティブな所有者のみがレビュー担当者として割り当てられます。 対象となる所有者は含まれません。 特権アクセス グループレビューには、少なくとも 1 人のフォールバック レビュー担当者が必要です。 レビューの開始時にアクティブな所有者がいない場合、フォールバック レビュー担当者がレビューに割り当てられます。
手順 1: テナントにテスト ユーザーを作成する
3 回以下の要求を実行し、 displayName 、 mailNickname 、 userPrincipalName プロパティの値を毎回変更して、3 人の新しいテスト ユーザーを作成します。 3 人の新しいテスト ユーザーの ID を記録します。
要求
POST https://graph.microsoft.com/v1.0/users
Content-Type: application/json
{
"accountEnabled": true,
"displayName": "Adele Vance",
"mailNickname": "AdeleV",
"userPrincipalName": "AdeleV@Contoso.com",
"passwordProfile": {
"forceChangePasswordNextSignIn": true,
"password": "xWwvJ]6NMw+bWH-d"
}
}
var graphClient = new GraphServiceClient(requestAdapter);
var requestBody = new User
{
AccountEnabled = true,
DisplayName = "Adele Vance",
MailNickname = "AdeleV",
UserPrincipalName = "AdeleV@Contoso.com",
PasswordProfile = new PasswordProfile
{
ForceChangePasswordNextSignIn = true,
Password = "xWwvJ]6NMw+bWH-d",
},
};
var result = await graphClient.Users.PostAsync(requestBody);
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
const options = {
authProvider,
};
const client = Client.init(options);
const user = {
accountEnabled: true,
displayName: 'Adele Vance',
mailNickname: 'AdeleV',
userPrincipalName: 'AdeleV@Contoso.com',
passwordProfile: {
forceChangePasswordNextSignIn: true,
password: 'xWwvJ]6NMw+bWH-d'
}
};
await client.api('/users')
.post(user);
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
User user = new User();
user.accountEnabled = true;
user.displayName = "Adele Vance";
user.mailNickname = "AdeleV";
user.userPrincipalName = "AdeleV@Contoso.com";
PasswordProfile passwordProfile = new PasswordProfile();
passwordProfile.forceChangePasswordNextSignIn = true;
passwordProfile.password = "xWwvJ]6NMw+bWH-d";
user.passwordProfile = passwordProfile;
graphClient.users()
.buildRequest()
.post(user);
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClientWithCredentials(cred, scopes)
requestBody := graphmodels.NewUser()
accountEnabled := true
requestBody.SetAccountEnabled(&accountEnabled)
displayName := "Adele Vance"
requestBody.SetDisplayName(&displayName)
mailNickname := "AdeleV"
requestBody.SetMailNickname(&mailNickname)
userPrincipalName := "AdeleV@Contoso.com"
requestBody.SetUserPrincipalName(&userPrincipalName)
passwordProfile := graphmodels.NewPasswordProfile()
forceChangePasswordNextSignIn := true
passwordProfile.SetForceChangePasswordNextSignIn(&forceChangePasswordNextSignIn)
password := "xWwvJ]6NMw+bWH-d"
passwordProfile.SetPassword(&password)
requestBody.SetPasswordProfile(passwordProfile)
result, err := graphClient.Users().Post(context.Background(), requestBody, nil)
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
Import-Module Microsoft.Graph.Users
$params = @{
AccountEnabled = $true
DisplayName = "Adele Vance"
MailNickname = "AdeleV"
UserPrincipalName = "AdeleV@Contoso.com"
PasswordProfile = @{
ForceChangePasswordNextSignIn = $true
Password = "xWwvJ]6NMw+bWH-d"
}
}
New-MgUser -BodyParameter $params
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
<?php
// THIS SNIPPET IS A PREVIEW FOR THE KIOTA BASED SDK. NON-PRODUCTION USE ONLY
$graphServiceClient = new GraphServiceClient($requestAdapter);
$requestBody = new User();
$requestBody->setAccountEnabled(true);
$requestBody->setDisplayName('Adele Vance');
$requestBody->setMailNickname('AdeleV');
$requestBody->setUserPrincipalName('AdeleV@Contoso.com');
$passwordProfile = new PasswordProfile();
$passwordProfile->setForceChangePasswordNextSignIn(true);
$passwordProfile->setPassword('xWwvJ]6NMw+bWH-d');
$requestBody->setPasswordProfile($passwordProfile);
$requestResult = $graphServiceClient->users()->post($requestBody);
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
応答
注: ここに示す応答オブジェクトは、読みやすさのために短縮されている場合があります。
HTTP/1.1 201 Created
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
"id": "3b8ceebc-49e6-4e0c-9e14-c906374a7ef6",
"displayName": "Adele Vance",
"userPrincipalName": "AdeleV@Contoso.com"
}
手順 2: セキュリティ グループの作成、所有者の割り当て、メンバーの追加
このチュートリアルのアクセス レビューの対象となるセキュリティの 構築 という名前のセキュリティ グループを作成します。 このグループに 1 つのグループ所有者と 2 人のメンバーを割り当てます。
要求
前の手順から、3 人のテスト ユーザーを作成しました。 ユーザーの 1 人がグループ所有者になり、もう 2 人がグループ メンバーになります。
この呼び出しでは、次の値を置き換えます。
d3bcdff4-4f80-4418-a65e-7bf3778c5dca
グループ所有者の ID を指定します。
3b8ceebc-49e6-4e0c-9e14-c906374a7ef6
bf59c5ba-5304-4c9b-9192-e5a4cb8444e7
2 つのグループ メンバーの ID を使用します。
POST https://graph.microsoft.com/v1.0/groups
Content-Type: application/json
{
"description": "Building security",
"displayName": "Building security",
"groupTypes": [],
"mailEnabled": false,
"mailNickname": "buildingsecurity",
"securityEnabled": true,
"owners@odata.bind": [
"https://graph.microsoft.com/beta/users/d3bcdff4-4f80-4418-a65e-7bf3778c5dca"
],
"members@odata.bind": [
"https://graph.microsoft.com/beta/users/3b8ceebc-49e6-4e0c-9e14-c906374a7ef6",
"https://graph.microsoft.com/beta/users/bf59c5ba-5304-4c9b-9192-e5a4cb8444e7"
]
}
const options = {
authProvider,
};
const client = Client.init(options);
const group = {
description: 'Building security',
displayName: 'Building security',
groupTypes: [],
mailEnabled: false,
mailNickname: 'buildingsecurity',
securityEnabled: true,
'owners@odata.bind': [
'https://graph.microsoft.com/beta/users/d3bcdff4-4f80-4418-a65e-7bf3778c5dca'
],
'members@odata.bind': [
'https://graph.microsoft.com/beta/users/3b8ceebc-49e6-4e0c-9e14-c906374a7ef6',
'https://graph.microsoft.com/beta/users/bf59c5ba-5304-4c9b-9192-e5a4cb8444e7'
]
};
await client.api('/groups')
.post(group);
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
Group group = new Group();
group.description = "Building security";
group.displayName = "Building security";
LinkedList<String> groupTypesList = new LinkedList<String>();
group.groupTypes = groupTypesList;
group.mailEnabled = false;
group.mailNickname = "buildingsecurity";
group.securityEnabled = true;
group.additionalDataManager().put("owners@odata.bind", new JsonPrimitive("[ \"https://graph.microsoft.com/beta/users/d3bcdff4-4f80-4418-a65e-7bf3778c5dca\"]"));
group.additionalDataManager().put("members@odata.bind", new JsonPrimitive("[ \"https://graph.microsoft.com/beta/users/3b8ceebc-49e6-4e0c-9e14-c906374a7ef6\", \"https://graph.microsoft.com/beta/users/bf59c5ba-5304-4c9b-9192-e5a4cb8444e7\"]"));
graphClient.groups()
.buildRequest()
.post(group);
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClientWithCredentials(cred, scopes)
requestBody := graphmodels.NewGroup()
description := "Building security"
requestBody.SetDescription(&description)
displayName := "Building security"
requestBody.SetDisplayName(&displayName)
groupTypes := []string {
}
requestBody.SetGroupTypes(groupTypes)
mailEnabled := false
requestBody.SetMailEnabled(&mailEnabled)
mailNickname := "buildingsecurity"
requestBody.SetMailNickname(&mailNickname)
securityEnabled := true
requestBody.SetSecurityEnabled(&securityEnabled)
additionalData := map[string]interface{}{
odataBind := []string {
"https://graph.microsoft.com/beta/users/d3bcdff4-4f80-4418-a65e-7bf3778c5dca",
}
odataBind := []string {
"https://graph.microsoft.com/beta/users/3b8ceebc-49e6-4e0c-9e14-c906374a7ef6",
"https://graph.microsoft.com/beta/users/bf59c5ba-5304-4c9b-9192-e5a4cb8444e7",
}
}
requestBody.SetAdditionalData(additionalData)
result, err := graphClient.Groups().Post(context.Background(), requestBody, nil)
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
Import-Module Microsoft.Graph.Groups
$params = @{
Description = "Building security"
DisplayName = "Building security"
GroupTypes = @(
)
MailEnabled = $false
MailNickname = "buildingsecurity"
SecurityEnabled = $true
"Owners@odata.bind" = @(
"https://graph.microsoft.com/beta/users/d3bcdff4-4f80-4418-a65e-7bf3778c5dca"
)
"Members@odata.bind" = @(
"https://graph.microsoft.com/beta/users/3b8ceebc-49e6-4e0c-9e14-c906374a7ef6"
"https://graph.microsoft.com/beta/users/bf59c5ba-5304-4c9b-9192-e5a4cb8444e7"
)
}
New-MgGroup -BodyParameter $params
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
<?php
// THIS SNIPPET IS A PREVIEW FOR THE KIOTA BASED SDK. NON-PRODUCTION USE ONLY
$graphServiceClient = new GraphServiceClient($requestAdapter);
$requestBody = new Group();
$requestBody->setDescription('Building security');
$requestBody->setDisplayName('Building security');
$requestBody->setGroupTypes([]);
$requestBody->setMailEnabled(false);
$requestBody->setMailNickname('buildingsecurity');
$requestBody->setSecurityEnabled(true);
$additionalData = [
'owners@odata.bind' => ['https://graph.microsoft.com/beta/users/d3bcdff4-4f80-4418-a65e-7bf3778c5dca', ],
'members@odata.bind' => ['https://graph.microsoft.com/beta/users/3b8ceebc-49e6-4e0c-9e14-c906374a7ef6', 'https://graph.microsoft.com/beta/users/bf59c5ba-5304-4c9b-9192-e5a4cb8444e7', ],
];
$requestBody->setAdditionalData($additionalData);
$requestResult = $graphServiceClient->groups()->post($requestBody);
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
応答
注: ここに示す応答オブジェクトは、読みやすさのために短縮されている場合があります。
HTTP/1.1 201 Created
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#groups/$entity",
"id": "eb75ccd2-59ef-48b7-8f76-cc3f33f899f4",
"description": "Building security",
"displayName": "Building security",
"mailNickname": "buildingsecurity",
"securityEnabled": true
}
応答から、このチュートリアルの後半で使用する新しいグループの ID を記録します。
手順 3: セキュリティ グループのアクセス レビューを作成する
要求
この呼び出しでは、次の値を置き換えます。
eb75ccd2-59ef-48b7-8f76-cc3f33f899f4
には、 Building セキュリティ グループの ID を指定します。 スコープは、 レビューが Building セキュリティ グループのすべてのメンバーに適用されることを指定します。 スコープを構成するためのその他のオプションについては、「 関連項目」セクションを参照 してください。
startDate の値は、今日の日付と endDate の値で、開始日から 5 日の日付です。
アクセス レビューには、次の設定があります。
レビュー担当者 プロパティの値を指定しない場合に推測される自己レビューです。 そのため、各グループ メンバーは、グループへのアクセスを維持する必要性を自己証明します。
レビューのスコープは、 Building セキュリティ グループのメンバー (直接および間接) です。
レビュー担当者は、グループへのアクセスを維持する必要がある理由の正当な理由を提供する必要があります。
既定の決定は、 Deny
レビュー担当者が、インスタンスの有効期限が切れる前にアクセス レビュー要求に応答しない場合です。 この決定により Deny
、グループメンバーがグループから削除されます。
5 日後に終了する 1 回限りのアクセス レビューです。 したがって、アクセスが許可されると、ユーザーはアクセス レビュー期間内にもう一度自己証明する必要はありません。
レビューのスコープで定義されているプリンシパルは、アクセスを維持する必要性を自己証明するように求める電子メール通知とリマインダーを受け取ります。
POST https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions
Content-type: application/json
{
"displayName": "One-time self-review for members of Building security",
"descriptionForAdmins": "One-time self-review for members of Building security",
"descriptionForReviewers": "One-time self-review for members of Building security",
"scope": {
"query": "/groups/eb75ccd2-59ef-48b7-8f76-cc3f33f899f4/transitiveMembers",
"queryType": "MicrosoftGraph"
},
"instanceEnumerationScope": {
"query": "/groups/eb75ccd2-59ef-48b7-8f76-cc3f33f899f4",
"queryType": "MicrosoftGraph"
},
"settings": {
"mailNotificationsEnabled": true,
"reminderNotificationsEnabled": true,
"justificationRequiredOnApproval": true,
"defaultDecisionEnabled": true,
"defaultDecision": "Deny",
"instanceDurationInDays": 5,
"autoApplyDecisionsEnabled": true,
"recommendationsEnabled": true,
"recurrence": {
"pattern": null,
"range": {
"type": "numbered",
"numberOfOccurrences": 0,
"recurrenceTimeZone": null,
"startDate": "2022-02-11",
"endDate": "2022-02-16"
}
}
}
}
var graphClient = new GraphServiceClient(requestAdapter);
var requestBody = new AccessReviewScheduleDefinition
{
DisplayName = "One-time self-review for members of Building security",
DescriptionForAdmins = "One-time self-review for members of Building security",
DescriptionForReviewers = "One-time self-review for members of Building security",
Scope = new AccessReviewScope
{
AdditionalData = new Dictionary<string, object>
{
{
"query" , "/groups/eb75ccd2-59ef-48b7-8f76-cc3f33f899f4/transitiveMembers"
},
{
"queryType" , "MicrosoftGraph"
},
},
},
InstanceEnumerationScope = new AccessReviewScope
{
AdditionalData = new Dictionary<string, object>
{
{
"query" , "/groups/eb75ccd2-59ef-48b7-8f76-cc3f33f899f4"
},
{
"queryType" , "MicrosoftGraph"
},
},
},
Settings = new AccessReviewScheduleSettings
{
MailNotificationsEnabled = true,
ReminderNotificationsEnabled = true,
JustificationRequiredOnApproval = true,
DefaultDecisionEnabled = true,
DefaultDecision = "Deny",
InstanceDurationInDays = 5,
AutoApplyDecisionsEnabled = true,
RecommendationsEnabled = true,
Recurrence = new PatternedRecurrence
{
Pattern = null,
Range = new RecurrenceRange
{
Type = RecurrenceRangeType.Numbered,
NumberOfOccurrences = 0,
RecurrenceTimeZone = null,
StartDate = new Date(DateTime.Parse("2022-02-11")),
EndDate = new Date(DateTime.Parse("2022-02-16")),
},
},
},
};
var result = await graphClient.IdentityGovernance.AccessReviews.Definitions.PostAsync(requestBody);
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
const options = {
authProvider,
};
const client = Client.init(options);
const accessReviewScheduleDefinition = {
displayName: 'One-time self-review for members of Building security',
descriptionForAdmins: 'One-time self-review for members of Building security',
descriptionForReviewers: 'One-time self-review for members of Building security',
scope: {
query: '/groups/eb75ccd2-59ef-48b7-8f76-cc3f33f899f4/transitiveMembers',
queryType: 'MicrosoftGraph'
},
instanceEnumerationScope: {
query: '/groups/eb75ccd2-59ef-48b7-8f76-cc3f33f899f4',
queryType: 'MicrosoftGraph'
},
settings: {
mailNotificationsEnabled: true,
reminderNotificationsEnabled: true,
justificationRequiredOnApproval: true,
defaultDecisionEnabled: true,
defaultDecision: 'Deny',
instanceDurationInDays: 5,
autoApplyDecisionsEnabled: true,
recommendationsEnabled: true,
recurrence: {
pattern: null,
range: {
type: 'numbered',
numberOfOccurrences: 0,
recurrenceTimeZone: null,
startDate: '2022-02-11',
endDate: '2022-02-16'
}
}
}
};
await client.api('/identityGovernance/accessReviews/definitions')
.post(accessReviewScheduleDefinition);
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
AccessReviewScheduleDefinition accessReviewScheduleDefinition = new AccessReviewScheduleDefinition();
accessReviewScheduleDefinition.displayName = "One-time self-review for members of Building security";
accessReviewScheduleDefinition.descriptionForAdmins = "One-time self-review for members of Building security";
accessReviewScheduleDefinition.descriptionForReviewers = "One-time self-review for members of Building security";
AccessReviewScope scope = new AccessReviewScope();
scope.query = "/groups/eb75ccd2-59ef-48b7-8f76-cc3f33f899f4/transitiveMembers";
scope.queryType = "MicrosoftGraph";
accessReviewScheduleDefinition.scope = scope;
AccessReviewScope instanceEnumerationScope = new AccessReviewScope();
instanceEnumerationScope.query = "/groups/eb75ccd2-59ef-48b7-8f76-cc3f33f899f4";
instanceEnumerationScope.queryType = "MicrosoftGraph";
accessReviewScheduleDefinition.instanceEnumerationScope = instanceEnumerationScope;
AccessReviewScheduleSettings settings = new AccessReviewScheduleSettings();
settings.mailNotificationsEnabled = true;
settings.reminderNotificationsEnabled = true;
settings.justificationRequiredOnApproval = true;
settings.defaultDecisionEnabled = true;
settings.defaultDecision = "Deny";
settings.instanceDurationInDays = 5;
settings.autoApplyDecisionsEnabled = true;
settings.recommendationsEnabled = true;
PatternedRecurrence recurrence = new PatternedRecurrence();
recurrence.pattern = null;
RecurrenceRange range = new RecurrenceRange();
range.type = RecurrenceRangeType.NUMBERED;
range.numberOfOccurrences = 0;
range.recurrenceTimeZone = null;
range.startDate = new DateOnly(1900,1,1);
range.endDate = new DateOnly(1900,1,1);
recurrence.range = range;
settings.recurrence = recurrence;
accessReviewScheduleDefinition.settings = settings;
graphClient.identityGovernance().accessReviews().definitions()
.buildRequest()
.post(accessReviewScheduleDefinition);
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClientWithCredentials(cred, scopes)
requestBody := graphmodels.NewAccessReviewScheduleDefinition()
displayName := "One-time self-review for members of Building security"
requestBody.SetDisplayName(&displayName)
descriptionForAdmins := "One-time self-review for members of Building security"
requestBody.SetDescriptionForAdmins(&descriptionForAdmins)
descriptionForReviewers := "One-time self-review for members of Building security"
requestBody.SetDescriptionForReviewers(&descriptionForReviewers)
scope := graphmodels.NewAccessReviewScope()
additionalData := map[string]interface{}{
"query" : "/groups/eb75ccd2-59ef-48b7-8f76-cc3f33f899f4/transitiveMembers",
"queryType" : "MicrosoftGraph",
}
scope.SetAdditionalData(additionalData)
requestBody.SetScope(scope)
instanceEnumerationScope := graphmodels.NewAccessReviewScope()
additionalData := map[string]interface{}{
"query" : "/groups/eb75ccd2-59ef-48b7-8f76-cc3f33f899f4",
"queryType" : "MicrosoftGraph",
}
instanceEnumerationScope.SetAdditionalData(additionalData)
requestBody.SetInstanceEnumerationScope(instanceEnumerationScope)
settings := graphmodels.NewAccessReviewScheduleSettings()
mailNotificationsEnabled := true
settings.SetMailNotificationsEnabled(&mailNotificationsEnabled)
reminderNotificationsEnabled := true
settings.SetReminderNotificationsEnabled(&reminderNotificationsEnabled)
justificationRequiredOnApproval := true
settings.SetJustificationRequiredOnApproval(&justificationRequiredOnApproval)
defaultDecisionEnabled := true
settings.SetDefaultDecisionEnabled(&defaultDecisionEnabled)
defaultDecision := "Deny"
settings.SetDefaultDecision(&defaultDecision)
instanceDurationInDays := int32(5)
settings.SetInstanceDurationInDays(&instanceDurationInDays)
autoApplyDecisionsEnabled := true
settings.SetAutoApplyDecisionsEnabled(&autoApplyDecisionsEnabled)
recommendationsEnabled := true
settings.SetRecommendationsEnabled(&recommendationsEnabled)
recurrence := graphmodels.NewPatternedRecurrence()
pattern := null
recurrence.SetPattern(&pattern)
range := graphmodels.NewRecurrenceRange()
type := graphmodels.NUMBERED_RECURRENCERANGETYPE
range.SetType(&type)
numberOfOccurrences := int32(0)
range.SetNumberOfOccurrences(&numberOfOccurrences)
recurrenceTimeZone := null
range.SetRecurrenceTimeZone(&recurrenceTimeZone)
startDate := 2022-02-11
range.SetStartDate(&startDate)
endDate := 2022-02-16
range.SetEndDate(&endDate)
recurrence.SetRange(range)
settings.SetRecurrence(recurrence)
requestBody.SetSettings(settings)
result, err := graphClient.IdentityGovernance().AccessReviews().Definitions().Post(context.Background(), requestBody, nil)
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
Import-Module Microsoft.Graph.Identity.Governance
$params = @{
DisplayName = "One-time self-review for members of Building security"
DescriptionForAdmins = "One-time self-review for members of Building security"
DescriptionForReviewers = "One-time self-review for members of Building security"
Scope = @{
Query = "/groups/eb75ccd2-59ef-48b7-8f76-cc3f33f899f4/transitiveMembers"
QueryType = "MicrosoftGraph"
}
InstanceEnumerationScope = @{
Query = "/groups/eb75ccd2-59ef-48b7-8f76-cc3f33f899f4"
QueryType = "MicrosoftGraph"
}
Settings = @{
MailNotificationsEnabled = $true
ReminderNotificationsEnabled = $true
JustificationRequiredOnApproval = $true
DefaultDecisionEnabled = $true
DefaultDecision = "Deny"
InstanceDurationInDays = 5
AutoApplyDecisionsEnabled = $true
RecommendationsEnabled = $true
Recurrence = @{
Pattern = $null
Range = @{
Type = "numbered"
NumberOfOccurrences = 0
RecurrenceTimeZone = $null
StartDate = "2022-02-11"
EndDate = "2022-02-16"
}
}
}
}
New-MgIdentityGovernanceAccessReviewDefinition -BodyParameter $params
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
応答
HTTP/1.1 201 Created
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identityGovernance/accessReviews/definitions/$entity",
"id": "2d56c364-0695-4ec6-8b92-4c1db7c80f1b",
"displayName": "One-time self-review for members of Building security",
"createdDateTime": null,
"lastModifiedDateTime": null,
"status": "NotStarted",
"descriptionForAdmins": "One-time self-review for members of Building security",
"descriptionForReviewers": "One-time self-review for members of Building security",
"createdBy": {
"id": "bf59c5ba-5304-4c9b-9192-e5a4cb8444e7",
"displayName": "MOD Administrator",
"type": null,
"userPrincipalName": "admin@Contoso.com"
},
"scope": {},
"instanceEnumerationScope": {},
"reviewers": [],
"fallbackReviewers": [],
"settings": {
"mailNotificationsEnabled": true,
"reminderNotificationsEnabled": true,
"justificationRequiredOnApproval": true,
"defaultDecisionEnabled": true,
"defaultDecision": "Deny",
"instanceDurationInDays": 5,
"autoApplyDecisionsEnabled": true,
"recommendationsEnabled": true,
"recurrence": {
"pattern": null,
"range": {
"type": "numbered",
"numberOfOccurrences": 0,
"recurrenceTimeZone": null,
"startDate": "2022-02-11",
"endDate": "2022-02-16"
}
},
"applyActions": []
},
"additionalNotificationRecipients": []
}
上記のアクセス レビューの状態は NotStarted としてマークされます。 アクセス レビュー (GET https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions/2d56c364-0695-4ec6-8b92-4c1db7c80f1b
) を取得して状態を監視し、 InProgress としてマークされている場合は、アクセス レビュー用にインスタンスが作成され、決定を投稿できます。 アクセス レビューを取得して、アクセス レビューの完全な設定を確認することもできます。
手順 4: アクセス レビューのインスタンスを一覧表示する
アクセス レビューの 状態 が として InProgress
マークされたら、次のクエリを実行して、アクセス レビュー定義のすべてのインスタンスを一覧表示します。 手順 3 で 1 回限りのアクセス レビューを作成したため、要求はスケジュール定義の ID のような ID を持つインスタンスを 1 つだけ返します。
要求
この呼び出しでは、 を、手順 3 で返されたアクセス レビュー定義の ID に置き換えます 2d56c364-0695-4ec6-8b92-4c1db7c80f1b
。
GET https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions/2d56c364-0695-4ec6-8b92-4c1db7c80f1b/instances
var graphClient = new GraphServiceClient(requestAdapter);
var result = await graphClient.IdentityGovernance.AccessReviews.Definitions["{accessReviewScheduleDefinition-id}"].Instances.GetAsync();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
const options = {
authProvider,
};
const client = Client.init(options);
let instances = await client.api('/identityGovernance/accessReviews/definitions/2d56c364-0695-4ec6-8b92-4c1db7c80f1b/instances')
.get();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
AccessReviewInstanceCollectionPage instances = graphClient.identityGovernance().accessReviews().definitions("2d56c364-0695-4ec6-8b92-4c1db7c80f1b").instances()
.buildRequest()
.get();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClientWithCredentials(cred, scopes)
result, err := graphClient.IdentityGovernance().AccessReviews().DefinitionsById("accessReviewScheduleDefinition-id").Instances().Get(context.Background(), nil)
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
Import-Module Microsoft.Graph.Identity.Governance
Get-MgIdentityGovernanceAccessReviewDefinitionInstance -AccessReviewScheduleDefinitionId $accessReviewScheduleDefinitionId
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
<?php
// THIS SNIPPET IS A PREVIEW FOR THE KIOTA BASED SDK. NON-PRODUCTION USE ONLY
$graphServiceClient = new GraphServiceClient($requestAdapter);
$requestResult = $graphServiceClient->identityGovernance()->accessReviews()->definitionsById('accessReviewScheduleDefinition-id')->instances()->get();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
応答
この応答では、インスタンスの状態 は startDateTime がInProgress
過去であり、endDateTime が将来であるためです。 startDateTime が将来の場合、状態は になりますNotStarted
。 一方、 endDateTime が過去の場合、状態は になります Completed
。
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identityGovernance/accessReviews/definitions('2d56c364-0695-4ec6-8b92-4c1db7c80f1b')/instances",
"value": [
{
"id": "2d56c364-0695-4ec6-8b92-4c1db7c80f1b",
"startDateTime": "2022-02-11T17:35:25.24Z",
"endDateTime": "2022-02-16T08:00:00Z",
"status": "InProgress",
"scope": {
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"query": "/v1.0/groups/eb75ccd2-59ef-48b7-8f76-cc3f33f899f4/transitiveMembers/microsoft.graph.user",
"queryType": "MicrosoftGraph",
"queryRoot": null
},
"reviewers": [],
"fallbackReviewers": []
}
]
}
Building セキュリティ グループのすべてのメンバーに連絡して、アクセス レビューのこのインスタンスに対するレビューの決定を投稿したことを確認できます。
要求
この呼び出しでは、 をアクセス レビュー スケジュール定義の ID に置き換えます 2d56c364-0695-4ec6-8b92-4c1db7c80f1b
。
GET https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions/2d56c364-0695-4ec6-8b92-4c1db7c80f1b/instances/2d56c364-0695-4ec6-8b92-4c1db7c80f1b/contactedReviewers
var graphClient = new GraphServiceClient(requestAdapter);
var result = await graphClient.IdentityGovernance.AccessReviews.Definitions["{accessReviewScheduleDefinition-id}"].Instances["{accessReviewInstance-id}"].ContactedReviewers.GetAsync();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
const options = {
authProvider,
};
const client = Client.init(options);
let contactedReviewers = await client.api('/identityGovernance/accessReviews/definitions/2d56c364-0695-4ec6-8b92-4c1db7c80f1b/instances/2d56c364-0695-4ec6-8b92-4c1db7c80f1b/contactedReviewers')
.get();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
AccessReviewReviewerCollectionPage contactedReviewers = graphClient.identityGovernance().accessReviews().definitions("2d56c364-0695-4ec6-8b92-4c1db7c80f1b").instances("2d56c364-0695-4ec6-8b92-4c1db7c80f1b").contactedReviewers()
.buildRequest()
.get();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClientWithCredentials(cred, scopes)
result, err := graphClient.IdentityGovernance().AccessReviews().DefinitionsById("accessReviewScheduleDefinition-id").InstancesById("accessReviewInstance-id").ContactedReviewers().Get(context.Background(), nil)
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
Import-Module Microsoft.Graph.Identity.Governance
Get-MgIdentityGovernanceAccessReviewDefinitionInstanceContactedReviewer -AccessReviewScheduleDefinitionId $accessReviewScheduleDefinitionId -AccessReviewInstanceId $accessReviewInstanceId
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
<?php
// THIS SNIPPET IS A PREVIEW FOR THE KIOTA BASED SDK. NON-PRODUCTION USE ONLY
$graphServiceClient = new GraphServiceClient($requestAdapter);
$requestResult = $graphServiceClient->identityGovernance()->accessReviews()->definitionsById('accessReviewScheduleDefinition-id')->instancesById('accessReviewInstance-id')->contactedReviewers()->get();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
応答
次の応答は、 Building セキュリティ グループの 2 人のメンバーに保留中のレビューが通知されたことを示しています。
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identityGovernance/accessReviews/definitions('2d56c364-0695-4ec6-8b92-4c1db7c80f1b')/instances('2d56c364-0695-4ec6-8b92-4c1db7c80f1b')/contactedReviewers",
"@odata.count": 2,
"value": [
{
"id": "3b8ceebc-49e6-4e0c-9e14-c906374a7ef6",
"displayName": "Adele Vance",
"userPrincipalName": "AdeleV@Contoso.com",
"createdDateTime": "2022-02-11T17:35:34.4092545Z"
},
{
"id": "bf59c5ba-5304-4c9b-9192-e5a4cb8444e7",
"displayName": "Alex Wilber",
"userPrincipalName": "AlexW@Contoso.com",
"createdDateTime": "2022-02-11T17:35:34.4092545Z"
}
]
}
手順 6: 意思決定を行う
アクセス レビューのインスタンスに対して行われた決定に関心があります。
要求
この呼び出しでは、 をアクセス レビュー スケジュール定義とインスタンスの ID に置き換えます 2d56c364-0695-4ec6-8b92-4c1db7c80f1b
。
GET https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions/2d56c364-0695-4ec6-8b92-4c1db7c80f1b/instances/2d56c364-0695-4ec6-8b92-4c1db7c80f1b/decisions
var graphClient = new GraphServiceClient(requestAdapter);
var result = await graphClient.IdentityGovernance.AccessReviews.Definitions["{accessReviewScheduleDefinition-id}"].Instances["{accessReviewInstance-id}"].Decisions.GetAsync();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
const options = {
authProvider,
};
const client = Client.init(options);
let decisions = await client.api('/identityGovernance/accessReviews/definitions/2d56c364-0695-4ec6-8b92-4c1db7c80f1b/instances/2d56c364-0695-4ec6-8b92-4c1db7c80f1b/decisions')
.get();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
AccessReviewInstanceDecisionItemCollectionPage decisions = graphClient.identityGovernance().accessReviews().definitions("2d56c364-0695-4ec6-8b92-4c1db7c80f1b").instances("2d56c364-0695-4ec6-8b92-4c1db7c80f1b").decisions()
.buildRequest()
.get();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClientWithCredentials(cred, scopes)
result, err := graphClient.IdentityGovernance().AccessReviews().DefinitionsById("accessReviewScheduleDefinition-id").InstancesById("accessReviewInstance-id").Decisions().Get(context.Background(), nil)
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
Import-Module Microsoft.Graph.Identity.Governance
Get-MgIdentityGovernanceAccessReviewDefinitionInstanceDecision -AccessReviewScheduleDefinitionId $accessReviewScheduleDefinitionId -AccessReviewInstanceId $accessReviewInstanceId
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
<?php
// THIS SNIPPET IS A PREVIEW FOR THE KIOTA BASED SDK. NON-PRODUCTION USE ONLY
$graphServiceClient = new GraphServiceClient($requestAdapter);
$requestResult = $graphServiceClient->identityGovernance()->accessReviews()->definitionsById('accessReviewScheduleDefinition-id')->instancesById('accessReviewInstance-id')->decisions()->get();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
応答
次の応答は、レビューのインスタンスに対して行われた決定を示しています。 セキュリティの構築 には 2 つのメンバーがあるため、2 つの意思決定項目が必要です。
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identityGovernance/accessReviews/definitions('2d56c364-0695-4ec6-8b92-4c1db7c80f1b')/instances('2d56c364-0695-4ec6-8b92-4c1db7c80f1b')/decisions",
"@odata.count": 2,
"value": [
{
"id": "4db68765-472d-4aa2-847a-433ea94bcfaf",
"accessReviewId": "2d56c364-0695-4ec6-8b92-4c1db7c80f1b",
"reviewedDateTime": null,
"decision": "NotReviewed",
"justification": "",
"appliedDateTime": null,
"applyResult": "New",
"recommendation": "Approve",
"principalLink": "https://graph.microsoft.com/v1.0/users/bf59c5ba-5304-4c9b-9192-e5a4cb8444e7",
"resourceLink": "https://graph.microsoft.com/v1.0/groups/eb75ccd2-59ef-48b7-8f76-cc3f33f899f4",
"reviewedBy": {
"id": "00000000-0000-0000-0000-000000000000",
"displayName": "",
"type": null,
"userPrincipalName": ""
},
"appliedBy": {
"id": "00000000-0000-0000-0000-000000000000",
"displayName": "",
"type": null,
"userPrincipalName": ""
},
"resource": {
"id": "eb75ccd2-59ef-48b7-8f76-cc3f33f899f4",
"displayName": "Building security",
"type": "group"
},
"principal": {
"@odata.type": "#microsoft.graph.userIdentity",
"id": "bf59c5ba-5304-4c9b-9192-e5a4cb8444e7",
"displayName": "Alex Wilber",
"type": "user",
"userPrincipalName": "AlexW@Contoso.com",
"lastUserSignInDateTime": "2/11/2022 5:31:37 PM +00:00"
}
},
{
"id": "c7de8fba-4d6a-4fab-a659-62ff0c02643d",
"accessReviewId": "2d56c364-0695-4ec6-8b92-4c1db7c80f1b",
"reviewedDateTime": null,
"decision": "NotReviewed",
"justification": "",
"appliedDateTime": null,
"applyResult": "New",
"recommendation": "Approve",
"principalLink": "https://graph.microsoft.com/v1.0/users/3b8ceebc-49e6-4e0c-9e14-c906374a7ef6",
"resourceLink": "https://graph.microsoft.com/v1.0/groups/eb75ccd2-59ef-48b7-8f76-cc3f33f899f4",
"reviewedBy": {
"id": "00000000-0000-0000-0000-000000000000",
"displayName": "",
"type": null,
"userPrincipalName": ""
},
"appliedBy": {
"id": "00000000-0000-0000-0000-000000000000",
"displayName": "",
"type": null,
"userPrincipalName": ""
},
"resource": {
"id": "eb75ccd2-59ef-48b7-8f76-cc3f33f899f4",
"displayName": "Building security",
"type": "group"
},
"principal": {
"@odata.type": "#microsoft.graph.userIdentity",
"id": "3b8ceebc-49e6-4e0c-9e14-c906374a7ef6",
"displayName": "Adele Vance",
"type": "user",
"userPrincipalName": "AdeleV@Contoso.com",
"lastUserSignInDateTime": "2/11/2022 4:58:13 PM +00:00"
}
}
]
}
呼び出しから、グループ メンバーが自己構成証明を完了していないため、 decision プロパティの値 NotReviewed
は です。 手順 7 に従って、各メンバーがアクセス レビューの必要性を自己証明する方法を確認します。
手順 7: 保留中のアクセスの決定を自己確認する
手順 3 では、アクセス レビューを自己レビューとして構成しました。 この構成では、 Building セキュリティ グループの両方のメンバーが、グループへのアクセスを維持する必要性を自己証明する必要があります。
注:
Building セキュリティ グループの 2 つのメンバーの 1 つとして、この手順を完了します。
この手順では、保留中のアクセス レビューを一覧表示し、自己構成証明プロセスを完了します。 この手順は、API を使用するか 、マイ アクセス ポータル を使用して、2 つの方法のいずれかで実行できます。 他の校閲者はこのプロセスを完了せず、代わりに、既定の決定をアクセス レビューに適用します。
新しい シークレット 、 匿名 、または InPrivate 閲覧 ブラウザー セッションを開始し、 Building セキュリティ グループの 2 つのメンバーの 1 つとしてサインインします。 これにより、現在の管理者セッションが中断されることはありません。 Adele Vance としてサインインします。 または、Graph エクスプローラーからログアウトし、2 つのグループ メンバーの 1 つとしてログインし直すことによって、現在の管理者セッションを中断することもできます。
方法 1: アクセス レビュー API を使用して、保留中のアクセスを自己レビューする
アクセス レビューの意思決定項目を一覧表示する
この呼び出しでは、 をアクセス レビュー スケジュール定義の ID に置き換えます 2d56c364-0695-4ec6-8b92-4c1db7c80f1b
。
要求
GET https://graph.microsoft.com/v1.0/identitygovernance/accessReviews/definitions/2d56c364-0695-4ec6-8b92-4c1db7c80f1b/instances/2d56c364-0695-4ec6-8b92-4c1db7c80f1b/decisions/filterByCurrentUser(on='reviewer')
応答
次の応答から、(Adele Vance) には、自己証明する保留中のアクセス レビュー (決定 は NotReviewed
) が 1 つ存在します。 プリンシパル とリソース のプロパティは、決定が適用されるプリンシパルと、アクセスがレビュー中のリソースを示します。 この場合、Adele Vance と Building セキュリティ グループはそれぞれです。
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#Collection(accessReviewInstanceDecisionItem)",
"@odata.count": 1,
"value": [
{
"@odata.type": "#microsoft.graph.accessReviewInstanceDecisionItem",
"id": "c7de8fba-4d6a-4fab-a659-62ff0c02643d",
"accessReviewId": "2d56c364-0695-4ec6-8b92-4c1db7c80f1b",
"reviewedDateTime": null,
"decision": "NotReviewed",
"justification": "",
"appliedDateTime": null,
"applyResult": "New",
"recommendation": "Approve",
"principalLink": "https://graph.microsoft.com/v1.0/users/3b8ceebc-49e6-4e0c-9e14-c906374a7ef6",
"resourceLink": "https://graph.microsoft.com/v1.0/groups/eb75ccd2-59ef-48b7-8f76-cc3f33f899f4",
"reviewedBy": {
"id": "00000000-0000-0000-0000-000000000000",
"displayName": "",
"type": null,
"userPrincipalName": ""
},
"appliedBy": {
"id": "00000000-0000-0000-0000-000000000000",
"displayName": "",
"type": null,
"userPrincipalName": ""
},
"resource": {
"id": "eb75ccd2-59ef-48b7-8f76-cc3f33f899f4",
"displayName": "Building security",
"type": "group"
},
"principal": {
"@odata.type": "#microsoft.graph.userIdentity",
"id": "3b8ceebc-49e6-4e0c-9e14-c906374a7ef6",
"displayName": "Adele Vance",
"type": "user",
"userPrincipalName": "AdeleV@Contoso.com",
"lastUserSignInDateTime": "2/15/2022 9:35:23 AM +00:00"
}
}
]
}
決定を記録する
アクセス レビューを完了するために、Adele Vance は Building セキュリティ グループへのアクセスを維持する必要を確認します。
要求
この呼び出しでは、アクセス レビュー スケジュール定義の ID と、c7de8fba-4d6a-4fab-a659-62ff0c02643d
前の手順で返された保留中の意思決定項目の ID に置き換えます2d56c364-0695-4ec6-8b92-4c1db7c80f1b
。
PATCH https://graph.microsoft.com/v1.0/identitygovernance/accessReviews/definitions/2d56c364-0695-4ec6-8b92-4c1db7c80f1b/instances/2d56c364-0695-4ec6-8b92-4c1db7c80f1b/decisions/c7de8fba-4d6a-4fab-a659-62ff0c02643d
{
"decision": "Approve",
"justification": "As the assistant security manager, I still need access to the building security group."
}
応答
HTTP/1.1 204 No Content
決定事項を確認する
アクセス レビューに関して記録した決定を確認するには、 アクセス レビューの決定項目を一覧表示します 。 アクセス レビュー期間の有効期限が切れていないか、決定が適用されますが、 applyResult は として New
マークされ、決定を変更できます。
サインアウトしてシークレット ブラウザー セッションを終了できるようになりました。
方法 2: マイ アクセス ポータルを使用する
レビュー担当者は、マイ アクセス ポータル ポータル にアクセスして、保留中のアクセス レビュー インスタンスをチェックすることもできます。
サインアウトしてシークレット ブラウザー セッションを終了できるようになりました。
手順 8: アクセス レビューの決定と状態を確認する
まだグローバル管理者としてログインしているメイン ブラウザー セッションに戻り、手順 4 を繰り返して、Adele Vance の decision プロパティが 表示されていることをApprove
確認します。 アクセス レビューが終了または期限切れになると、Alex Wilber の既定の Deny
決定が記録されます。 autoApplyDecisionsEnabled が に true
設定され、アクセス レビュー インスタンスの期間が終了したため、決定が自動的に適用されます。 その後、Adele は Building セキュリティ グループへのアクセスを維持し、Alex はグループから自動的に削除されます。
おめでとうございます。 アクセス レビューを作成し、アクセスを維持する必要性を自己証明しました。 自己証明は 1 回だけであり、別のアクセス レビュー インスタンスの決定または別の内部プロセスによって Deny
削除されるまでアクセスを維持します。
手順 9: リソースをクリーンアップする
このチュートリアル用に作成したリソース (セキュリティ グループの 構築 、アクセス レビュー スケジュールの定義、3 人のテスト ユーザー) を削除します。
セキュリティ グループを削除する
要求
この呼び出しでは、 を Building セキュリティ の ID に置き換えますeb75ccd2-59ef-48b7-8f76-cc3f33f899f4
。
DELETE https://graph.microsoft.com/beta/groups/eb75ccd2-59ef-48b7-8f76-cc3f33f899f4
var graphClient = new GraphServiceClient(requestAdapter);
await graphClient.Groups["{group-id}"].DeleteAsync();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
const options = {
authProvider,
};
const client = Client.init(options);
await client.api('/groups/eb75ccd2-59ef-48b7-8f76-cc3f33f899f4')
.version('beta')
.delete();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
graphClient.groups("eb75ccd2-59ef-48b7-8f76-cc3f33f899f4")
.buildRequest()
.delete();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClientWithCredentials(cred, scopes)
graphClient.GroupsById("group-id").Delete(context.Background(), nil)
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
Import-Module Microsoft.Graph.Groups
Remove-MgGroup -GroupId $groupId
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
<?php
// THIS SNIPPET IS A PREVIEW FOR THE KIOTA BASED SDK. NON-PRODUCTION USE ONLY
$graphServiceClient = new GraphServiceClient($requestAdapter);
$graphServiceClient->groupsById('group-id')->delete();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
応答
HTTP/1.1 204 No Content
アクセス レビュー定義を削除する
この呼び出しでは、 をアクセス レビュー定義の ID に置き換えます 2d56c364-0695-4ec6-8b92-4c1db7c80f1b
。 アクセス レビュー スケジュール定義はアクセス レビューのブループリントであるため、定義を削除すると、設定、インスタンス、および決定が削除されます。
要求
DELETE https://graph.microsoft.com/beta/identityGovernance/accessReviews/definitions/2d56c364-0695-4ec6-8b92-4c1db7c80f1b
var graphClient = new GraphServiceClient(requestAdapter);
await graphClient.IdentityGovernance.AccessReviews.Definitions["{accessReviewScheduleDefinition-id}"].DeleteAsync();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
const options = {
authProvider,
};
const client = Client.init(options);
await client.api('/identityGovernance/accessReviews/definitions/2d56c364-0695-4ec6-8b92-4c1db7c80f1b')
.version('beta')
.delete();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
graphClient.identityGovernance().accessReviews().definitions("2d56c364-0695-4ec6-8b92-4c1db7c80f1b")
.buildRequest()
.delete();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClientWithCredentials(cred, scopes)
graphClient.IdentityGovernance().AccessReviews().DefinitionsById("accessReviewScheduleDefinition-id").Delete(context.Background(), nil)
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
Import-Module Microsoft.Graph.Identity.Governance
Remove-MgIdentityGovernanceAccessReviewDefinition -AccessReviewScheduleDefinitionId $accessReviewScheduleDefinitionId
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
<?php
// THIS SNIPPET IS A PREVIEW FOR THE KIOTA BASED SDK. NON-PRODUCTION USE ONLY
$graphServiceClient = new GraphServiceClient($requestAdapter);
$graphServiceClient->identityGovernance()->accessReviews()->definitionsById('accessReviewScheduleDefinition-id')->delete();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
応答
HTTP/1.1 204 No Content
3 人のテスト ユーザーを削除する
この呼び出しでは、 をいずれかのテスト ユーザーの ID に置き換えます 3b8ceebc-49e6-4e0c-9e14-c906374a7ef6
。 他の 2 人のユーザーの ID でこの手順を 2 回繰り返して削除します。
要求
DELETE https://graph.microsoft.com/beta/users/3b8ceebc-49e6-4e0c-9e14-c906374a7ef6
var graphClient = new GraphServiceClient(requestAdapter);
await graphClient.Users["{user-id}"].DeleteAsync();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
const options = {
authProvider,
};
const client = Client.init(options);
await client.api('/users/3b8ceebc-49e6-4e0c-9e14-c906374a7ef6')
.version('beta')
.delete();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
graphClient.users("3b8ceebc-49e6-4e0c-9e14-c906374a7ef6")
.buildRequest()
.delete();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClientWithCredentials(cred, scopes)
graphClient.UsersById("user-id").Delete(context.Background(), nil)
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
Import-Module Microsoft.Graph.Users
Remove-MgUser -UserId $userId
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
<?php
// THIS SNIPPET IS A PREVIEW FOR THE KIOTA BASED SDK. NON-PRODUCTION USE ONLY
$graphServiceClient = new GraphServiceClient($requestAdapter);
$graphServiceClient->usersById('user-id')->delete();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する方法の詳細については、SDK のドキュメントを参照 してください。
応答
HTTP/1.1 204 No Content
まとめ
リソースへのアクセスを維持する必要があることをプリンシパルが自己証明するアクセス レビューを作成しました (この場合は 、セキュリティ グループの構築)。
このチュートリアルでは、Azure AD アクセス レビュー API のシナリオの 1 つについて説明しました。 アクセス レビュー API は、アクセス構成証明のニーズに合わせてリソース、プリンシパル、レビュー担当者を組み合わせてさまざまなシナリオをサポートします。 詳細については、 アクセス レビュー API に関するページを 参照してください。
関連項目