pulumi-azuread 5.48.0a1706744699__py3-none-any.whl → 6.8.0a1766208344__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pulumi-azuread might be problematic. Click here for more details.

Files changed (87) hide show
  1. pulumi_azuread/__init__.py +48 -1
  2. pulumi_azuread/_inputs.py +3803 -919
  3. pulumi_azuread/_utilities.py +52 -12
  4. pulumi_azuread/access_package.py +84 -78
  5. pulumi_azuread/access_package_assignment_policy.py +202 -196
  6. pulumi_azuread/access_package_catalog.py +82 -76
  7. pulumi_azuread/access_package_catalog_role_assignment.py +73 -67
  8. pulumi_azuread/access_package_resource_catalog_association.py +73 -67
  9. pulumi_azuread/access_package_resource_package_association.py +79 -73
  10. pulumi_azuread/administrative_unit.py +120 -100
  11. pulumi_azuread/administrative_unit_member.py +66 -50
  12. pulumi_azuread/administrative_unit_role_member.py +75 -69
  13. pulumi_azuread/app_role_assignment.py +164 -264
  14. pulumi_azuread/application.py +766 -692
  15. pulumi_azuread/application_api_access.py +84 -80
  16. pulumi_azuread/application_app_role.py +120 -116
  17. pulumi_azuread/application_certificate.py +349 -211
  18. pulumi_azuread/application_fallback_public_client.py +50 -44
  19. pulumi_azuread/application_federated_identity_credential.py +142 -197
  20. pulumi_azuread/application_from_template.py +90 -84
  21. pulumi_azuread/application_identifier_uri.py +56 -52
  22. pulumi_azuread/application_known_clients.py +50 -44
  23. pulumi_azuread/application_optional_claims.py +87 -81
  24. pulumi_azuread/application_owner.py +76 -42
  25. pulumi_azuread/application_password.py +159 -205
  26. pulumi_azuread/application_permission_scope.py +160 -156
  27. pulumi_azuread/application_pre_authorized.py +120 -236
  28. pulumi_azuread/application_redirect_uris.py +75 -69
  29. pulumi_azuread/application_registration.py +315 -309
  30. pulumi_azuread/authentication_strength_policy.py +73 -67
  31. pulumi_azuread/claims_mapping_policy.py +48 -42
  32. pulumi_azuread/conditional_access_policy.py +248 -232
  33. pulumi_azuread/config/__init__.py +2 -1
  34. pulumi_azuread/config/__init__.pyi +23 -17
  35. pulumi_azuread/config/vars.py +47 -37
  36. pulumi_azuread/custom_directory_role.py +128 -122
  37. pulumi_azuread/directory_role.py +60 -54
  38. pulumi_azuread/directory_role_assignment.py +194 -181
  39. pulumi_azuread/directory_role_eligibility_schedule_request.py +86 -80
  40. pulumi_azuread/directory_role_member.py +54 -48
  41. pulumi_azuread/get_access_package.py +45 -31
  42. pulumi_azuread/get_access_package_catalog.py +40 -27
  43. pulumi_azuread/get_access_package_catalog_role.py +39 -25
  44. pulumi_azuread/get_administrative_unit.py +42 -27
  45. pulumi_azuread/get_application.py +135 -94
  46. pulumi_azuread/get_application_published_app_ids.py +42 -47
  47. pulumi_azuread/get_application_template.py +49 -33
  48. pulumi_azuread/get_client_config.py +24 -15
  49. pulumi_azuread/get_directory_object.py +32 -21
  50. pulumi_azuread/get_directory_role_templates.py +20 -12
  51. pulumi_azuread/get_directory_roles.py +23 -14
  52. pulumi_azuread/get_domains.py +65 -46
  53. pulumi_azuread/get_group.py +147 -88
  54. pulumi_azuread/get_group_role_management_policy.py +178 -0
  55. pulumi_azuread/get_groups.py +71 -51
  56. pulumi_azuread/get_named_location.py +47 -22
  57. pulumi_azuread/get_service_principal.py +108 -90
  58. pulumi_azuread/get_service_principals.py +60 -64
  59. pulumi_azuread/get_user.py +186 -118
  60. pulumi_azuread/get_users.py +96 -53
  61. pulumi_azuread/group.py +622 -464
  62. pulumi_azuread/group_member.py +56 -50
  63. pulumi_azuread/group_role_management_policy.py +544 -0
  64. pulumi_azuread/group_without_members.py +1610 -0
  65. pulumi_azuread/invitation.py +126 -120
  66. pulumi_azuread/named_location.py +90 -76
  67. pulumi_azuread/outputs.py +2844 -1308
  68. pulumi_azuread/privileged_access_group_assignment_schedule.py +695 -0
  69. pulumi_azuread/privileged_access_group_eligibility_schedule.py +695 -0
  70. pulumi_azuread/provider.py +292 -246
  71. pulumi_azuread/pulumi-plugin.json +2 -1
  72. pulumi_azuread/service_principal.py +400 -461
  73. pulumi_azuread/service_principal_certificate.py +230 -145
  74. pulumi_azuread/service_principal_claims_mapping_policy_assignment.py +53 -47
  75. pulumi_azuread/service_principal_delegated_permission_grant.py +146 -140
  76. pulumi_azuread/service_principal_password.py +156 -141
  77. pulumi_azuread/service_principal_token_signing_certificate.py +119 -124
  78. pulumi_azuread/synchronization_job.py +105 -111
  79. pulumi_azuread/synchronization_job_provision_on_demand.py +396 -0
  80. pulumi_azuread/synchronization_secret.py +64 -70
  81. pulumi_azuread/user.py +776 -730
  82. pulumi_azuread/user_flow_attribute.py +76 -70
  83. {pulumi_azuread-5.48.0a1706744699.dist-info → pulumi_azuread-6.8.0a1766208344.dist-info}/METADATA +21 -20
  84. pulumi_azuread-6.8.0a1766208344.dist-info/RECORD +87 -0
  85. {pulumi_azuread-5.48.0a1706744699.dist-info → pulumi_azuread-6.8.0a1766208344.dist-info}/WHEEL +1 -1
  86. pulumi_azuread-5.48.0a1706744699.dist-info/RECORD +0 -81
  87. {pulumi_azuread-5.48.0a1706744699.dist-info → pulumi_azuread-6.8.0a1766208344.dist-info}/top_level.txt +0 -0
