Skip to main content

Add-VSTeamAccessControlEntry

SYNOPSIS

Add or update ACEs in the ACL for the provided token. The request contains the target token, a list of ACEs and a optional merge parameter. In the case of a collision (by identity descriptor) with an existing ACE in the ACL, the "merge" parameter determines the behavior. If set, the existing ACE has its allow and deny merged with the incoming ACE's allow and deny. If unset, the existing ACE is displaced.

Note: This is a low-level function. You should really use a high level function (Add-VSTeam Permission / Set-VSTeam Permission / Get-VSTeam*Permission) unless you know what you are doing.

SYNTAX

ByNamespace (Default)

Add-VSTeamAccessControlEntry -SecurityNamespace <SecurityNamespace> -Token <String> -Descriptor <String>
-AllowMask <Int32> -DenyMask <Int32> [-OverwriteMask] [<CommonParameters>]

ByNamespaceId

Add-VSTeamAccessControlEntry -SecurityNamespaceId <Guid> -Token <String> -Descriptor <String>
-AllowMask <Int32> -DenyMask <Int32> [-OverwriteMask] [<CommonParameters>]

DESCRIPTION

Add or update ACEs in the ACL for the provided token. The request contains the target token, a list of ACEs and a optional merge parameter. In the case of a collision (by identity descriptor) with an existing ACE in the ACL, the "merge" parameter determines the behavior. If set, the existing ACE has its allow and deny merged with the incoming ACE's allow and deny. If unset, the existing ACE is displaced.

Note: This is a low-level function. You should really use a high level function (Add-VSTeam Permission / Set-VSTeam Permission / Get-VSTeam*Permission) unless you know what you are doing.

EXAMPLES

Example 1

Add-VSTeamAccessControlEntry -SecurityNamespaceId "2bf24a2b-70ba-43d3-ad97-3d9e1f75622f" -Token "MySecurityToken" -AllowMask 15 -DenyMask 2 -ProjectName "MyProject"

This command adds an Access Control Entry (ACE) for the provided token in the project named "MyProject" using the specified security namespace identifier. The ACE has an allow mask of 15 and a deny mask of 2.

Example 2

Add-VSTeamAccessControlEntry -SecurityNamespace "vsteam_lib.SecurityNamespace" -Token "MySecurityToken" -AllowMask 7 -DenyMask 0 -OverwriteMask -ProjectName "MyProject"

This example adds an ACE using a `vsteam_lib.SecurityNamespace` object instead of a security namespace identifier. The allow mask is set to 7, and the deny mask is set to 0. The `-OverwriteMask` switch is used, which means the mask values will be overwritten rather than merged.

Example 3

$aceParams = @{
SecurityNamespaceId = "2bf24a2b-70ba-43d3-ad97-3d9e1f75622f";
Token = "MySecurityToken";
AllowMask = 31;
DenyMask = 8;
ProjectName = "MyProject";
}
Add-VSTeamAccessControlEntry @aceParams

This example uses a hashtable to define the parameters for the `Add-VSTeamAccessControlEntry` cmdlet. The ACE is added with an allow mask of 31 and a deny mask of 8 for the provided token in the project "MyProject".

Example 4

$namespace = Get-VSTeamSecurityNamespace -Name "VersionControlItems"
Add-VSTeamAccessControlEntry -SecurityNamespace $namespace -Token "MyToken" -AllowMask 3 -DenyMask 1 -ProjectName "MyProject"

This example first retrieves the security namespace object for "VersionControlItems" and then uses this object to add an ACE. The ACE is added with an allow mask of 3 and a deny mask of 1 for the token "MyToken" in the project "MyProject".

Remember, managing permissions and access control entries in a DevOps environment is a crucial task, ensuring that users and services have the appropriate permissions for their roles and responsibilities. Always be careful when modifying permissions to avoid unintentionally giving or restricting access to critical resources.

PARAMETERS

-SecurityNamespace

Security namespace object.

Type: SecurityNamespace
Parameter Sets: ByNamespace
Aliases:

Required: True
Position: Named
Default value: None
Accept pipeline input: True (ByValue)
Accept wildcard characters: False

-SecurityNamespaceId

Security namespace identifier.

Valid IDs are:

AzD:

  • Analytics (58450c49-b02d-465a-ab12-59ae512d6531)
  • AnalyticsViews (d34d3680-dfe5-4cc6-a949-7d9c68f73cba)
  • ReleaseManagement (7c7d32f7-0e86-4cd6-892e-b35dbba870bd)
  • ReleaseManagement2 (c788c23e-1b46-4162-8f5e-d7585343b5de)
  • Identity (5a27515b-ccd7-42c9-84f1-54c998f03866)
  • WorkItemTrackingAdministration (445d2788-c5fb-4132-bbef-09c4045ad93f)
  • DistributedTask (101eae8c-1709-47f9-b228-0e476c35b3ba)
  • WorkItemQueryFolders (71356614-aad7-4757-8f2c-0fb3bff6f680)
  • GitRepositories (2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87)
  • VersionControlItems2 (3c15a8b7-af1a-45c2-aa97-2cb97078332e)
  • EventSubscriber (2bf24a2b-70ba-43d3-ad97-3d9e1f75622f)
  • WorkItemTrackingProvision (5a6cd233-6615-414d-9393-48dbb252bd23)
  • ServiceEndpoints (49b48001-ca20-4adc-8111-5b60c903a50c)
  • ServiceHooks (cb594ebe-87dd-4fc9-ac2c-6a10a4c92046)
  • Chat (bc295513-b1a2-4663-8d1a-7017fd760d18)
  • Collection (3e65f728-f8bc-4ecd-8764-7e378b19bfa7)
  • Proxy (cb4d56d2-e84b-457e-8845-81320a133fbb)
  • Plan (bed337f8-e5f3-4fb9-80da-81e17d06e7a8)
  • Process (2dab47f9-bd70-49ed-9bd5-8eb051e59c02)
  • AccountAdminSecurity (11238e09-49f2-40c7-94d0-8f0307204ce4)
  • Library (b7e84409-6553-448a-bbb2-af228e07cbeb)
  • Environment (83d4c2e6-e57d-4d6e-892b-b87222b7ad20)
  • Project (52d39943-cb85-4d7f-8fa8-c6baac873819)
  • EventSubscription (58b176e7-3411-457a-89d0-c6d0ccb3c52b)
  • CSS (83e28ad4-2d72-4ceb-97b0-c7726d5502c3)
  • TeamLabSecurity (9e4894c3-ff9a-4eac-8a85-ce11cafdc6f1)
  • ProjectAnalysisLanguageMetrics (fc5b7b85-5d6b-41eb-8534-e128cb10eb67)
  • Tagging (bb50f182-8e5e-40b8-bc21-e8752a1e7ae2)
  • MetaTask (f6a4de49-dbe2-4704-86dc-f8ec1a294436)
  • Iteration (bf7bfa03-b2b7-47db-8113-fa2e002cc5b1)
  • Favorites (fa557b48-b5bf-458a-bb2b-1b680426fe8b)
  • Registry (4ae0db5d-8437-4ee8-a18b-1f6fb38bd34c)
  • Graph (c2ee56c9-e8fa-4cdd-9d48-2c44f697a58e)
  • ViewActivityPaneSecurity (dc02bf3d-cd48-46c3-8a41-345094ecc94b)
  • Job (2a887f97-db68-4b7c-9ae3-5cebd7add999)
  • WorkItemTracking (73e71c45-d483-40d5-bdba-62fd076f7f87)
  • StrongBox (4a9e8381-289a-4dfd-8460-69028eaa93b3)
  • Server (1f4179b3-6bac-4d01-b421-71ea09171400)
  • TestManagement (e06e1c24-e93d-4e4a-908a-7d951187b483)
  • SettingEntries (6ec4592e-048c-434e-8e6c-8671753a8418)
  • BuildAdministration (302acaca-b667-436d-a946-87133492041c)
  • Location (2725d2bc-7520-4af4-b0e3-8d876494731f)
  • Boards (251e12d9-bea3-43a8-bfdb-901b98c0125e)
  • UtilizationPermissions (83abde3a-4593-424e-b45f-9898af99034d)
  • WorkItemsHub (c0e7a722-1cad-4ae6-b340-a8467501e7ce)
  • WebPlatform (0582eb05-c896-449a-b933-aa3d99e121d6)
  • VersionControlPrivileges (66312704-deb5-43f9-b51c-ab4ff5e351c3)
  • Workspaces (93bafc04-9075-403a-9367-b7164eac6b5c)
  • CrossProjectWidgetView (093cbb02-722b-4ad6-9f88-bc452043fa63)
  • WorkItemTrackingConfiguration (35e35e8e-686d-4b01-aff6-c369d6e36ce0)
  • Discussion Threads (0d140cae-8ac1-4f48-b6d1-c93ce0301a12)
  • BoardsExternalIntegration (5ab15bc8-4ea1-d0f3-8344-cab8fe976877)
  • DataProvider (7ffa7cf4-317c-4fea-8f1d-cfda50cfa956)
  • Social (81c27cc8-7a9f-48ee-b63f-df1e1d0412dd)
  • Security (9a82c708-bfbe-4f31-984c-e860c2196781)
  • IdentityPicker (a60e0d84-c2f8-48e4-9c0c-f32da48d5fd1)
  • ServicingOrchestration (84cc1aa4-15bc-423d-90d9-f97c450fc729)
  • Build (33344d9c-fc72-4d6f-aba5-fa317101a7e9)
  • DashboardsPrivileges (8adf73b7-389a-4276-b638-fe1653f7efc7)
  • VersionControlItems (a39371cf-0841-4c16-bbd3-276e341bc052)

