es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo asignar RBAC para ARM a la identidad administrada

Una aplicación necesita listar la asignación de roles de RBAC para un recurso dado. Esto funciona localmente usando mis propias credenciales (AzureCliCredential), pero no cuando se implementa en Azure usando ManagedIdentityCredential. Supongo que esto se debe a que soy el propietario de la suscripción.

¿Cómo autorizaría al MSI a tener permisos de lectura/lista con respecto al ARM en sí mismo?

Se utiliza el siguiente código.

    public static async Task<roleassignmentsresult> GetRoleAssignmentsFor(string resource)
    {
        const string VERSION = "2018-01-01-preview";
        string url = $"https://management.azure.com/{resource}/providers/Microsoft.Authorization/roleAssignments?$filter=atScope()&api-version={VERSION}";
        Stream respBody = await _request(url);
        var result = await JsonSerializer.DeserializeAsync<roleassignmentsresult>(respBody);
        return result;
    }

“`csharp
private static async Task<stream> _request(string url)
{
HttpRequestMessage req = new(HttpMethod.Get, new Uri(url));

<pre><code>string[] scopes = { "https://management.azure.com" };
ManagedIdentityCredential cred = new();
TokenRequestContext ctx = new(scopes);
return await cred.GetTokenAsync(ctx);

req.Headers.Authorization = new AuthenticationHeaderValue("Bearer", jwt.Token);
HttpResponseMessage res = await new HttpClient.SendAsync(req);
return await res.Content.ReadAsStreamAsync();
</code></pre>

}
“`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para autorizar la Identidad Administrada a tener permisos de lectura/listado con respecto al Administrador de Recursos de Azure, necesitas otorgar el rol correspondiente a la identidad administrada en el nivel de suscripción o grupo de recursos. Esto se puede hacer a través del Portal de Azure o utilizando Azure CLI o PowerShell.

    Aquí tienes un ejemplo de comando Azure CLI para otorgar el rol “Reader” a la identidad administrada en el nivel de suscripción:

    az role assignment create --role "Reader" --assignee-object-id <managed-identity-object-id> --subscription <subscription-id>
    

    Reemplaza <managed-identity-object-id> con el ID de objeto de la identidad administrada y <subscription-id> con el ID de la suscripción.

    También puedes otorgar el rol en el nivel del grupo de recursos si tu aplicación solo necesita acceso a un recurso específico o a un conjunto de recursos.

    Una vez que se otorga el rol a la identidad administrada, puedes usar ManagedIdentityCredential para autenticar y acceder a los recursos.

    Ten en cuenta que la API de asignación de roles RBAC que estás utilizando (Microsoft.Authorization/roleAssignments) requiere el permiso de lectura Microsoft.Authorization/roleAssignments/read. Es posible que necesites otorgar permisos adicionales dependiendo de los requisitos de tu aplicación.

Comments are closed.