@@ -1,12 +1,17 @@
1
1
  # coding=utf-8
2
- # *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
2
+ # *** WARNING: this file was generated by pulumi-language-python. ***
3
3
  # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
4
 
5
- import copy
5
+ import builtins as _builtins
6
6
  import warnings
7
+ import sys
7
8
  import pulumi
8
9
  import pulumi.runtime
9
10
  from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
10
15
  from . import _utilities
11
16
  from . import outputs
12
17
  from ._inputs import *
@@ -17,15 +22,15 @@ __all__ = ['ConditionalAccessPolicyArgs', 'ConditionalAccessPolicy']
17
22
  class ConditionalAccessPolicyArgs:
18
23
  def __init__(__self__, *,
19
24
  conditions: pulumi.Input['ConditionalAccessPolicyConditionsArgs'],
20
- display_name: pulumi.Input[str],
21
- state: pulumi.Input[str],
25
+ display_name: pulumi.Input[_builtins.str],
26
+ state: pulumi.Input[_builtins.str],
22
27
  grant_controls: Optional[pulumi.Input['ConditionalAccessPolicyGrantControlsArgs']] = None,
23
28
  session_controls: Optional[pulumi.Input['ConditionalAccessPolicySessionControlsArgs']] = None):
24
29
  """
25
30
  The set of arguments for constructing a ConditionalAccessPolicy resource.
26
31
  :param pulumi.Input['ConditionalAccessPolicyConditionsArgs'] conditions: A `conditions` block as documented below, which specifies the rules that must be met for the policy to apply.
27
- :param pulumi.Input[str] display_name: The friendly name for this Conditional Access Policy.
28
- :param pulumi.Input[str] state: Specifies the state of the policy object. Possible values are: `enabled`, `disabled` and `enabledForReportingButNotEnforced`
32
+ :param pulumi.Input[_builtins.str] display_name: The friendly name for this Conditional Access Policy.
33
+ :param pulumi.Input[_builtins.str] state: Specifies the state of the policy object. Possible values are: `enabled`, `disabled` and `enabledForReportingButNotEnforced`
29
34
  :param pulumi.Input['ConditionalAccessPolicyGrantControlsArgs'] grant_controls: A `grant_controls` block as documented below, which specifies the grant controls that must be fulfilled to pass the policy.
30
35
  :param pulumi.Input['ConditionalAccessPolicySessionControlsArgs'] session_controls: A `session_controls` block as documented below, which specifies the session controls that are enforced after sign-in.
31
36
 
@@ -39,7 +44,7 @@ class ConditionalAccessPolicyArgs:
39
44
  if session_controls is not None:
40
45
  pulumi.set(__self__, "session_controls", session_controls)
41
46
 
42
- @property
47
+ @_builtins.property
43
48
  @pulumi.getter
44
49
  def conditions(self) -> pulumi.Input['ConditionalAccessPolicyConditionsArgs']:
45
50
  """
@@ -51,31 +56,31 @@ class ConditionalAccessPolicyArgs:
51
56
  def conditions(self, value: pulumi.Input['ConditionalAccessPolicyConditionsArgs']):
52
57
  pulumi.set(self, "conditions", value)
53
58
 
54
- @property
59
+ @_builtins.property
55
60
  @pulumi.getter(name="displayName")
56
- def display_name(self) -> pulumi.Input[str]:
61
+ def display_name(self) -> pulumi.Input[_builtins.str]:
57
62
  """
58
63
  The friendly name for this Conditional Access Policy.
59
64
  """
60
65
  return pulumi.get(self, "display_name")
61
66
 
62
67
  @display_name.setter
63
- def display_name(self, value: pulumi.Input[str]):
68
+ def display_name(self, value: pulumi.Input[_builtins.str]):
64
69
  pulumi.set(self, "display_name", value)
65
70
 
66
- @property
71
+ @_builtins.property
67
72
  @pulumi.getter
68
- def state(self) -> pulumi.Input[str]:
73
+ def state(self) -> pulumi.Input[_builtins.str]:
69
74
  """
70
75
  Specifies the state of the policy object. Possible values are: `enabled`, `disabled` and `enabledForReportingButNotEnforced`
71
76
  """
72
77
  return pulumi.get(self, "state")
73
78
 
74
79
  @state.setter
75
- def state(self, value: pulumi.Input[str]):
80
+ def state(self, value: pulumi.Input[_builtins.str]):
76
81
  pulumi.set(self, "state", value)
77
82
 
78
- @property
83
+ @_builtins.property
79
84
  @pulumi.getter(name="grantControls")
80
85
  def grant_controls(self) -> Optional[pulumi.Input['ConditionalAccessPolicyGrantControlsArgs']]:
81
86
  """
@@ -87,7 +92,7 @@ class ConditionalAccessPolicyArgs:
87
92
  def grant_controls(self, value: Optional[pulumi.Input['ConditionalAccessPolicyGrantControlsArgs']]):
88
93
  pulumi.set(self, "grant_controls", value)
89
94
 
90
- @property
95
+ @_builtins.property
91
96
  @pulumi.getter(name="sessionControls")
92
97
  def session_controls(self) -> Optional[pulumi.Input['ConditionalAccessPolicySessionControlsArgs']]:
93
98
  """
@@ -106,19 +111,21 @@ class ConditionalAccessPolicyArgs:
106
111
  class _ConditionalAccessPolicyState:
