/
opt
/
gsutil
/
gslib
/
utils
/
__pycache__
/
up file
home
a +(WgI+ � @ s d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl Z dd l mZ dd lm Z ddlmZ eg d��Zeg d ��ZdZeddg�Zedddg�Zedddg�ZdZdd� Zdd� Zdd� Zdd� Zdd� Zd d!� Zd"d#� Zd$d%� Z d&d'� Z!d(d)� Z"dS )*z"Helper module for the IAM command.� )�absolute_import)�print_function)�division)�unicode_literals)�defaultdict)� namedtupleN)� protojson)�CommandException)�storage_v1_messages) �userzdeleted:userZserviceAccountzdeleted:serviceAccount�groupz deleted:group�domain� principalZprincipalSetZprincipalHierarchy)ZprojectOwnerZ projectEditorZ projectViewera� Assigning roles (e.g. objectCreator, legacyBucketOwner) for project convenience groups is not supported by gsutil, as it goes against the principle of least privilege. Consider creating and using more granular groups with which to assign permissions. See https://cloud.google.com/iam/docs/using-iam-securely for more information. Assigning a role to a project group can be achieved by setting the IAM policy directly (see gsutil help iam for specifics).�allUsers�allAuthenticatedUsers� BindingsTuple�is_grant�bindings�BindingsDictTuple� c C s | j dd� | jD �fS )aS Serializes the BindingsValueListEntry instances in a BindingsTuple. This is necessary when passing instances of BindingsTuple through Command.Apply, as apitools_messages classes are not by default pickleable. Args: bindings_tuple: A BindingsTuple instance to be serialized. Returns: A serialized BindingsTuple object. c S s g | ]}t �|��qS � )r �encode_message��.0�tr r �%/opt/gsutil/gslib/utils/iam_helper.py� <listcomp>[ � z*SerializeBindingsTuple.<locals>.<listcomp>�r r )Zbindings_tupler r r �SerializeBindingsTupleN s �r c C s | \}}t |dd� |D �d�S )Nc S s g | ]}t �tjj|��qS r )r �decode_message�apitools_messages�Policy�BindingsValueListEntryr r r r r a s ��z,DeserializeBindingsTuple.<locals>.<listcomp>r )r )Zserialized_bindings_tupler r r r r �DeserializeBindingsTuple^ s ��r$ c C s( t t�}| D ]}||j �|j� q|S )z�Reformats policy bindings metadata. Args: bindings: A list of BindingsValueListEntry instances. Returns: A {role: set(members)} dictionary. )r �set�role�update�members�r Ztmp_bindings�bindingr r r �BindingsMessageToUpdateDicth s r+ c C s, t t�}| D ]}||d �|d � q|S )a Reformats policy bindings metadata. Args: bindings: List of dictionaries representing BindingsValueListEntry instances. e.g.: { "role": "some_role", "members": ["allAuthenticatedUsers", ...] } Returns: A {role: set(members)} dictionary. r&