Managing folder access policies
Access policies are a Yandex Identity and Access Management mechanism that allows you to manage permissions for specific operations with Yandex Cloud resources. Access policies are based on templates and complement the role system for more flexible access management.
A folder’s access policies can be managed by users with the resource-manager.admin or admin role for the folder.
Creating an access policy for a folder
To create a folder access policy from a template without parameters:
If you do not have the Yandex Cloud CLI yet, install and initialize it.
-
Get a list of supported access policy templates with their IDs.
-
Run this command:
yc resource-manager folder bind-access-policy \ --name <folder_name> \ --access-policy-template-id=<policy_template_ID>Where:
--name: Name of the folder to create the policy for. Instead of the folder name, you can provide its ID in the--idparameter.--access-policy-template-id: ID of the template to use as the basis for the new access policy for the folder.
-
Make sure the policy was created.
With Terraform
Terraform is distributed under the Business Source License
For more information about the provider resources, see the guides on the Terraform
If you do not have Terraform yet, install it and configure the Yandex Cloud provider.
To manage infrastructure using Terraform under a service account or user accounts (a Yandex account, a federated account, or a local user), authenticate using the appropriate method.
-
Get the ID of the access policy template without parameters.
-
Add the
yandex_resource_manager_folder_iam_policy_bindingresource to the configuration:resource "yandex_resource_manager_folder_iam_policy_binding" "policy" { folder_id = "<folder_ID>" access_policy_template_id = "<policy_template_ID>" }Where
folder_idis the folder ID, andaccess_policy_template_idis the access policy template ID. This resource creates a policy template binding rather than assigning a role to a subject.For more information, see this provider guide.
-
Apply the configuration:
-
In the terminal, navigate to the configuration file directory.
-
Make sure the configuration is correct using this command:
terraform validateIf the configuration is valid, you will get this message:
Success! The configuration is valid. -
Run this command:
terraform planYou will see a list of resources and their properties. No changes will be made at this step. Terraform will show any errors in the configuration.
-
Apply the configuration changes:
terraform apply -
Type
yesand press Enter to confirm the changes.
-
Use the bindAccessPolicy REST API method for the Folder resource or the FolderService/BindAccessPolicy gRPC API call.
The created access policy will apply to all resources in the specified folder.
Viewing the list of your folder’s access policies
To view a list of access policies created for a folder:
If you do not have the Yandex Cloud CLI yet, install and initialize it.
Run this command, specifying the name or ID of the folder for which you want to view the created policies:
yc resource-manager folder list-access-policy-bindings <folder_name_or_ID>
Result:
+---------------------------------------------+-------------------------------------------------+
| ACCESS POLICY TEMPLATE ID | PARAMETERS |
+---------------------------------------------+-------------------------------------------------+
| backup.denyRemoveProtection | |
| serverless.containers.restrictNetworkAccess | allowed_vpc_network_ids=[enphfcfseu9i********], |
| | allowed_src_ips=[192.168.1.12/24] |
+---------------------------------------------+-------------------------------------------------+
Use the listAccessPolicyBindings REST API method for the Folder resource or the FolderService/ListAccessPolicyBindings gRPC API call.
Deleting an access policy created for a folder
To delete an access policy created for a folder:
If you do not have the Yandex Cloud CLI yet, install and initialize it.
-
Get a list of IDs of access policy templates assigned for the folder.
-
Run this command:
yc resource-manager folder unbind-access-policy \ --name <folder_name> \ --access-policy-template-id=<policy_template_ID>Where:
--name: Name of the folder to delete the policy for. Instead of the folder name, you can provide its ID in the--idparameter.--access-policy-template-id: ID of the access policy template you want to delete for the specified folder.
-
Make sure the policy was deleted.
With Terraform
Terraform is distributed under the Business Source License
For more information about the provider resources, see the guides on the Terraform
If you do not have Terraform yet, install it and configure the Yandex Cloud provider.
To manage infrastructure using Terraform under a service account or user accounts (a Yandex account, a federated account, or a local user), authenticate using the appropriate method.
-
In the configuration, locate the
yandex_resource_manager_folder_iam_policy_bindingresource with the IDs of the policy template inaccess_policy_template_idand folder infolder_id. -
Remove the section of that resource. Do not delete the folder resource itself.
-
Apply the configuration:
-
In the terminal, navigate to the configuration file directory.
-
Make sure the configuration is correct using this command:
terraform validateIf the configuration is valid, you will get this message:
Success! The configuration is valid. -
Run this command:
terraform planYou will see a list of resources and their properties. No changes will be made at this step. Terraform will show any errors in the configuration.
-
Apply the configuration changes:
terraform apply -
Type
yesand press Enter to confirm the changes.
Make sure the plan removes only the correct policy binding. These steps apply to the binding managed by the current Terraform configuration.
-
Use the unbindAccessPolicy REST API method for the Folder resource or the FolderService/UnbindAccessPolicy gRPC API call.
The specified access policy will no longer apply to resources in the specified folder.