107
112
  def __init__(__self__, *,
108
113
  conditions: Optional[pulumi.Input['ConditionalAccessPolicyConditionsArgs']] = None,
109
- display_name: Optional[pulumi.Input[str]] = None,
114
+ display_name: Optional[pulumi.Input[_builtins.str]] = None,
110
115
  grant_controls: Optional[pulumi.Input['ConditionalAccessPolicyGrantControlsArgs']] = None,
116
+ object_id: Optional[pulumi.Input[_builtins.str]] = None,
111
117
  session_controls: Optional[pulumi.Input['ConditionalAccessPolicySessionControlsArgs']] = None,
112
- state: Optional[pulumi.Input[str]] = None):
118
+ state: Optional[pulumi.Input[_builtins.str]] = None):
113
119
  """
114
120
  Input properties used for looking up and filtering ConditionalAccessPolicy resources.
115
121
  :param pulumi.Input['ConditionalAccessPolicyConditionsArgs'] conditions: A `conditions` block as documented below, which specifies the rules that must be met for the policy to apply.
116
- :param pulumi.Input[str] display_name: The friendly name for this Conditional Access Policy.
122
+ :param pulumi.Input[_builtins.str] display_name: The friendly name for this Conditional Access Policy.
117
123
  :param pulumi.Input['ConditionalAccessPolicyGrantControlsArgs'] grant_controls: A `grant_controls` block as documented below, which specifies the grant controls that must be fulfilled to pass the policy.
124
+ :param pulumi.Input[_builtins.str] object_id: The object ID of the policy
118
125
  :param pulumi.Input['ConditionalAccessPolicySessionControlsArgs'] session_controls: A `session_controls` block as documented below, which specifies the session controls that are enforced after sign-in.
119
126
 
120
127
  > Note: At least one of `grant_controls` and/or `session_controls` blocks must be specified.
121
- :param pulumi.Input[str] state: Specifies the state of the policy object. Possible values are: `enabled`, `disabled` and `enabledForReportingButNotEnforced`
128
+ :param pulumi.Input[_builtins.str] state: Specifies the state of the policy object. Possible values are: `enabled`, `disabled` and `enabledForReportingButNotEnforced`
122
129
  """
123
130
  if conditions is not None:
124
131
  pulumi.set(__self__, "conditions", conditions)
@@ -126,12 +133,14 @@ class _ConditionalAccessPolicyState:
126
133
  pulumi.set(__self__, "display_name", display_name)
127
134
  if grant_controls is not None:
128
135
  pulumi.set(__self__, "grant_controls", grant_controls)
136
+ if object_id is not None:
137
+ pulumi.set(__self__, "object_id", object_id)
129
138
  if session_controls is not None:
130
139
  pulumi.set(__self__, "session_controls", session_controls)
131
140
  if state is not None:
132
141
  pulumi.set(__self__, "state", state)
133
142
 
134
- @property
143
+ @_builtins.property
135
144
  @pulumi.getter
136
145
  def conditions(self) -> Optional[pulumi.Input['ConditionalAccessPolicyConditionsArgs']]:
137
146
  """
@@ -143,19 +152,19 @@ class _ConditionalAccessPolicyState:
143
152
  def conditions(self, value: Optional[pulumi.Input['ConditionalAccessPolicyConditionsArgs']]):
144
153
  pulumi.set(self, "conditions", value)
145
154
 
146
- @property
155
+ @_builtins.property
147
156
  @pulumi.getter(name="displayName")
148
- def display_name(self) -> Optional[pulumi.Input[str]]:
157
+ def display_name(self) -> Optional[pulumi.Input[_builtins.str]]:
149
158
  """
150
159
  The friendly name for this Conditional Access Policy.
151
160
  """
152
161
  return pulumi.get(self, "display_name")
153
162
 
154
163
  @display_name.setter
155
- def display_name(self, value: Optional[pulumi.Input[str]]):
164
+ def display_name(self, value: Optional[pulumi.Input[_builtins.str]]):
156
165
  pulumi.set(self, "display_name", value)
157
166
 
158
- @property
167
+ @_builtins.property
159
168
  @pulumi.getter(name="grantControls")
160
169
  def grant_controls(self) -> Optional[pulumi.Input['ConditionalAccessPolicyGrantControlsArgs']]:
161
170
  """
@@ -167,7 +176,19 @@ class _ConditionalAccessPolicyState:
167
176
  def grant_controls(self, value: Optional[pulumi.Input['ConditionalAccessPolicyGrantControlsArgs']]):
168
177
  pulumi.set(self, "grant_controls", value)
169
178
 
170
- @property
179
+ @_builtins.property
180
+ @pulumi.getter(name="objectId")
181
+ def object_id(self) -> Optional[pulumi.Input[_builtins.str]]:
182
+ """
183
+ The object ID of the policy
184
+ """
185
+ return pulumi.get(self, "object_id")
186
+
187
+ @object_id.setter
188
+ def object_id(self, value: Optional[pulumi.Input[_builtins.str]]):
189
+ pulumi.set(self, "object_id", value)
190
+
191
+ @_builtins.property
171
192
  @pulumi.getter(name="sessionControls")
172
193
  def session_controls(self) -> Optional[pulumi.Input['ConditionalAccessPolicySessionControlsArgs']]:
173
194
  """
@@ -181,44 +202,34 @@ class _ConditionalAccessPolicyState:
181
202
  def session_controls(self, value: Optional[pulumi.Input['ConditionalAccessPolicySessionControlsArgs']]):
182
203
  pulumi.set(self, "session_controls", value)
183
204
 
184
- @property
205
+ @_builtins.property
185
206
  @pulumi.getter
186
- def state(self) -> Optional[pulumi.Input[str]]:
207
+ def state(self) -> Optional[pulumi.Input[_builtins.str]]:
187
208
  """
188
209
  Specifies the state of the policy object. Possible values are: `enabled`, `disabled` and `enabledForReportingButNotEnforced`
