Condividi tramite


Impostare elenchi di controllo di accesso tramite il file di Manifest.xml

di Tali Smith

Introduzione

Esistono diversi modi per impostare gli elenchi di controllo di accesso (ACL), inclusi gli strumenti da riga di comando, ad esempio Icacls.exe. Gli host PHP usano in genere la riga di comando. È anche possibile impostare gli elenchi di controllo di accesso nel file Manifest.xml; questi sono i meccanismi applicati quando si installa un'applicazione tramite lo strumento di distribuzione Web (WDT).

Per impostazione predefinita, WDT installa tutti i file e le directory senza modificare le autorizzazioni esistenti. Nella maggior parte dei casi, ciò significa che l'applicazione ha accesso in lettura solo ai file e alle directory installati. Se l'applicazione deve essere in grado di scrivere in qualsiasi file o directory, è possibile specificare i file o le directory con una direttiva setAcl nel file Manifest.xml. L'elemento setAclResourceType definisce se il percorso rappresenta un file o una directory.

<setAcl 
    path="application/sites/default/settings.php" 
    setAclResourceType="File" 
    setAclAccess="Modify" 
    setAclUser="anonymousAuthenticationUser" />

Per assicurarsi che l'ACL venga applicato alla directory corretta, è necessario fornire anche un parametro nascosto per assicurarsi che l'ACL venga applicato alla directory denominata rispetto a AppPath in cui è installato.

<!-- This is the parameter that is used to set ACLs, it's set to the application path filled in by the user --> 
<parameter 
name="SetAclParameter1" 
defaultValue="{AppPath}/sites/default/settings.php" 
tags="Hidden"> 
<parameterEntry 
  type="ProviderPath" scope="setAcl" 
  match="Application/sites/default/settings.php" /> 
</parameter>

Se non è impostato alcun ACL in un file o in una directory, è molto probabile che l'ACL sia impostato per consentire l'accesso in lettura al file o alla directory. Gli ACL sono specifici, pertanto la concessione dell'accesso in scrittura non concede necessariamente l'accesso in lettura. Se è necessario scrivere in un file o in una directory, è necessario aggiungere "read, write". Se è necessario essere in grado di enumerare i file in una directory, è necessario aggiungere "ListDirectory". Si noti che l'accesso in scrittura non concede l'accesso alla modifica. Se è necessario modificare i file dopo la scrittura su disco, è necessario impostare in modo esplicito l'accesso per modificare l'accesso. Esistono alcune autorizzazioni che sono combinazioni di altre autorizzazioni; Ad esempio, "Modify" include "Read", "Write", "Execute" e "Delete".

Per concedere autorizzazioni di lettura, esecuzione e scrittura nella directory del file system MyApp per l'utente Test, aggiungere la riga seguente al file Manifest.xml :

<setAcl path="MyApp" setAclAccess="ReadAndExecute, Write" setAclUser="Test" />

Per impostare l'ACL nel percorso MyApp/Upload per consentire agli utenti anonimi di caricare il contenuto, aggiungere la riga seguente al file Manifest.xml :

<setAcl path="MyApp/Upload" setAclAccess="Write" setAclUser="anonymousAuthenticationUser" />

Si noti che anonymousAuthenticationUser è un token speciale che si risolve nell'identità di autenticazione anonima configurata.

Per concedere l'accesso in lettura alla cartella MyApp\Data per l'identità del pool di applicazioni, aggiungere la riga seguente al file Manifest.xml :

<setAcl path="MyApp/Data" setAclAccess="Read" />

Si noti che setAclUser non viene usato qui. Il valore predefinito per questa opzione è Identità pool di applicazioni, quindi è possibile ignorare tale riga.

Si noti che è considerata una procedura di sicurezza rischiosa per concedere l'accesso "Scrittura" o "Modifica" all'intero albero dell'applicazione applicando un ACL alla radice dell'applicazione. Gli ACL devono essere il più possibile limitativi e granulari senza limitare le funzionalità delle applicazioni.

Se si ha familiarità con le autorizzazioni UNIX o Linux, i privilegi descritti sono equivalenti alle autorizzazioni "Proprietario". Anche se i privilegi group e world possono essere impostati tramite vari elenchi di controllo di accesso all'esterno di WDT, vengono impostate solo le autorizzazioni di classe "Proprietario". La tabella seguente mostra gli equivalenti del sistema operativo Windows® di varie autorizzazioni con maschera a bit Linux:

Linux Windows Linux Windows
0 Nessun equivalente a Nessuno 4 Lettura
1 Execute 5 ReadAndExecute
2 Scrittura 6 Lettura, scrittura
3 Scrittura, esecuzione 7 Modifica

Vedere l'elenco completo dei vari diritti utente e le relative descrizioni. Sono inoltre disponibili alcune linee guida ACL specifiche di Internet Information Services (IIS).

Il token anonymousAuthenticationUser viene confrontato automaticamente con l'ID configurato dal sito Web e che verrà usato per l'autenticazione anonima. Poiché questo ID è configurato dall'amministratore del sito Web, è consigliabile usare anonymousAuthenticationUser per le applicazioni PHP e non usare setAclUser per le applicazioni microsoft® ASP.NET (a meno che l'applicazione non abbia una necessità specifica per un utente di gestire la proprietà dei file).

Le applicazioni PHP vengono in genere eseguite come utente anonimo perché le impostazioni FastCGI impostano in genere la rappresentazione su True(esegui come utente anonimo). ASP.NET le applicazioni vengono in genere eseguite come identità del processo di lavoro (identità del pool di applicazioni). Se setAclUseris non specificato, setAcldirective usa l'identità del pool di applicazioni dell'applicazione come ID per l'autorizzazione.