Managing cloud 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.
The cloud access policies can be managed by users with the resource-manager.admin or admin role for the cloud.
Creating an access policy for a cloud
To create an access policy for a cloud based on 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 cloud bind-access-policy \ --name <cloud_name> \ --access-policy-template-id=<policy_template_ID>Where:
--name: Name of the cloud to create the policy for. Instead of the cloud 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 cloud.
-
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_cloud_iam_policy_bindingresource to the configuration:resource "yandex_resource_manager_cloud_iam_policy_binding" "policy" { cloud_id = "<cloud_ID>" access_policy_template_id = "<policy_template_ID>" }Where
cloud_idis the cloud 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 Cloud resource or the CloudService/BindAccessPolicy gRPC API call.
The new access policy will apply to resources within all folders in the specified cloud.
Viewing the list of your cloud's access policies
To view a list of access policies created for a cloud:
If you do not have the Yandex Cloud CLI yet, install and initialize it.
Run the following command, specifying the name or ID of the cloud for which you want to view the created policies:
yc resource-manager cloud list-access-policy-bindings <cloud_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 Cloud resource or the CloudService/ListAccessPolicyBindings gRPC API call.
Deleting an access policy created for a cloud
To delete an access policy created for a cloud:
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 cloud.
-
Run this command:
yc resource-manager cloud unbind-access-policy \ --name <cloud_name> \ --access-policy-template-id=<policy_template_ID>Where:
--name: Name of the cloud to delete the policy for. Instead of the cloud 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 cloud.
-
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_cloud_iam_policy_bindingresource with the IDs of the policy template inaccess_policy_template_idand cloud incloud_id. -
Remove the section of that resource. The cloud resource itself should not be deleted.
-
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 Cloud resource or the CloudService/UnbindAccessPolicy gRPC API call.
The specified access policy will no longer apply to resources within all folders in the given cloud.