Я хочу программно отразить роли AWS IAM в моей федерации SAML, используя лямбду, с лямбда , как этот разработчик
Я хочу проверить, какие наименьшие привилегии для доступа должны иметь учетные данные для программного обеспечения автоматизации в Azure, поэтому я попробовал простой скрипт на python, чтобы имитировать это (см. Ниже).
Я могу обновить значение и получить обновленное значение, но когда я захожу на портал Azure и смотрю файл манифеста, он не изменился.
Теперь мне интересно, почему это так: происходит ли кэширование в CLI Python для Azure? Не правильно ли я улавливаю некоторые основные ошибки?
from azure.graphrbac import GraphRbacManagementClient
from azure.common.credentials import UserPassCredentials
from azure.graphrbac.models.app_role import AppRole
credentials = UserPassCredentials(
username='my-user@company',
password='my-ad-password',
resource="https://graph.windows.net"
)
tenant_id = "guid-of-my-company-tenant-from-ad-admins"
graphrbac_client = GraphRbacManagementClient(
credentials,
tenant_id
)
oid = "guid-of-object-id"
principal = graphrbac_client.service_principals.get(object_id=oid)
print('display_name: {}'.format(principal.display_name))
try:
for role in principal.app_roles:
if( role.display_name == 'AWSRoleInManifestFile'):
print("is_enabled: ", role.is_enabled)
# Verify update works by changing one role to isEnabled = false
for role in principal.app_roles:
if( role.display_name == 'AWSRoleInManifestFile'):
role.is_enabled = False
# Update using the api.
retval = graphrbac_client.service_principals.update(oid, principal)
except Exception as e:
print("Exception occured.", e)
# retrieve the values again to see if the change is done.
principal = graphrbac_client.service_principals.get(object_id=oid)
for role in principal.app_roles:
if( role.display_name == 'AWSRoleInManifestFile'):
print("role.is_enabled: ", role.is_enabled)
print("done.")
Используя необработанный параметр для вызова обновления, я вижу, что отправляется запрос PATCH, а ответ - 204.
retval = graphrbac_client.service_principals.update(object_id=oid, parameters=principal, custom_headers=None, raw=True)