189
210
  """
190
211
  return pulumi.get(self, "state")
191
212
 
192
213
  @state.setter
193
- def state(self, value: Optional[pulumi.Input[str]]):
214
+ def state(self, value: Optional[pulumi.Input[_builtins.str]]):
194
215
  pulumi.set(self, "state", value)
195
216
 
196
217
 
218
+ @pulumi.type_token("azuread:index/conditionalAccessPolicy:ConditionalAccessPolicy")
197
219
  class ConditionalAccessPolicy(pulumi.CustomResource):
198
220
  @overload
199
221
  def __init__(__self__,
200
222
  resource_name: str,
201
223
  opts: Optional[pulumi.ResourceOptions] = None,
202
- conditions: Optional[pulumi.Input[pulumi.InputType['ConditionalAccessPolicyConditionsArgs']]] = None,
203
- display_name: Optional[pulumi.Input[str]] = None,
204
- grant_controls: Optional[pulumi.Input[pulumi.InputType['ConditionalAccessPolicyGrantControlsArgs']]] = None,
205
- session_controls: Optional[pulumi.Input[pulumi.InputType['ConditionalAccessPolicySessionControlsArgs']]] = None,
206
- state: Optional[pulumi.Input[str]] = None,
224
+ conditions: Optional[pulumi.Input[Union['ConditionalAccessPolicyConditionsArgs', 'ConditionalAccessPolicyConditionsArgsDict']]] = None,
225
+ display_name: Optional[pulumi.Input[_builtins.str]] = None,
226
+ grant_controls: Optional[pulumi.Input[Union['ConditionalAccessPolicyGrantControlsArgs', 'ConditionalAccessPolicyGrantControlsArgsDict']]] = None,
227
+ session_controls: Optional[pulumi.Input[Union['ConditionalAccessPolicySessionControlsArgs', 'ConditionalAccessPolicySessionControlsArgsDict']]] = None,
228
+ state: Optional[pulumi.Input[_builtins.str]] = None,
207
229
  __props__=None):
208
230
  """
209
- Manages a Conditional Access Policy within Azure Active Directory.
210
-
211
- > **Licensing Requirements** Specifying `client_applications` property requires the activation of Microsoft Entra on your tenant and the availability of sufficient Workload Identities Premium licences (one per service principal managed by a conditional access).
212
-
213
- ## API Permissions
214
-
215
- The following API permissions are required in order to use this resource.
216
-
217
- When authenticated with a service principal, this resource requires the following application roles: `Policy.ReadWrite.ConditionalAccess` and `Policy.Read.All`
218
-
219
- When authenticated with a user principal, this resource requires one of the following directory roles: `Conditional Access Administrator` or `Global Administrator`
220
-
221
231
  ## Example Usage
232
+
222
233
  ### All users except guests or external users
223
234
 
224
235
  ```python
@@ -226,47 +237,48 @@ class ConditionalAccessPolicy(pulumi.CustomResource):
226
237
  import pulumi_azuread as azuread
227
238
 
228
239
  example = azuread.ConditionalAccessPolicy("example",
229
- conditions=azuread.ConditionalAccessPolicyConditionsArgs(
230
- applications=azuread.ConditionalAccessPolicyConditionsApplicationsArgs(
231
- excluded_applications=[],
232
- included_applications=["All"],
233
- ),
234
- client_app_types=["all"],
235
- devices=azuread.ConditionalAccessPolicyConditionsDevicesArgs(
236
- filter=azuread.ConditionalAccessPolicyConditionsDevicesFilterArgs(
237
- mode="exclude",
238
- rule="device.operatingSystem eq \\"Doors\\"",
239
- ),
240
- ),
241
- locations=azuread.ConditionalAccessPolicyConditionsLocationsArgs(
242
- excluded_locations=["AllTrusted"],
243
- included_locations=["All"],
244
- ),
245
- platforms=azuread.ConditionalAccessPolicyConditionsPlatformsArgs(
246
- excluded_platforms=["iOS"],
247
- included_platforms=["android"],
248
- ),
249
- sign_in_risk_levels=["medium"],
250
- user_risk_levels=["medium"],
251
- users=azuread.ConditionalAccessPolicyConditionsUsersArgs(
252
- excluded_users=["GuestsOrExternalUsers"],
253
- included_users=["All"],
254
- ),
255
- ),
256
240
  display_name="example policy",
257
- grant_controls=azuread.ConditionalAccessPolicyGrantControlsArgs(
258
- built_in_controls=["mfa"],
259
- operator="OR",
260
- ),
261
- session_controls=azuread.ConditionalAccessPolicySessionControlsArgs(
262
- application_enforced_restrictions_enabled=True,
263
- cloud_app_security_policy="monitorOnly",
264
- disable_resilience_defaults=False,
265
- sign_in_frequency=10,
266
- sign_in_frequency_period="hours",
267
- ),
268
- state="disabled")
241
+ state="disabled",
242
+ conditions={
243
+ "client_app_types": ["all"],
244
+ "sign_in_risk_levels": ["medium"],
245
+ "user_risk_levels": ["medium"],
246
+ "applications": {
247
+ "included_applications": ["All"],
248
+ "excluded_applications": [],
249
+ },
250
+ "devices": {
251
+ "filter": {
252
+ "mode": "exclude",
253
+ "rule": "device.operatingSystem eq \\"Doors\\"",
254
+ },
255
+ },
256
+ "locations": {
257
+ "included_locations": ["All"],
258
+ "excluded_locations": ["AllTrusted"],
259
+ },
260
+ "platforms": {
261
+ "included_platforms": ["android"],
262
+ "excluded_platforms": ["iOS"],
263
+ },
264
+ "users": {
265
+ "included_users": ["All"],
266
+ "excluded_users": ["GuestsOrExternalUsers"],
267
+ },
268
+ },
269
+ grant_controls={
270
+ "operator": "OR",
271
+ "built_in_controls": ["mfa"],
272
+ },
273
+ session_controls={
274
+ "application_enforced_restrictions_enabled": True,
275
+ "disable_resilience_defaults": False,
276
+ "sign_in_frequency": 10,
277
+ "sign_in_frequency_period": "hours",
278
+ "cloud_app_security_policy": "monitorOnly",
279
+ })
269
280
  ```