VSSPS:

  • EventSubscriber (2bf24a2b-70ba-43d3-ad97-3d9e1f75622f) (VSSPS)
  • EventSubscription (58b176e7-3411-457a-89d0-c6d0ccb3c52b) (VSSPS)
  • Registry (4ae0db5d-8437-4ee8-a18b-1f6fb38bd34c) (VSSPS)
  • Graph (c2ee56c9-e8fa-4cdd-9d48-2c44f697a58e) (VSSPS)
  • Invitation (ea0b4d1e-577a-4797-97b5-2f5755e548d5) (VSSPS)
  • SystemGraph (b24dfdf1-285a-4ea6-a55b-32549a68121d) (VSSPS)
  • Job (2a887f97-db68-4b7c-9ae3-5cebd7add999) (VSSPS)
  • CommerceCollectionSecurity (307be2d3-12ed-45c2-aacf-6598760efca7) (VSSPS)
  • StrongBox (4a9e8381-289a-4dfd-8460-69028eaa93b3) (VSSPS)
  • GroupLicensing (c6a4fd35-b508-49eb-8ea7-7189df5f3698) (VSSPS)
  • Server (1f4179b3-6bac-4d01-b421-71ea09171400) (VSSPS)
  • SettingEntries (6ec4592e-048c-434e-8e6c-8671753a8418) (VSSPS)
  • RemotableTemplateTest (ccdcb71c-4780-4a42-9bb4-8bce07a7628f) (VSSPS)
  • Location (2725d2bc-7520-4af4-b0e3-8d876494731f) (VSSPS)
  • WebPlatform (0582eb05-c896-449a-b933-aa3d99e121d6) (VSSPS)
  • DataProvider (7ffa7cf4-317c-4fea-8f1d-cfda50cfa956) (VSSPS)
  • Security (9a82c708-bfbe-4f31-984c-e860c2196781) (VSSPS)
  • IdentityPicker (a60e0d84-c2f8-48e4-9c0c-f32da48d5fd1) (VSSPS)
  • ServicingOrchestration (84cc1aa4-15bc-423d-90d9-f97c450fc729) (VSSPS)
Type: Guid
Parameter Sets: ByNamespaceId
Aliases:

Required: True
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-Descriptor

Descriptor of the token to be added.

Type: String
Parameter Sets: (All)
Aliases:

Required: True
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-Token

The security Token

Type: String
Parameter Sets: (All)
Aliases:

Required: True
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-AllowMask

Bitmask for Allow Permissions

Type: Int32
Parameter Sets: (All)
Aliases:

Required: True
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-DenyMask

Bitmask for Deny Permissions

Type: Int32
Parameter Sets: (All)
Aliases:

Required: True
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-OverwriteMask

Switch to overwrite the mask values rather than merge them.

Type: SwitchParameter
Parameter Sets: (All)
Aliases:

Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False

CommonParameters

This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters.

INPUTS

OUTPUTS

vsteam_lib.AccessControlEntry

NOTES

This is a low-level function. You should really use a high level function (Add-VSTeam...Permission / Set-VSTeam...Permission / Get-VSTeam...Permission) unless you know what you are doing.

Prerequisites:

Set the account and version that all calls will use with Set-VSTeamAccount. Default version sets to API version 3.0 (TFS2017) if not manually set.

tips:

  • check called version of the API with Get-VSTeamAPIVersion or Get-VSTeamInfo
  • use Set-VSTeamDefaultProject to set default project for every call
  • use Set-VSTeamDefaultAPITimeout to change the default timeout of 60 seconds for all calls.
  • use Profiles to load an account and the correct version