281
+
270
282
  ### Included client applications / service principals
271
283
 
272
284
  ```python
@@ -277,24 +289,25 @@ class ConditionalAccessPolicy(pulumi.CustomResource):
277
289
  example = azuread.ConditionalAccessPolicy("example",
278
290
  display_name="example policy",
279
291
  state="disabled",
280
- conditions=azuread.ConditionalAccessPolicyConditionsArgs(
281
- client_app_types=["all"],
282
- applications=azuread.ConditionalAccessPolicyConditionsApplicationsArgs(
283
- included_applications=["All"],
284
- ),
285
- client_applications=azuread.ConditionalAccessPolicyConditionsClientApplicationsArgs(
286
- included_service_principals=[current.object_id],
287
- excluded_service_principals=[],
288
- ),
289
- users=azuread.ConditionalAccessPolicyConditionsUsersArgs(
290
- included_users=["None"],
291
- ),
292
- ),
293
- grant_controls=azuread.ConditionalAccessPolicyGrantControlsArgs(
294
- operator="OR",
295
- built_in_controls=["block"],
296
- ))
292
+ conditions={
293
+ "client_app_types": ["all"],
294
+ "applications": {
295
+ "included_applications": ["All"],
296
+ },
297
+ "client_applications": {
298
+ "included_service_principals": [current.object_id],
299
+ "excluded_service_principals": [],
300
+ },
301
+ "users": {
302
+ "included_users": ["None"],
303
+ },
304
+ },
305
+ grant_controls={
306
+ "operator": "OR",
307
+ "built_in_controls": ["block"],
308
+ })
297
309
  ```
310
+
298
311
  ### Excluded client applications / service principals
299
312
 
300
313
  ```python
@@ -305,23 +318,23 @@ class ConditionalAccessPolicy(pulumi.CustomResource):
305
318
  example = azuread.ConditionalAccessPolicy("example",
306
319
  display_name="example policy",
307
320
  state="disabled",
308
- conditions=azuread.ConditionalAccessPolicyConditionsArgs(
309
- client_app_types=["all"],
310
- applications=azuread.ConditionalAccessPolicyConditionsApplicationsArgs(
311
- included_applications=["All"],
312
- ),
313
- client_applications=azuread.ConditionalAccessPolicyConditionsClientApplicationsArgs(
314
- included_service_principals=["ServicePrincipalsInMyTenant"],
315
- excluded_service_principals=[current.object_id],
316
- ),
317
- users=azuread.ConditionalAccessPolicyConditionsUsersArgs(
318
- included_users=["None"],
319
- ),
320
- ),
321
- grant_controls=azuread.ConditionalAccessPolicyGrantControlsArgs(
322
- operator="OR",
323
- built_in_controls=["block"],
324
- ))
321
+ conditions={
322
+ "client_app_types": ["all"],
323
+ "applications": {
324
+ "included_applications": ["All"],
325
+ },
326
+ "client_applications": {
327
+ "included_service_principals": ["ServicePrincipalsInMyTenant"],
328
+ "excluded_service_principals": [current.object_id],
329
+ },
330
+ "users": {
331
+ "included_users": ["None"],
332
+ },
333
+ },
334
+ grant_controls={
335
+ "operator": "OR",
336
+ "built_in_controls": ["block"],
337
+ })
325
338
  ```
326
339
 
327
340
  ## Import
@@ -329,18 +342,18 @@ class ConditionalAccessPolicy(pulumi.CustomResource):
329
342
  Conditional Access Policies can be imported using the `id`, e.g.
330
343
 
331
344
  ```sh
332
- $ pulumi import azuread:index/conditionalAccessPolicy:ConditionalAccessPolicy my_location 00000000-0000-0000-0000-000000000000
345
+ $ pulumi import azuread:index/conditionalAccessPolicy:ConditionalAccessPolicy my_location /identity/conditionalAccess/policies/00000000-0000-0000-0000-000000000000
333
346
  ```
334
347
 
335
348
  :param str resource_name: The name of the resource.
336
349
  :param pulumi.ResourceOptions opts: Options for the resource.
337
- :param pulumi.Input[pulumi.InputType['ConditionalAccessPolicyConditionsArgs']] conditions: A `conditions` block as documented below, which specifies the rules that must be met for the policy to apply.
338
- :param pulumi.Input[str] display_name: The friendly name for this Conditional Access Policy.
339
- :param pulumi.Input[pulumi.InputType['ConditionalAccessPolicyGrantControlsArgs']] grant_controls: A `grant_controls` block as documented below, which specifies the grant controls that must be fulfilled to pass the policy.
340
- :param pulumi.Input[pulumi.InputType['ConditionalAccessPolicySessionControlsArgs']] session_controls: A `session_controls` block as documented below, which specifies the session controls that are enforced after sign-in.
350
+ :param pulumi.Input[Union['ConditionalAccessPolicyConditionsArgs', 'ConditionalAccessPolicyConditionsArgsDict']] conditions: A `conditions` block as documented below, which specifies the rules that must be met for the policy to apply.
351
+ :param pulumi.Input[_builtins.str] display_name: The friendly name for this Conditional Access Policy.
352
+ :param pulumi.Input[Union['ConditionalAccessPolicyGrantControlsArgs', 'ConditionalAccessPolicyGrantControlsArgsDict']] grant_controls: A `grant_controls` block as documented below, which specifies the grant controls that must be fulfilled to pass the policy.
353
+ :param pulumi.Input[Union['ConditionalAccessPolicySessionControlsArgs', 'ConditionalAccessPolicySessionControlsArgsDict']] session_controls: A `session_controls` block as documented below, which specifies the session controls that are enforced after sign-in.
341
354
 
342
355
  > Note: At least one of `grant_controls` and/or `session_controls` blocks must be specified.
343
- :param pulumi.Input[str] state: Specifies the state of the policy object. Possible values are: `enabled`, `disabled` and `enabledForReportingButNotEnforced`
356
+ :param pulumi.Input[_builtins.str] state: Specifies the state of the policy object. Possible values are: `enabled`, `disabled` and `enabledForReportingButNotEnforced`
344
357
  """
345
358
  ...
346
359
  @overload
@@ -349,19 +362,8 @@ class ConditionalAccessPolicy(pulumi.CustomResource):
349
362
  args: ConditionalAccessPolicyArgs,
350
363
  opts: Optional[pulumi.ResourceOptions] = None):
351
364
  """
352
- Manages a Conditional Access Policy within Azure Active Directory.
353
-
354
- > **Licensing Requirements** Specifying `client_applications` property requires the activation of Microsoft Entra on your tenant and the availability of sufficient Workload Identities Premium licences (one per service principal managed by a conditional access).
355
-
356
- ## API Permissions
357
-
358
- The following API permissions are required in order to use this resource.
359
-
360
- When authenticated with a service principal, this resource requires the following application roles: `Policy.ReadWrite.ConditionalAccess` and `Policy.Read.All`
361
-
362
- When authenticated with a user principal, this resource requires one of the following directory roles: `Conditional Access Administrator` or `Global Administrator`
363
-
364
365
  ## Example Usage
366
+
365
367
  ### All users except guests or external users
366
368
 
367
369
  ```python
@@ -369,47 +371,48 @@ class ConditionalAccessPolicy(pulumi.CustomResource):
369
371
  import pulumi_azuread as azuread
370
372
 
371
373
  example = azuread.ConditionalAccessPolicy("example",
372
- conditions=azuread.ConditionalAccessPolicyConditionsArgs(
373
- applications=azuread.ConditionalAccessPolicyConditionsApplicationsArgs(
374
- excluded_applications=[],
375
- included_applications=["All"],
376
- ),
377
- client_app_types=["all"],
378
- devices=azuread.ConditionalAccessPolicyConditionsDevicesArgs(
379
- filter=azuread.ConditionalAccessPolicyConditionsDevicesFilterArgs(
380
- mode="exclude",
381
- rule="device.operatingSystem eq \\"Doors\\"",
382
- ),
383
- ),
384
- locations=azuread.ConditionalAccessPolicyConditionsLocationsArgs(
385
- excluded_locations=["AllTrusted"],
386
- included_locations=["All"],
387
- ),
388
- platforms=azuread.ConditionalAccessPolicyConditionsPlatformsArgs(
389
- excluded_platforms=["iOS"],
390
- included_platforms=["android"],
391
- ),
392
- sign_in_risk_levels=["medium"],
393
- user_risk_levels=["medium"],
394
- users=azuread.ConditionalAccessPolicyConditionsUsersArgs(
395
- excluded_users=["GuestsOrExternalUsers"],
396
- included_users=["All"],
397
- ),
398
- ),
399
374
  display_name="example policy",
400
- grant_controls=azuread.ConditionalAccessPolicyGrantControlsArgs(
401
- built_in_controls=["mfa"],
402
- operator="OR",
403
- ),
404
- session_controls=azuread.ConditionalAccessPolicySessionControlsArgs(
405
- application_enforced_restrictions_enabled=True,
406
- cloud_app_security_policy="monitorOnly",
407
- disable_resilience_defaults=False,
408
- sign_in_frequency=10,
409
- sign_in_frequency_period="hours",
410
- ),
411
- state="disabled")
375
+ state="disabled",
376
+ conditions={
377
+ "client_app_types": ["all"],
378
+ "sign_in_risk_levels": ["medium"],
379
+ "user_risk_levels": ["medium"],
380
+ "applications": {
381
+ "included_applications": ["All"],
382
+ "excluded_applications": [],
383
+ },
384
+ "devices": {
385
+ "filter": {
386
+ "mode": "exclude",
387
+ "rule": "device.operatingSystem eq \\"Doors\\"",
388
+ },
389
+ },
390
+ "locations": {
391
+ "included_locations": ["All"],
392
+ "excluded_locations": ["AllTrusted"],
393
+ },
394
+ "platforms": {
395
+ "included_platforms": ["android"],
396
+ "excluded_platforms": ["iOS"],
397
+ },
398
+ "users": {
399
+ "included_users": ["All"],
400
+ "excluded_users": ["GuestsOrExternalUsers"],
401
+ },
402
+ },
403
+ grant_controls={
404
+ "operator": "OR",
405
+ "built_in_controls": ["mfa"],
406
+ },
407
+ session_controls={
408
+ "application_enforced_restrictions_enabled": True,
409
+ "disable_resilience_defaults": False,
410
+ "sign_in_frequency": 10,
411
+ "sign_in_frequency_period": "hours",
412
+ "cloud_app_security_policy": "monitorOnly",
413
+ })
412
414
  ```
415
+
413
416
  ### Included client applications / service principals
414
417
 
415
418
  ```python
@@ -420,24 +423,25 @@ class ConditionalAccessPolicy(pulumi.CustomResource):
420
423
  example = azuread.ConditionalAccessPolicy("example",
421
424
  display_name="example policy",
422
425
  state="disabled",
423
- conditions=azuread.ConditionalAccessPolicyConditionsArgs(
424
- client_app_types=["all"],
425
- applications=azuread.ConditionalAccessPolicyConditionsApplicationsArgs(
426
- included_applications=["All"],
427
- ),
428
- client_applications=azuread.ConditionalAccessPolicyConditionsClientApplicationsArgs(
429
- included_service_principals=[current.object_id],
430
- excluded_service_principals=[],
431
- ),
432
- users=azuread.ConditionalAccessPolicyConditionsUsersArgs(
433
- included_users=["None"],
434
- ),
435
- ),
436
- grant_controls=azuread.ConditionalAccessPolicyGrantControlsArgs(
437
- operator="OR",
438
- built_in_controls=["block"],
439
- ))
426
+ conditions={
427
+ "client_app_types": ["all"],
428
+ "applications": {
429
+ "included_applications": ["All"],
430
+ },
431
+ "client_applications": {
432
+ "included_service_principals": [current.object_id],
433
+ "excluded_service_principals": [],
434
+ },
435
+ "users": {
436
+ "included_users": ["None"],
437
+ },
438
+ },
439
+ grant_controls={
440
+ "operator": "OR",
441
+ "built_in_controls": ["block"],
442
+ })
440
443
  ```
444
+
441
445
  ### Excluded client applications / service principals
442
446
 
443
447
  ```python
@@ -448,23 +452,23 @@ class ConditionalAccessPolicy(pulumi.CustomResource):
448
452
  example = azuread.ConditionalAccessPolicy("example",
449
453
  display_name="example policy",
450
454
  state="disabled",
451
- conditions=azuread.ConditionalAccessPolicyConditionsArgs(
452
- client_app_types=["all"],
453
- applications=azuread.ConditionalAccessPolicyConditionsApplicationsArgs(
454
- included_applications=["All"],
455
- ),
456
- client_applications=azuread.ConditionalAccessPolicyConditionsClientApplicationsArgs(
457
- included_service_principals=["ServicePrincipalsInMyTenant"],
458
- excluded_service_principals=[current.object_id],
459
- ),
460
- users=azuread.ConditionalAccessPolicyConditionsUsersArgs(
461
- included_users=["None"],
462
- ),
463
- ),
464
- grant_controls=azuread.ConditionalAccessPolicyGrantControlsArgs(
465
- operator="OR",
466
- built_in_controls=["block"],
467
- ))
455
+ conditions={
456
+ "client_app_types": ["all"],
457
+ "applications": {
458
+ "included_applications": ["All"],
459
+ },
460
+ "client_applications": {
461
+ "included_service_principals": ["ServicePrincipalsInMyTenant"],
462
+ "excluded_service_principals": [current.object_id],
463
+ },
464
+ "users": {
465
+ "included_users": ["None"],
466
+ },
467
+ },
468
+ grant_controls={
469
+ "operator": "OR",
470
+ "built_in_controls": ["block"],
471
+ })
468
472
  ```
469
473
 
470
474
  ## Import
@@ -472,7 +476,7 @@ class ConditionalAccessPolicy(pulumi.CustomResource):
472
476
  Conditional Access Policies can be imported using the `id`, e.g.
473
477
 
474
478
  ```sh
475
- $ pulumi import azuread:index/conditionalAccessPolicy:ConditionalAccessPolicy my_location 00000000-0000-0000-0000-000000000000
479
+ $ pulumi import azuread:index/conditionalAccessPolicy:ConditionalAccessPolicy my_location /identity/conditionalAccess/policies/00000000-0000-0000-0000-000000000000
476
480
  ```
477
481
 
478
482
  :param str resource_name: The name of the resource.
@@ -490,11 +494,11 @@ class ConditionalAccessPolicy(pulumi.CustomResource):
490
494
  def _internal_init(__self__,
491
495
  resource_name: str,
492
496
  opts: Optional[pulumi.ResourceOptions] = None,
493
- conditions: Optional[pulumi.Input[pulumi.InputType['ConditionalAccessPolicyConditionsArgs']]] = None,
494
- display_name: Optional[pulumi.Input[str]] = None,
495
- grant_controls: Optional[pulumi.Input[pulumi.InputType['ConditionalAccessPolicyGrantControlsArgs']]] = None,
496
- session_controls: Optional[pulumi.Input[pulumi.InputType['ConditionalAccessPolicySessionControlsArgs']]] = None,
497
- state: Optional[pulumi.Input[str]] = None,
497
+ conditions: Optional[pulumi.Input[Union['ConditionalAccessPolicyConditionsArgs', 'ConditionalAccessPolicyConditionsArgsDict']]] = None,
498
+ display_name: Optional[pulumi.Input[_builtins.str]] = None,
499
+ grant_controls: Optional[pulumi.Input[Union['ConditionalAccessPolicyGrantControlsArgs', 'ConditionalAccessPolicyGrantControlsArgsDict']]] = None,
500
+ session_controls: Optional[pulumi.Input[Union['ConditionalAccessPolicySessionControlsArgs', 'ConditionalAccessPolicySessionControlsArgsDict']]] = None,
501
+ state: Optional[pulumi.Input[_builtins.str]] = None,
498
502
  __props__=None):
499
503
  opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
500
504
  if not isinstance(opts, pulumi.ResourceOptions):
@@ -515,6 +519,7 @@ class ConditionalAccessPolicy(pulumi.CustomResource):
515
519
  if state is None and not opts.urn:
516
520
  raise TypeError("Missing required property 'state'")
517
521
  __props__.__dict__["state"] = state
522
+ __props__.__dict__["object_id"] = None
518
523
  super(ConditionalAccessPolicy, __self__).__init__(
519
524
  'azuread:index/conditionalAccessPolicy:ConditionalAccessPolicy',
520
525
  resource_name,
@@ -525,11 +530,12 @@ class ConditionalAccessPolicy(pulumi.CustomResource):
525
530
  def get(resource_name: str,
526
531
  id: pulumi.Input[str],
527
532
  opts: Optional[pulumi.ResourceOptions] = None,
528
- conditions: Optional[pulumi.Input[pulumi.InputType['ConditionalAccessPolicyConditionsArgs']]] = None,
529
- display_name: Optional[pulumi.Input[str]] = None,
530
- grant_controls: Optional[pulumi.Input[pulumi.InputType['ConditionalAccessPolicyGrantControlsArgs']]] = None,
531
- session_controls: Optional[pulumi.Input[pulumi.InputType['ConditionalAccessPolicySessionControlsArgs']]] = None,
532
- state: Optional[pulumi.Input[str]] = None) -> 'ConditionalAccessPolicy':
533
+ conditions: Optional[pulumi.Input[Union['ConditionalAccessPolicyConditionsArgs', 'ConditionalAccessPolicyConditionsArgsDict']]] = None,
534
+ display_name: Optional[pulumi.Input[_builtins.str]] = None,
535
+ grant_controls: Optional[pulumi.Input[Union['ConditionalAccessPolicyGrantControlsArgs', 'ConditionalAccessPolicyGrantControlsArgsDict']]] = None,
536
+ object_id: Optional[pulumi.Input[_builtins.str]] = None,
537
+ session_controls: Optional[pulumi.Input[Union['ConditionalAccessPolicySessionControlsArgs', 'ConditionalAccessPolicySessionControlsArgsDict']]] = None,
538
+ state: Optional[pulumi.Input[_builtins.str]] = None) -> 'ConditionalAccessPolicy':
533
539
  """
534
540
  Get an existing ConditionalAccessPolicy resource's state with the given name, id, and optional extra
535
541
  properties used to qualify the lookup.
@@ -537,13 +543,14 @@ class ConditionalAccessPolicy(pulumi.CustomResource):
537
543
  :param str resource_name: The unique name of the resulting resource.
538
544
  :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
539
545
  :param pulumi.ResourceOptions opts: Options for the resource.
540
- :param pulumi.Input[pulumi.InputType['ConditionalAccessPolicyConditionsArgs']] conditions: A `conditions` block as documented below, which specifies the rules that must be met for the policy to apply.
541
- :param pulumi.Input[str] display_name: The friendly name for this Conditional Access Policy.
542
- :param pulumi.Input[pulumi.InputType['ConditionalAccessPolicyGrantControlsArgs']] grant_controls: A `grant_controls` block as documented below, which specifies the grant controls that must be fulfilled to pass the policy.
543
- :param pulumi.Input[pulumi.InputType['ConditionalAccessPolicySessionControlsArgs']] session_controls: A `session_controls` block as documented below, which specifies the session controls that are enforced after sign-in.
546
+ :param pulumi.Input[Union['ConditionalAccessPolicyConditionsArgs', 'ConditionalAccessPolicyConditionsArgsDict']] conditions: A `conditions` block as documented below, which specifies the rules that must be met for the policy to apply.
547
+ :param pulumi.Input[_builtins.str] display_name: The friendly name for this Conditional Access Policy.
548
+ :param pulumi.Input[Union['ConditionalAccessPolicyGrantControlsArgs', 'ConditionalAccessPolicyGrantControlsArgsDict']] grant_controls: A `grant_controls` block as documented below, which specifies the grant controls that must be fulfilled to pass the policy.
549
+ :param pulumi.Input[_builtins.str] object_id: The object ID of the policy
550
+ :param pulumi.Input[Union['ConditionalAccessPolicySessionControlsArgs', 'ConditionalAccessPolicySessionControlsArgsDict']] session_controls: A `session_controls` block as documented below, which specifies the session controls that are enforced after sign-in.
544
551
 
545
552
  > Note: At least one of `grant_controls` and/or `session_controls` blocks must be specified.
546
- :param pulumi.Input[str] state: Specifies the state of the policy object. Possible values are: `enabled`, `disabled` and `enabledForReportingButNotEnforced`
553
+ :param pulumi.Input[_builtins.str] state: Specifies the state of the policy object. Possible values are: `enabled`, `disabled` and `enabledForReportingButNotEnforced`
547
554
  """
548
555
  opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
549
556
 
@@ -552,11 +559,12 @@ class ConditionalAccessPolicy(pulumi.CustomResource):
552
559
  __props__.__dict__["conditions"] = conditions
553
560
  __props__.__dict__["display_name"] = display_name
554
561
  __props__.__dict__["grant_controls"] = grant_controls
562
+ __props__.__dict__["object_id"] = object_id
555
563
  __props__.__dict__["session_controls"] = session_controls
556
564
  __props__.__dict__["state"] = state
557
565
  return ConditionalAccessPolicy(resource_name, opts=opts, __props__=__props__)
558
566
 
559
- @property
567
+ @_builtins.property
560
568
  @pulumi.getter
561
569
  def conditions(self) -> pulumi.Output['outputs.ConditionalAccessPolicyConditions']:
562
570
  """
@@ -564,15 +572,15 @@ class ConditionalAccessPolicy(pulumi.CustomResource):
564
572
  """
565
573
  return pulumi.get(self, "conditions")
566
574
 
567
- @property
575
+ @_builtins.property
568
576
  @pulumi.getter(name="displayName")
569
- def display_name(self) -> pulumi.Output[str]:
577
+ def display_name(self) -> pulumi.Output[_builtins.str]:
570
578
  """
571
579
  The friendly name for this Conditional Access Policy.
572
580
  """
573
581
  return pulumi.get(self, "display_name")
574
582
 
575
- @property
583
+ @_builtins.property
576
584
  @pulumi.getter(name="grantControls")
577
585
  def grant_controls(self) -> pulumi.Output[Optional['outputs.ConditionalAccessPolicyGrantControls']]:
578
586
  """
@@ -580,7 +588,15 @@ class ConditionalAccessPolicy(pulumi.CustomResource):
580
588
  """
581
589
  return pulumi.get(self, "grant_controls")
582
590
 
583
- @property
591
+ @_builtins.property
592
+ @pulumi.getter(name="objectId")
593
+ def object_id(self) -> pulumi.Output[_builtins.str]:
594
+ """
595
+ The object ID of the policy
596
+ """
597
+ return pulumi.get(self, "object_id")
598
+
599
+ @_builtins.property
584
600
  @pulumi.getter(name="sessionControls")
585
601
  def session_controls(self) -> pulumi.Output[Optional['outputs.ConditionalAccessPolicySessionControls']]:
586
602
  """
@@ -590,9 +606,9 @@ class ConditionalAccessPolicy(pulumi.CustomResource):
590
606
  """
591
607
  return pulumi.get(self, "session_controls")
592
608
 
593
- @property
609
+ @_builtins.property
594
610
  @pulumi.getter
595
- def state(self) -> pulumi.Output[str]:
611
+ def state(self) -> pulumi.Output[_builtins.str]:
596
612
  """
597
613
  Specifies the state of the policy object. Possible values are: `enabled`, `disabled` and `enabledForReportingButNotEnforced`
598
614
  """