-
Diese
Erfindung bezieht sich auf eine Zugriffsrecht-Widerspruchsdetektionsvorrichtung, welche
für ein
vorherbestimmtes Programm einen Widerspruch detektiert, der zwischen
einer Laufzeit-Zugriffsrechtsliste, die eine Sammlung von Zugriffsrechten
ist, die verwendet werden, wenn das auf der Basis einer Zugriffsrechtsbeschränkung auszuführende vorherbestimmte
Programm ausgeführt
wird, und einer Entwicklungszeit-Zugriffsrechtsliste, die eine Sammlung
von Zugriffsrechten ist, die erteilt werden, wenn das Programm entwickelt
wird, auftritt, und auf eine Analyseregel-Erstellungsvorrichtung,
welche eine vorherbestimmte Analyseregel erstellt, die von der Zugriffsrecht-Widerspruchsdetektionsvorrichtung eingesetzt
wird.
-
In
den letzten Jahren wurden mit der Weiterentwicklung der Netztechnologie
Programme populär,
die auf einer als "Laufzeitumgebung" bezeichneten Software
laufen, und die nicht von einer Plattform gemäß einem OS oder einem Gerätetyp (Computer) abhängig sind.
Solche Programme enthalten beispielsweise ein Java-Programm, das
in Java (Warenzeichen) erstellt wird, die eine objektorientierte
Programmsprache ist.
-
Das
Java-Programm ist dadurch gekennzeichnet, dass es eine Zugriffssteuerung über eine Dateioperation
und Netzverbindung ausüben
kann. Das Java-Programm steuert nämlich den Zugriff durch die
Definition von Zugriffsrechten, welche notwendig sind, um die Programme
auszuführen,
die ein Sicherheitsrisiko wie das Lesen einer Datei und die Verbindung
mit dem Netz involvieren.
-
Spezifisch,
wie in 18 gezeigt, werden verschiedene
Klassen von Zugriffsrechten für
Typen in Übereinstimmung
mit Ausdruckformaten definiert, die mit der Standard-Policy-Datei
des Java 2 konform sind, und die Zugriffsrechte werden gemäß Zielen und
Aktionen strikt ausgedrückt.
Mit der Zugriffssteuerung "permit
reading/tmp/hoge files" wird
beispielsweise ein Zugriffsrecht
"java.io.FilePermisson"/tmp/hoge", "read" definiert.
-
Zusätzlich wird
ein Programm ausgeführt, das
ein Sicherheitsrisiko involviert, um dem Aufruf einer spezifischen
Methode zu entsprechen. Daher werden, wie in 19 gezeigt,
vorherbestimmte Zugriffsrechte vergeben, um jeweils Methoden zu
entsprechen, die Zugriffsrechte erfordern. Für eine Methode "java.io.FileInputStream.FileInputStream (String
name)" wird beispielsweise
ein Zugriffsrecht "java.io.FilePermission"[name]", "read" vergeben, um der
Methode zu entsprechen.
-
Wenn
eine Methode aufgerufen wird, um ein Programm auszuführen, wird
auf ein Zugriffsrecht Bezug genommen, für das eine Person autorisiert
ist, die die Methode aufruft. Solange die Person ein Zugriffsrecht
hat, das notwendig ist, um die Methode aufzurufen, darf die Person
die Methode ausführen. Auf
diese Weise wird eine Zugriffssteuerung für jedes Java-Programm auf der
Basis der Beschränkung
von Zugriffsrechten ausgeübt,
wenn das Programm ausgeführt
wird.
-
Herkömmlich wird
ein Programmausführungstest
für ein
auf der Basis der Beschränkung
von Zugriffsrechten auszuführendes
Programm durchgeführt,
um keine Sicherheitsausnahme zwischen Zugriffsrechten, die verwendet
werden, wenn das Programm ausgeführt
wird, und Zugriffsrechten, die vergeben werden, wenn das Programm
entwickelt wird, zu verursachen.
-
Wenn
das Java-Programm entwickelt wird, werden spezifisch Zugriffsrechte,
die das Java-Programm erfordert, im Voraus erteilt, und das Programm
wird im Hinblick auf die so im Voraus erteilten Zugriffsrechte erstellt.
Für ein
Java-Programm, das tatsächlich erstellt
wird, sind jedoch aufgrund eines Paketfehlers oder dgl. zu verwendende
Zugriffs rechte nicht unbedingt auf jene begrenzt, die zur Zeit der Entwicklung
erteilt werden.
-
Wenn
ein Benutzer beispielsweise ein Zugriffsrecht ausübt, das
breiter (weiter) ist als jenes, das zur Zeit der Entwicklung eines
Java-Paketprogramms vergeben wird, tritt bei der Ausführung des Programms
eine Sicherheitsausnahme auf. Dies enthält nämlich einen Fall, in dem, obwohl
ein Zugriffsrecht "permit
reading/tmp/hoge files" zur
Zeit der Entwicklung eines Programms erteilt wird, ein Zugriffsrecht "permit reading all
files" für ein Java-Paketprogramm
ausgeübt
wird.
-
Unter
diesen Umständen
wird untersucht, ob ein Widerspruch (Unterschied in der Breite der
Beschränkung)
zwischen einem Zugriffsrecht, das zu verwenden ist, wenn ein Java-Programm ausgeführt wird,
und jenem, das erteilt wird, wenn das Programm entwickelt wird,
auftritt oder nicht, indem ein Programmausführungstest durchgeführt wird.
Wenn dieser Ausführungstest
irgendeinen Widerspruch zwischen den beiden Zugriffsrechten detektiert,
wird das Programm korrigiert, um mit dem Zugriffsrecht konform zu
sein, das zur Zeit der Entwicklung erteilt wird, um dadurch eine
Sicherheitsausnahme zu eliminieren.
-
Dennoch
hat die herkömmliche
Technik insofern einen Nachteil, als ein Widerspruch, der zwischen
einem Zugriffsrecht, das verwendet wird, wenn ein Programm ausgeführt wird,
und jenem, das erteilt wird, wenn das Programm entwickelt wird,
auftritt, nicht mit großer
Genauigkeit detektiert werden kann. Mit anderen Worten, gemäß der herkömmlichen Technik
wird ein Ausführungstest
einfach an einem Programm durchgeführt, das im Hinblick auf Zugriffsrechte
erstellt wird, die erteilt werden, wenn das Programm entwickelt
wird, und das Ergebnis des Ausführungstests
deckt nicht immer alle Widersprüche auf.
Auch wenn ein Ausfüh rungstest
wiederholt durchgeführt
wird, gibt es daher selbstverständlich eine
Grenze für
die Detektion aller Widersprüche.
-
Demgemäß ist ein
ziemlich wichtiges Problem, das zu lösen ist, wie der Widerspruch
detektiert werden kann, der zwischen einem Zugriffsrecht, das verwendet
wird, wenn ein Programm ausgeführt
wird, und jenem, das erteilt wird, wenn das Programm entwickelt
wird, auftritt. Zweckmäßig ist
nicht ein Verfahren der wiederholten Durchführung eines Ausführungstests,
sondern ein Verfahren, das die Detektion eines Widerspruchs leicht
und sicher ermöglicht.
-
Die
US-6 092 194-A offenbart eine Zugriffsrecht-Widerspruchsdetektionsvorrichtung,
ein Verfahren und ein Programm gemäß den Oberbegriffen der beigeschlossenen
Ansprüche
1, 11 bzw. 21. Das Verfahren involviert einen Empfang eines ankommenden
herunterladbaren Anwendungsprogramms, das an einen Client adressiert
ist, durch einen Server, der als Gateway für den Client dient; einen Vergleich, durch
den Server, von zum herunterladbaren Anwendungsprogramm gehörenden herunterladbaren
Sicherheitsprofildaten, welche herunterladbaren Sicherheitsprofildaten
eine Liste verdächtiger
Computeroperationen, die von dem herunterladbaren Anwendungsprogramm
versucht werden können,
gegen eine Sicherheitsrichtlinie enthalten, um zu bestimmen, ob
die Sicherheitsrichtlinie verletzt wurde; und das Verhindern der
Ausführung
des herunterladbaren Anwendungsprogramms durch den Client, wenn
die Sicherheitsrichtlinie verletzt wurde.
- JENSEN T et al: "VERIFICATION OF CONTROL FLOW
BASED SECURITY PROPERTIES" 9.
Mai 1999 (1999-05-09), PROCEEDINGS OF THE 1999 IEEE SYMPOSIUM ON
SECURITY AND PRIVACY. OAKLAND, CA, MAY 9–12, 1999, PROCEEDINGS OF THE
IEEE SYMPOSIUM ON SECURITY AND PRIVACY, LOS ALAMITOS, CA: IEEE COMP.
SOC, US, 5.89–103,
XP000871975 ISBN: 0-7695-0177-X, offenbaren ein Sicherheitsmodell
zur Verwendung mit Java-Programmen und dgl., bei dem automatisch verifiziert
wird, ob eine lokale Sicherheitsprüfungen verwendende Implementation
eine globale Sicherheitseigenschaft erfüllt. Diese Verifikation involviert das
Mapping eines unendlichen Übergangssystems in
ein endliches System, das zu dem ursprünglichen in Bezug auf eine
gegebene Eigenschaft äquivalent ist.
- GONG L et al: "Implementing
Protection Domains in the Java (TM) Development Kit 1.2" PROCEEDINGS INTERNET
SOCIETY SYMPOSIUM ON NETWORK AND DISTRIBUTED SYSTEM SECURITY, März 1988
(1988-03), XP002304112, offenbaren die Entwicklung und Implementation
des Konzepts von "Schutzdomänen" im Java Entwicklungskit
1.2. Die Java-Sandbox im JDK 1.0 ist in gewissem Sinn eine Schutzdomäne mit einer
festgelegten Begrenzung. Im JDK 1.2 werden Schutzdomänen Berechtigungen erteilt,
und Klassen und Objekte gehören
zu Schutzdomänen.
Diese Indirektion, wo Berechtigungen Klassen und Objekten nicht
direkt erteilt werden, ist entwicklungsbedingt, da in der Zukunft
Schutzdomänen
durch Benutzerauthentifizierung und Delegation weiter charakterisiert
werden können,
so dass derselbe Code verschiedene Berechtigungen erhalten könnte, wenn
er "für" verschiedene Benutzer
oder Auftraggeber läuft.
-
Eine
Ausführungsform
der vorliegenden Erfindung kann eine Zugriffsrecht-Widerspruchsdetektionsvorrichtung
vorsehen, die leicht und sicher einen Widerspruch detektieren kann,
der zwischen einem Zugriffsrecht, das zu verwenden ist, wenn ein
Programm ausgeführt
wird, und einem Zugriffsrecht, das erteilt wird, wenn das Programm
entwickelt wird, auftritt. Eine weitere Ausführungsform der vorliegenden Erfindung
kann eine Analyseregel-Erstellungsvorrichtung vorsehen, die automatisch
eine vorherbestimmte Analyseregel erstellt, die von der Zugriffsrecht-Widerspruchsdetektionsvorrichtung
einzusetzen ist, und die die Effizienz bei der Zu griffsrecht-Widerspruchsdetektionsverarbeitung
verbessern kann.
-
Die
Zugriffsrecht-Widerspruchsdetektionsvorrichtung gemäß einem
Aspekt der vorliegenden Erfindung enthält eine Detektionseinheit,
die einen Quellcode des Programms analysiert, und die sequentiell
Methodensignaturen detektiert, die in dem Programm enthalten sind,
und eine Meldungseinheit, die ein Vergleichsergebnis meldet. Die
Vorrichtung ist gekennzeichnet durch eine Analyseeinheit, welche sequentiell
die von der Detektionseinheit detektierten Methodensignaturen analysiert
und eine Laufzeit-Zugriffsrechtsliste auf der Basis einer vorherbestimmten Regel
ermittelt, die Methodensignaturen und die Zugriffsrechte spezifiziert,
welche möglicherweise
in dem Programm enthalten sein können,
so dass die Methodensignaturen jeweils den Zugriffsrechten entsprechen,
und eine Vergleichseinheit, welche die Laufzeit-Zugriffsrechtsliste,
die von der Analyseeinheit ermittelt wird, mit der Entwicklungszeit-Zugriffsrechtsliste
(in der Breite der Beschränkung)
auf der Basis einer vorherbestimmten Vergleichsregel vergleicht,
die Breiten (in Bezug auf Beschränkungen) der
Zugriffsrechte spezifiziert, welche möglicherweise in dem Programm
enthalten sein können.
Die Meldungseinheit meldet das Vergleichsergebnis der Vergleichseinheit.
-
Die
Analyseregel-Erstellungsvorrichtung gemäß einem weiteren Aspekt der
vorliegenden Erfindung enthält
eine Detektionseinheit, die einen Quellcode des Programms analysiert,
und die sequentiell die Methodensignaturen detektiert, die in dem
Programm enthalten sind, eine Analyseeinheit, welche, wenn die Methodensignaturen,
die von der Detektionseinheit detektiert werden, bereits durch die
vorherbestimmte Analyseregel spezifiziert sind, die spezifizierten
Methodensignaturen analysiert und die Zugriffsrechte ermit telt,
und welche, wenn die Methodensignaturen, die von der Detektionseinheit
detektiert werden, nicht durch die vorherbestimmte Analyseregel
spezifiziert sind, sondern die Methodensignaturen, die durch die
vorherbestimmte Analyseregel spezifiziert sind, intern aufgerufen
werden, jeweils die Methodensignaturen analysiert, die intern aufgerufen
werden, und die Zugriffsrechte ermittelt, und eine Analyseregel-Erstellungseinheit,
die, wenn die Analyseeinheit jeweils die Methodensignaturen analysiert,
die intern aufgerufen werden, und die Zugriffsrechte ermittelt,
eine neue Analyseregel erstellt, welche die ermittelten Zugriffsrechte
und die Methodensignaturen spezifiziert, die von der Detektionseinheit detektiert
werden, so dass die ermittelten Zugriffsrechte jeweils den detektierten
Methodensignaturen entsprechen.
-
Das
Zugriffsrecht-Widerspruchsdetektionsverfahren gemäß noch einem
weiteren Aspekt der vorliegenden Erfindung enthält einen Detektionsschritt
des Analysierens eines Quellcodes des Programms, und des sequentiellen
Detektierens von Methodensignaturen, die in dem Programm enthalten
sind, und einen Meldungsschritt des Meldens eines Vergleichsergebnisses.
Das Verfahren ist gekennzeichnet durch einen Analyseschritt des
sequentiellen Analysierens der in dem Detektionsschritt detektierten
Methodensignaturen und des Ermittelns einer Laufzeit-Zugriffsrechtsliste
auf der Basis einer vorherbestimmten Regel, die Methodensignaturen und
die Zugriffsrechte spezifiziert, welche möglicherweise in dem Programm
enthalten sein können,
so dass die Methodensignaturen jeweils den Zugriffsrechten entsprechen,
und einen Vergleichsschritt des Vergleichens der Laufzeit-Zugriffsrechtsliste,
die in dem Analyseschritt ermittelt wird, mit der Entwicklungszeit-Zugriffsrechtsliste
in der Breite (der Beschränkung)
auf der Basis einer vorherbestimmten Vergleichsregel, die Breiten
(in Bezug auf Beschränkungen)
der Zugriffsrechte spezifiziert, welche möglicherweise in dem Programm
enthalten sein können. Der
Meldungsschritt meldet ein Vergleichsergebnis in dem Vergleichsschritt.
-
Das
Analyseregel-Erstellungsverfahren gemäß noch einem weiteren Aspekt
der vorliegenden Erfindung enthält
einen Detektionsschritt des Analysierens eines Quellcodes des Programms,
und des sequentiellen Detektierens der Methodensignaturen, die in
dem Programm enthalten sind, einen Analyseschritt, wenn die Methodensignaturen,
die in dem Detektionsschritt detektiert werden, bereits durch die vorherbestimmte
Analyseregel spezifiziert werden, des Analysierens der spezifizierten
Methodensignaturen und des Ermittelns der Zugriffsrechte, und, wenn
die Methodensignaturen, die in dem Detektionsschritt detektiert
werden, nicht durch die vorherbestimmte Analyseregel spezifiziert
werden, sondern die Methodensignaturen, die durch die vorherbestimmte
Analyseregel spezifiziert werden, intern aufgerufen werden, des
Analysierens jeweils der Methodensignaturen, die intern aufgerufen
werden, und des Ermittelns der Zugriffsrechte, und einen Analyseregel-Erstellungsschritt,
wenn jeweils in dem Analyseschritt die Methodensignaturen, die intern
aufgerufen werden, analysiert werden, und die Zugriffsrechte ermittelt
werden, des Erstellens einer neuen Analyseregel, welche die ermittelten
Zugriffsrechte und die Methodensignaturen spezifiziert, die in dem
Detektionsschritt detektiert werden, so dass die ermittelten Zugriffsrechte
jeweils den detektierten Methodensignaturen entsprechen.
-
Das
Computerprogramm gemäß noch einem weiteren
Aspekt der vorliegenden Erfindung realisiert die verfahren gemäß der vorliegenden
Erfindung auf einem Computer.
-
Als
vorherbestimmte Vergleichsregel kann das Ausmaß verwendet werden, in dem
ein Zugriffsrecht einen Zugriff beschränkt oder verbietet.
-
Anhand
bloßer
Beispiele wird auf die beigeschlossenen Zeichnungen Bezug genommen,
in denen:
-
1 ein
Blockbild ist, das die Konfiguration einer Zugriffsrecht-Widerspruchsdetektionsvorrichtung
gemäß einer
ersten Ausführungsform
zeigt;
-
2 eine
Ansicht ist, die ein konkretes Beispiel einer Methodensignatur-Detektionsverarbeitung
in der ersten Ausführungsform
zeigt;
-
3 eine
Ansicht ist, die ein Beispiel der Struktur von Informationen zeigt,
die von einer Analyseregel spezifiziert werden;
-
4 eine
Ansicht ist, die ein konkretes Beispiel einer Zugriffsrecht-Analyseverarbeitung
in der ersten Ausführungsform
zeigt;
-
5 eine
Ansicht ist, die ein konkretes Beispiel der Zugriffsrecht-Analyseverarbeitung
in der ersten Ausführungsform
zeigt;
-
6 eine
Ansicht ist, die ein Beispiel der Struktur von Informationen zeigt,
die durch eine Vergleichsregel spezifiziert werden;
-
7 eine
Ansicht ist, die ein konkretes Beispiel eines Vergleichsergebnisses
in der ersten Ausführungsform
zeigt;
-
8 ein
Flussdiagramm ist, das Prozeduren für eine Zugriffsrecht-Widerspruchsdetektionsverarbeitung
in der ersten Ausführungsform
zeigt;
-
9 ein
Blockbild ist, das die Konfiguration einer Zugriffsrecht-Widerspruchsdetektionsvorrichtung
gemäß einer
zweiten Ausführungsform
zeigt;
-
10 eine
Ansicht ist, die ein konkretes Beispiel einer Kompressionsverarbeitung
in der zweiten Ausführungsform
zeigt;
-
11 ein
Blockbild ist, das die Konfiguration einer Zugriffsrecht-Widerspruchsdetektionsvorrichtung
gemäß einer
dritten Ausführungsform
zeigt;
-
12 eine
Ansicht ist, die ein konkretes Beispiel einer Kompressionsverarbeitung
in der dritten Ausführungsform
zeigt;
-
13 ein
Blockbild ist, das die Konfiguration einer Zugriffsrecht-Widerspruchsdetektionsvorrichtung
gemäß einer
vierten Ausführungsform
zeigt;
-
14 eine
Ansicht ist, die ein konkretes Beispiel einer Ausgabeverarbeitung
in der vierten Ausführungsform
zeigt;
-
15 ein
Blockbild ist, das die Konfiguration einer Analyseregel-Erstellungsvorrichtung
gemäß einer
fünften
Ausführungsform
zeigt;
-
16 eine
Ansicht ist, die ein konkretes Beispiel einer Analyseregel-Erstellungsverarbeitung in
der fünften
Ausführungsform
zeigt;
-
17 ein
Blockbild ist, das die Konfiguration einer Zugriffsrecht-Widerspruchsdetektionsvorrichtung
gemäß einer
sechsten Ausführungsform zeigt;
-
18 eine
Ansicht ist, die Beispiele von Zugriffsrechten zeigt;
-
19 eine
Ansicht ist, die Entsprechungsbeispiele von Zugriffsrechten und
Methoden zeigt.
-
Im
Nachstehenden werden Ausführungsformen
einer Zugriffsrecht-Widerspruchsdetektionsvorrichtung und einer
Analyseregel-Erstellungsvorrichtung gemäß dieser Erfindung mit Bezugnahme
auf die beigeschlossenen Zeichnungen detailliert erläutert. In
den folgenden Ausführungsformen
werden Fälle
der Detektion eines Zugriffsrechtwiderspruchs in Bezug auf ein Java-Programm
erklärt.
-
Zuerst
werden der Umriss und die Hauptmerkmale einer Zugriffsrecht-Widerspruchsdetektionsvorrichtung
gemäß der ersten
Ausführungsform erläutert. 1 ist
ein Blockbild, das die Konfiguration der Zugriffsrecht-Widerspruchsdetektionsvorrichtung
gemäß der ersten
Ausführungsform
zeigt. Die in 1 gezeigte Zugriffsrecht-Widerspruchsdetektionsvorrichtung
soll allgemein für
ein Java-Programm einen Widerspruch detektieren, der zwischen einer Laufzeit-Zugriffsrechtsliste,
welche eine Sammlung von Zugriffsrechten ist, die zu verwenden sind,
wenn ein Java-Programm ausgeführt
wird, das auf der Basis der Beschränkung von Zugriffsrechten ausgeführt wird,
und einer Entwicklungszeit-Zugriffsrechtsliste, welche eine Sammlung
von Zugriffsrechten ist, die erteilt werden, wenn das Java-Programm
entwickelt wird, auftritt.
-
Diese
Zugriffsrecht-Widerspruchsdetektionsvorrichtung 10 ist
hauptsächlich
durch eine Zugriffsrecht-Widerspruchsdetektionsverarbeitung gekennzeichnet.
Spezifisch wird die Laufzeit-Zugriffsrechtsliste aus dem Quellcode
des Programms erhalten. Auf der Basis einer vorherbestimmten Regel,
welche die Breiten (von Beschränkungen)
von Zugriffsrechten spezifiziert, die möglicherweise in dem Programm enthalten
sein können,
wird die Laufzeit-Zugriffsrechtsliste mit der Entwicklungszeit-Zugriffsrechtsliste
in der Breite (z.B. Klasse oder Stufe) der Beschränkung verglichen.
Durch die Meldung des Ergebnisses davon kann der Widerspruch, der
zwischen einem Zugriffsrecht, das zu verwenden ist, wenn das Programm
ausgeführt
wird, und jenem, das erteilt wird, wenn das Programm entwickelt
wird, leicht und sicher detektiert werden.
-
Als
Nächstes
wird die Konfiguration der Zugriffsrecht-Widerspruchsdetektionsvorrichtung gemäß der ersten
Ausführungsform
erläutert.
Diese Zugriffsrecht-Widerspruchsdetektionsvorrichtung 10 besteht
aus einer Zugriffsrechtslisten- Eingabesektion 11,
einer Zugriffsrechtslisten-Speichersektion 12, einer Quellcode-Eingabesektion 13,
einem Methodensignaturdetektor 14, einer Zugriffsrecht-Analysesektion 15,
einem Zugriffsrechtskomparator 16 und einer Ausgabesektion 17,
wie in 1 gezeigt.
-
Unter
diesen Bestandteilelementen ist die Zugriffsrechtslisten-Eingabesektion 11 eine
Verarbeitungssektion, welche eine Entwicklungszeit-Zugriffsrechtsliste,
die eine Sammlung von Zugriffsrechten ist, die erteilt werden, wenn
ein Programm entwickelt wird, in die Zugriffsrecht-Widerspruchsdetektionsvorrichtung 10 eingibt.
Spezifisch ausgedrückt,
gibt die Zugriffsrechtslisten-Eingabesektion 11 Daten auf
einer Liste von Zugriffsrechten ein, wie in 18 gezeigt.
-
Die
Zugriffsrechtslisten-Speichersektion 12 ist ein Speicher,
der die Entwicklungszeit-Zugriffsrechtsliste speichert, die von
der Zugriffsrechtslisten-Eingabesektion 11 eingegeben wird.
Wenn eine Vielzahl von Entwicklungszeit-Zugriffsrechtslisten von
der Zugriffsrechtslisten-Eingabesektion 11 eingegeben wird,
werden ID-Informationen jeder Entwicklungszeit-Zugriffsrechtsliste
zugeordnet, um die Liste einheitlich zu spezifizieren, und dann
in der Zugriffsrechtslisten-Speichersektion 12 gespeichert.
-
Die
Quellcode-Eingabesektion 13 ist eine Verarbeitungssektion,
die den Quellcode des Programms in die Zugriffsrecht-Widerspruchsdetektionsvorrichtung 10 eingibt.
Spezifisch ausgedrückt,
gibt die Quellcode-Eingabesektion 13 solche Quellcodedaten
wie die in 2, 14 und 16 gezeigten ein.
Ein Programm, das die Basis für
diesen Quellcode bildet, ist ein Programm, das im Hinblick auf die Entwicklungszeit-Zugriffsrechtsliste
erstellt wird.
-
Der
Methodensignaturdetektor 14 ist eine Verarbeitungssektion,
welche den Quellcode des Programms analysiert, der von der Quellcode-Eingabesektion 13 eingegeben
wird, und welche sequentiell Methodensignaturen detektiert, die
in dem Programm enthalten sind. Spezifisch ausgedrückt, analysiert
der Methodensignaturdetektor 14 den Quellcode als Quellcodeanalysator,
detektiert einen Methodenaufruf, und analysiert eine Methodensignatur in
dem Format von "type
name.method name (parameter type name 1, parameter type name 2,
...)" aus dem Methodenaufruf
auf der Basis einer Methode zum Spezifizieren einer Aufrufmethode
gemäß der Java-Sprachspezifikation.
Hier wird angenommen, dass eine dynamische Bindung nicht berücksichtigt wird.
-
Diese
Methodensignatur-Detektionsverarbeitung wird spezifisch erklärt. 2 ist
eine Ansicht, die ein konkretes Beispiel der Methodensignatur-Detektionsverarbeitung
in der ersten Ausführungsform zeigt.
Der Methodensignaturdetektor 14 detektiert beispielsweise
einen Quellcode "importjava.io*;FileInputStreamfis=newFileInputStream
("/tmp/hoge");" und detektiert eine
Methodensignatur "java.io.FileInputStream.FileInputStream
(java.lang.String)",
wie in 2 gezeigt.
-
Mit
erneuter Bezugnahme auf 1 ist die Zugriffsrecht-Analysesektion 15 eine
Verarbeitungssektion, die auf der Basis einer vorherbestimmten Analyseregel 15a sequentiell
vom Methodensignaturdetektor 14 detektierte Methodensignaturen
analysiert und eine Laufzeit-Zugriffsrechtsliste ermittelt. Die
Analyseregel 15a, auf welche die Zugriffsrecht-Analysesektion 15 Bezug
nimmt, ist ein Speicher, der Methodensignaturen, die möglicherweise
in dem Java-Programm enthalten sein können, und Zugriffsrechte spezifiziert,
wobei bewirkt wird, dass die Methodensignaturen jeweils den Zugriffsrechten
entsprechen.
-
Nun
wird diese Analyseregel 15a konkret erläutert. 3 ist eine
Ansicht, welche ein Beispiel der Struktur von Informationen zeigt,
die von der Analyseregel 15a spezifiziert werden. In Java
sind jeweils Zugriffsrecht-Analyseregeln für alle Zugriffsrechte vorhanden,
die als Standards definiert sind. Gemäß einer gewöhnlichen Analyseregel wird
ein entsprechendes Zugriffsrechts für jede Methodensignatur bestimmt.
-
Daher,
wie in 3 gezeigt, spezifiziert die Analyseregel 15a die
Methodensignaturen, die möglicherweise
in dem Java-Programm enthalten sein können, und die Zugriffsrechte,
so dass die Zugriffsrechte den jeweiligen Methodensignaturen entsprechen.
Die Analyseregel 15a spezifiziert beispielsweise ein Zugriffsrecht "java.lang.RuntimePermission"exitVM"", um einer Methodensignatur "java.lang.System.exit(int)" zu entsprechen.
-
Auf
der Basis einer solchen Analyseregel 15a analysiert die
Zugriffsrecht-Analysesektion 15 sequentiell Methodensignaturen
und ermittelt Zugriffsrechte, die den jeweiligen Methodensignaturen entsprechen.
In diesem Moment bestimmt die Zugriffsrecht-Analysesektion 15 auch
Zugriffsrechtsparameter auf der Basis jeweiliger Parameter, die
zur Zeit des Methodenaufrufs jeweils für die Zugriffsrechte eingestellt
werden, die Parameter aufweisen. Die so sequentiell ermittelten
Zugriffsrechte sind Zugriffsrechte, die zu verwenden sind, wenn
das Programm ausgeführt
wird, und eine Sammlung dieser Zugriffsrechte ist die Laufzeit-Zugriffsrechtsliste.
-
Diese
Zugriffsrecht-Analyseverarbeitung wird konkret erläutert. 4 und 5 sind
Ansichten, die konkrete Beispiele der Zugriffsrecht-Analyseverarbeitung
in der ersten Ausführungsform
zeigen. Spezifisch zeigt 4 ein konkretes Beispiel, bei dem
eine Methodensignatur "java.io.FileInputStrem.FileInputStream
(java.lang.String)" ist,
und ein Parameter mit der Wirkung definiert ist, dass "str ist eine willkürliche Zeichenfolge" in einem Quellcode.
-
Das
heißt,
in diesem Fall ermittelt die Zugriffsrecht-Analysesektion 15 ein Zugriffsrecht "java.io.FilePermission"parameter", "read"", das der Methodensignatur "java.io.FileInputStream.FilelnputStream
(java.lang.String)" entspricht,
auf der Basis der Analyseregel 15a. Zusätzlich bestimmt die Zugriffsrecht-Analysesektion 15 den
Parameter des Zugriffsrechts auf der Basis der jeweiligen Parameter, die
zur Zeit des Methodenaufrufs eingestellt werden.
-
Wenn
der Parameter des Zugriffsrechts im Hinblick auf "str ist eine willkürliche Zeichenfolge" bestimmt wird, und
ein Quellcode für
den Parameter beispielsweise "newFileInputStream(str)" ist, dann wird ein
Zugriffsrecht "java.io.FilePermission" <<ALL FILES>>, "read"" ermittelt (siehe in 4 gezeigtes Zugriffsrecht
(1)). Wenn ein Quellcode für
den Parameter "newFileInputStream
("/tmp/hoge")" ist, wird ähnlich ein Zugriffsrecht "java.io.FilePermission"/tmp/hoge", "read"" ermittelt (siehe in 4 gezeigtes
Zugriffsrecht (2)). Wenn ein Quellcode für den Parameter "newFileInputStream
("/tmp"+str)" ist, wird ein Zugriffsrecht "java.io.FilePermission"/tmp/-", "read"" ermittelt (siehe in 4 gezeigtes
Zugriffsrecht (3)).
-
5 zeigt
ein konkretes Beispiel, bei dem eine Methodensignatur "java.net.Socket.Socket(java.lang.String
host, int port)" ist,
und ein Parameter mit der Wirkung definiert ist, dass "str ist eine willkürliche Zeichenfolge
und num ist eine willkürliche
ganze Zahl " im
Quellcode.
-
Das
heißt,
in diesem Fall ermittelt die Zugriffsrecht-Analysesektion 15 ein Zugriffsrecht "java.net.SocketPermission"parameter","connect"",
das der Methodensignatur "java.io.FileInputStream.FileInputStream
(java.lang.String)" entspricht,
auf der Basis der Analysere gel 15a. Zusätzlich bestimmt die Zugriffsrecht-Analysesektion 15 den
Parameter des Zugriffsrechts auf der Basis jedes zur Zeit eines
Methodenaufrufs eingestellten Parameters.
-
Wenn
der Parameter des Zugriffsrechts im Hinblick auf "str ist eine willkürliche Zeichenfolge
und num ist eine willkürliche
ganze Zahl" bestimmt
wird, und ein Quellcode für
den Parameter beispielsweise "new
Socket(str,num)" ist,
dann wird ein Zugriffsrecht "java.net.SocketPermission"*","connect"" ermittelt (siehe in 5 gezeigtes
Zugriffsrecht (1)). Wenn ein Quellcode für den Parameter "new Socket (str+".hogehoge.net",num)" ist, wird ähnlich ein
Zugriffsrecht "java.net.SocketPermission"*.hogehoge.net", "connect"" ermittelt (siehe in 5 gezeigtes
Zugriffsrecht (2)). Wenn ein Quellcode für den Parameter "new Socket (str,80)" ist, wird ein Zugriffsrecht "java.io.SocketPermission"*:80", "connect"" ermittelt (siehe in 5 gezeigtes
Zugriffsrecht (3)).
-
Wenn
die Methodensignatur, die vom Methodensignaturdetektor 14 detektiert
wird, nicht durch die vorherbestimmte Analyseregel 15a spezifiziert ist,
sondern die Methodensignatur, die durch die vorherbestimmte Regel 15a spezifiziert
ist, intern aufgerufen wird, analysiert ferner die Zugriffsrecht-Analysesektion 15 die
Methodensignatur, die intern aufgerufen wird, und ermittelt ein
Laufzeit-Zugriffsrecht.
-
Mit
Bezugnahme auf 16 wird nun die Analyse eines
Zugriffsrechts durch den internen Aufruf der Methodensignatur konkret
erläutert.
Es wird angenommen, wie in 16 gezeigt,
dass eine Regel, gemäß der beispielsweise
eine Methodensignatur "java.io.FileInputStream.FileInputStream(java.lang.String)" einem Zugriffsrecht "java.io.FilePermission" <<ALL
FILES>>", "read"" entspricht, durch die Analyseregel 15a spezifiziert wird.
-
Andererseits,
wie in 16 gezeigt, ruft in dem Quellcode,
der von der Quellcode-Eingabesektion 13 eingegeben wird,
eine Methode "Sample.foo(java.lang.String)", die in der fünften Zeile
definiert ist, die Methodensignatur "java.io.FileInputStream.FileInputStream(java.lang.String)" intern auf. In diesem
Fall analysiert die Zugriffsrecht-Analysesektion 15 die Methodensignatur "java.io.FileInputStream.FileInputStream(java.lang.String)", die intern aufgerufen
wird, und ermittelt ein Zugriffsrecht, das dieser Methodensignatur
entspricht, auf der Basis der Analyseregel 15a, obwohl
das Zugriffsrecht, das der Methode "Sample.foo(java.lang.String)" entspricht, von
der Analyseregel 15a nicht spezifiziert wird.
-
Das
heißt,
für die
Methodensignatur "java.io.FileInputStream.FileInputStream(java.lang.String)", die intern aufgerufen
wird, wird das Zugriffsrecht "java.io.FilePermission" <<ALL FILES>>", "read"" von der Analyseregel 15a spezifiziert.
Daher ermittelt die Zugriffsrecht-Analysesektion 15 das
Zugriffsrecht "java.io.FilePermission" <<ALL FILES>>", "read"" als Laufzeit-Zugriffsrecht. Wie ersichtlich
ist, ist es durch das Analysieren des Zugriffsrechts durch den internen
Aufruf möglich
sicherzustellen, dass ein Laufzeit-Zugriffsrecht ermittelt wird.
-
Mit
erneuter Bezugnahme auf 1 ist der Zugriffsrechtskomparator 16 eine
Verarbeitungssektion, welche die Laufzeit-Zugriffsrechtsliste, die
von der Zugriffsrecht-Analysesektion 15 ermittelt
wird, mit der Entwicklungszeit-Zugriffsrechtsliste,
die in der Zugriffsrechtslisten-Speichersektion 12 gespeichert ist,
in der Breite der Beschränkung
auf der Basis einer Vergleichsregel 16a vergleicht. Die
Vergleichsregel 16a, auf die dieser Zugriffsrechtskomparator 16 Bezug
nimmt, ist ein Speicher, der Breiten der Beschränkungen von Zugriffsrechten
spezifiziert, die möglicherweise
in dem Java-Programm enthalten sein können.
-
Diese
Vergleichsregel 16a wird konkret erklärt. 6 ist eine
Ansicht, welche ein Beispiel der Struktur von Informationen zeigt,
die durch die Vergleichsregel 16a spezifiziert werden.
Die Vergleichsregel 16a spezifiziert Regeln für den Vergleich
zwischen einem Zugriffsrecht mit allen anderen Zugriffsrechten in
der Breite der Beschränkung
für jede
Zugriffsrechtsklasse (z.B. "java.io.FilePermission").
-
Das
heißt,
wie in 6 gezeigt, für
eine Klasse "java.security.AllPermission" wird beispielsweise
eine Regel mit der Wirkung spezifiziert, dass "alle Zugriffsrechte sind enthalten ". Für eine Klasse "java.lang.RuntimePermission" werden die folgenden
Regeln spezifiziert. Wenn ein Vergleichsobjekt in "java.lang.RuntimePermission" ist, und ein Ziel
dasselbe ist, ist die Beschränkungsbreite
gleich; ansonsten ungleich. Wenn ein Vergleichsobjekt in "java.security.AllPermission" ist, ist das Zugriffsrecht
in "java.security.AllPermission" enthalten. Wenn
ein Vergleichsobjekt in einer anderen Klasse ist als "java.lang.RuntimePermission", ist die Beschränkungsbreite
ungleich.
-
Ferner
werden für
eine Klasse "java.io.FilePermission" die folgenden Regeln
spezifiziert. Wenn ein Vergleichsobjekt in "java.io.FilePermission" ist, wird eine Vergleichsbeziehung
durch ein Ziel und eine Aktion bestimmt:
"java.io.FilePermission"*", "read"" >
"java.io.FilePermission"/tmp/hoge", "read"" und
"java.io.FilePermission"/tmp/hoge", "read,write"" >
"java.io.FilePermission"/tmp/hoge", "read"". Wenn ein Vergleichsobjekt in "java.security.AllPermission" ist, ist das Zugriffsrecht
in "java.security.AllPermission" enthal ten. Wenn
ein Vergleichsobjekt in einer anderen Klasse ist als "java.io.FilePermission", ist die Beschränkungsbreite
ungleich.
-
Auf
der Basis einer solchen Vergleichsregel 16a vergleicht
der Zugriffsrechtskomparator 16 die Laufzeit-Zugriffsrechtsliste
mit der Entwicklungszeit-Zugriffsrechtsliste in der Breite der Beschränkung. Spezifisch
vergleicht der Zugriffsrechtskomparator 16 jedes der Zugriffsrechte,
die in der Laufzeit-Zugriffsrechtsliste enthalten sind, mit jedem
von denen, die in der Entwicklungszeit-Zugriffsrechtsliste enthalten
sind, in der Breite der Beschränkung.
Wenn ein Laufzeit-Zugriffsrecht beispielsweise "java.io.FilePermission"*", "read"" ist, und ein Vergleichsobjekt oder
das Entwicklungszeit-Zugriffsrecht "java.io.FilePermission"/tmp/hoge", "read"" ist, vergleicht der Zugriffsrechtskomparator 16 die
beiden Rechte in der Breite der Beschränkung auf der Basis der Vergleichsregel 16a und
bestimmt, als Vergleichsergebnis, dass "java.io.FilePermission"*", "read"" > "java.io.FilePermission"/tmp/hoge", "read"".
-
Mit
erneuter Bezugnahme auf 1 ist die Ausgabesektion 17 eine
Verarbeitungssektion, die das Vergleichsergebnis des Zugriffsrechtskomparators 16 an
die Außenseite
der Zugriffsrecht-Widerspruchsdetektionsvorrichtung 10 meldet.
Spezifisch besteht diese Ausgabesektion 17 aus Informationsausgabeeinheiten
wie einem Monitor, einem Drucker und einem Lautsprecher. Die Ausgabesektion 17 gibt einen
Widerspruch aus, der zwischen der Laufzeit-Zugriffsrechtsliste und
der Entwicklungszeit-Zugriffsrechtsliste auftritt, d.h. gibt ein
Zugriffsrecht in der Laufzeit-Zugriffsrechtsliste aus, von welchem Recht
durch die Vergleichsverarbeitung des Zugriffsrechtskomparators 16 bestimmt
wird, dass es breiter in der Beschränkung ist als die Entwicklungszeit-Zugriffsrechte.
-
Das
Vergleichsergebnis, das von dieser Ausgabesektion 17 ausgegeben
wird, wird konkret erläutert. 7 ist
eine Ansicht, die ein Beispiel des Vergleichsergebnisses in der
ersten Ausführungsform zeigt.
Es wird angenommen, wie in 7 gezeigt, dass
Zugriffsrechte, die im Voraus erteilt werden (in der Entwicklungszeit-Zugriffsrechtsliste),
ein Zugriffsrecht (1) "java.io.FilePermission"/tmp/hoge", "read"" und ein Zugriffsrecht (2) "java.io.RuntimePermission"exitVM"" sind, und Zugriffsrechte, die analysiert werden
(in der Laufzeit-Zugriffsrechtsliste), ein Zugriffsrecht (3) "java.io.FilePermission"*", "read"" und ein Zugriffsrecht (4) "java.io.RuntimePermission"exitVM"" sind.
-
In
diesem Fall bestimmt der Zugriffsrechtskomparator 16, als
Vergleichsergebnis, dass das Laufzeit-Zugriffsrecht (4) gleich dem
Entwicklungszeit-Zugriffsrecht (2) ist, aber dass das Laufzeit-Zugriffsrecht
(3) breiter (in der Beschränkung)
ist als das Entwicklungszeit-Zugriffsrecht (1). Daher gibt die Ausgabesektion 17,
als Vergleichsergebnis, aus: "java.io.FilePermission"*", "read"" > "java.io.FilePermission"/tmp/hoge", "read"", wie in 7 gezeigt.
Das Zeichen > bezeichnet
ein weiteres (weniger beschränktes)
Zugriffsrecht.
-
Als
Nächstes
werden die Zugriffsrecht-Widerspruchsdetektionsverarbeitungsprozeduren
in der ersten Ausführungsform
erläutert. 8 ist ein
Flussdiagramm, das die Zugriffsrecht-Widerspruchsdetektionsverarbeitungsprozeduren
in der ersten Ausführungsform
erklärt.
Die Prozeduren werden im Nachstehenden unter der Annahme erläutert, dass
die Entwicklungszeit-Zugriffsrechtsliste, die von der Zugriffsrechtslisten-Eingabesektion 11 eingegeben
wird, bereits in der Zugriffsrechtslisten-Speichersektion 12 gespeichert
ist.
-
In
der Zugriffsrecht-Widerspruchsdetektionsvorrichtung 10 gemäß der ersten
Ausführungsform, wie
in 8 gezeigt, gibt die Quellcode-Eingabesektion 13 den
Quellcode eines Programms in die Zugriffsrecht-Widerspruchsdetektionsvorrichtung 10 ein (Schritt
S801). Die Methodensignatur-Detektionsvorrichtung 14 analysiert
den Quellcode des Programms, der von der Quellcode-Eingabesektion 13 eingegeben
wird, und detektiert sequentiell Methodensignaturen, die in dem
Programm enthalten sind (Schritt 802), wie in 2 gezeigt.
-
Danach
analysiert die Zugriffsrecht-Analysesektion 15 sequentiell
die Methodensignaturen, die vom Methodensignaturdetektor 14 detektiert
werden, auf der Basis der vorherbestimmten Analyseregel 15a und
ermittelt eine Laufzeit-Zugriffsrechtsliste, wie in 4 und 5 gezeigt
(Schritt S803). Diese Zugriffsrechtsanalyse ist nicht auf jene begrenzt,
die ausgeführt
wird, jedesmal wenn jede Methodensignatur von dem Methodensignaturdetektor 14 aufeinanderfolgend
detektiert wird. Alternativ dazu kann die Analyse von Zugriffsrechten
sequentiell ausgeführt werden,
nachdem alle Methodensignaturen detektiert werden.
-
Dann
vergleicht der Zugriffsrechtskomparator 16 die Laufzeit-Zugriffsrechtsliste,
die von der Zugriffsrecht-Analysesektion 15 ermittelt
wird, mit der Entwicklungszeit-Zugriffsrechtsliste,
die in der Zugriffsrechtslisten-Speichersektion 12 gespeichert
ist, in der Breite der Beschränkung
auf der Basis der Vergleichsregel 16a (Schritt S804). Dieser
Zugriffsrechtsvergleich, ähnlich
der oben erläuterten
Zugriffsrechtsanalyse, ist nicht auf jenen begrenzt, der ausgeführt wird,
jedesmal wenn jedes Laufzeit-Zugriffsrecht aufeinanderfolgend von
der Zugriffsrecht-Analysesektion 15 ermittelt wird. Alternativ dazu
kann der Vergleich von Zugriffsrechten sequentiell ausgeführt werden,
nachdem alle Laufzeit-Zugriffsrechte ermittelt werden.
-
Die
Ausgabesektion 17, wie in 7 gezeigt, gibt,
als Vergleichsergebnis des Zugriffsrechtskomparators 16,
einen Widerspruch aus, der zwischen der Laufzeit-Zugriffsrechtsliste
und der Entwicklungszeit-Zugriffsrechtsliste auftritt, d.h. gibt
ein Zugriffsrecht in der Laufzeit-Zugriffsrechtsliste aus, von welchem
Recht durch die Vergleichsverarbeitung des Zugriffsrechtskomparators 16 bestimmt
wird, dass es breiter in der Beschränkung ist als die Entwicklungszeit-Zugriffsrechte
(Schritt S805). Dieses ausgegebene Vergleichsergebnis, ähnlich wie
die Zugriffsrechtsanalyse und der Zugriffsrechtsvergleich, die oben
erläutert
werden, ist nicht auf jenes begrenzt, das ausgeführt wird, jedesmal wenn der
Zugriffsrechtskomparator 16 jedes der Laufzeit-Zugriffsrechte
mit Entwicklungszeit-Zugriffen vergleicht. Alternativ dazu können Vergleichsergebnisse
als Vergleichsergebnisliste ausgegeben werden, nachdem alle Laufzeit-Zugriffsrechte
mit den Entwicklungszeit-Zugriffsrechten verglichen werden.
-
Durch
eine Serie von oben erläuterten
Verarbeitungen wird der Widerspruch, der zwischen der Laufzeit-Zugriffsrechtsliste
und der Entwicklungszeit-Zugriffsrechtsliste auftritt, klar durch
die Ausgabesektion 17 gemeldet. Dieser gemeldete Inhalt
unterstützt
die Korrektur des Programms, damit es mit den Zugriffsrechten konform
ist, die zur Zeit der Entwicklung des Programms erteilt werden.
-
Gemäß der ersten
Ausführungsform,
wie bisher erläutert,
analysiert der Methodensignaturdetektor 14 den Quellcode
des Programms, der von der Quellcode-Eingabesektion 13 eingegeben
wird, und detektiert sequentiell die Methodensignaturen, die in dem
Programm enthalten sind. Die Zugriffsrecht-Analysesektion 15 analysiert
sequentiell die so detektierten Methodensignaturen auf der Basis
der vorherbestimmten Analyseregel 15a und ermittelt die Laufzeit-Zugriffsrechtsliste.
Der Zugriffsrechtskomparator 16 vergleicht die Laufzeit-Zugriffsrechtsliste mit
der Entwicklungszeit-Zugriffsrechts liste, die in der Zugriffsrechtslisten-Speichersektion 12 gespeichert ist,
in der Breite der Beschränkung
auf der Basis der vorherbestimmten Vergleichsregel 16a.
Die Ausgabesektion 17 meldet dieses Vergleichsergebnis.
Daher ist es möglich,
einen Widerspruch leicht und sicher zu detektieren, der zwischen
den Zugriffsrechten, die zu verwenden sind, wenn das Programm ausgeführt wird,
und den Zugriffsrechten, die erteilt werden, wenn das Programm ausgeführt wird,
auftritt.
-
In
der ersten Ausführungsform
wurde ein Beispiel erklärt,
bei dem die Entwicklungszeit-Zugriffsrechtsliste, die von der Zugriffsrechtslisten-Eingabesektion 11 selbst
eingegeben wird, ein Vergleichsobjekt für die Laufzeit-Zugriffsrechtsliste
ist. Die vorliegende Erfindung ist nicht auf dieses Beispiel begrenzt.
Die vorliegende Erfindung kann auch bei einem Beispiel angewendet
werden, bei dem die Entwicklungszeit-Zugriffsrechtsliste, die von
der Zugriffsrechtslisten-Eingabesektion 11 eingegeben wird,
editiert wird, um mit der Laufzeit-Zugriffsrechtsliste verglichen
zu werden.
-
Ein
Beispiel, bei dem die Entwicklungszeit-Zugriffsrechtsliste, die
von der Zugriffsrechtslisten-Eingabesektion 11 eingegeben
wird, editiert wird, wird als zweite Ausführungsform der vorliegenden Erfindung
erklärt. 9 ist
ein Blockbild, das die Konfiguration einer Zugriffsrecht-Widerspruchsdetektionsvorrichtung
gemäß der zweiten
Ausführungsform
zeigt. Es ist zu beachten, dass Sektionen, die dieselben Funktionen
haben wie die in 1 gezeigten, jeweils mit denselben
Bezugssymbolen wie jene in 1 bezeichnet
sind, und nicht detailliert erläutert werden.
Nur ein Zugriffsrechtskompressor 21, der die charakteristische
Sektion der zweiten Ausführungsform
ist, wird detailliert erläutert.
-
Der
Zugriffsrechtskompressor 21 in einer Zugriffsrecht- Widerspruchsdetektionsvorrichtung 20 ist eine
Verarbeitungssektion, die Breiten von Beschränkungen jeweiliger Zugriffsrechte,
die in einer Entwicklungszeit-Zugriffsrechtsliste enthalten sind,
auf der Basis einer vorherbestimmten Regel 16a vergleicht, und
die eine neue Entwicklungszeit-Zugriffsrechtsliste (von komprimierten
Zugriffsrechten) durch das Löschen
eines Zugriffsrechts, das schmäler
in der Beschränkung
ist als die anderen Zugriffsrechte, aus der Entwicklungszeit-Zugriffsrechtsliste
erstellt.
-
Diese
Kompressionsverarbeitung wird konkret erläutert. 10 ist
eine Ansicht, die ein konkretes Beispiel der Kompressionsverarbeitung
in der zweiten Ausführungsform
zeigt. Es wird angenommen, wie in 10 gezeigt,
dass Zugriffsrechte, die im Voraus erteilt werden, beispielsweise
ein Zugriffsrecht (1) "java.io.FilePermission"/tmp/hoge", "read"" und ein Zugriffsrecht (2) "java.io.FilePermission"/tmp/*", "read"" sind.
-
In
diesem Fall vergleicht der Zugriffsrechtskompressor 21 das
Zugriffsrecht (2) mit dem Zugriffsrecht (1) auf der Basis der vorherbestimmten
Vergleichsregel 16a und bestimmt, dass das erstere breiter
in der Beschränkung
(weniger beschränkt)
ist. Das heißt,
der Beschränkungsinhalt
des Zugriffsrechts (1) ist in jenem des Zugriffsrechts (2) enthalten.
Daher ist das Zugriffsrecht (2) ein redundantes Zugriffsrecht unter
jenen in der Entwicklungszeit-Zugriffsrechtsliste. Demgemäß erstellt
der Zugriffsrechtskompressor 21 eine neue Entwicklungszeit-Zugriffsrechtsliste
durch das Löschen
des Zugriffsrechts (2) aus der Entwicklungszeit-Zugriffsrechtsliste
(siehe 10), wobei das stärker beschränkte Zugriffsrecht
(1) zurückbleibt.
-
Es
ist zu beachten, dass die so erstellte neue Entwicklungszeit-Zugriffsrechtsliste
in einer Zugriffsrechtslisten-Speichersektion 12 gespeichert
wird und von einem Zu griffsrechtskomparator 16 als Vergleichsobjekt
für eine
Laufzeit-Zugriffsrechtsliste verwendet wird.
-
Gemäß der zweiten
Ausführungsform,
wie bisher erläutert,
vergleicht der Zugriffsrechtskompressor 21 Breiten von
Beschränkungen
der jeweiligen Zugriffsrechte, die in der Entwicklungszeit-Zugriffsrechtsliste
enthalten sind, auf der Basis der vorherbestimmten Vergleichsregel 16a,
und erstellt eine neue Entwicklungszeit-Zugriffsrechtsliste durch
das Löschen
eines Zugriffsrechts, das schmäler
in der Beschränkung
(weniger einschränkend)
ist als die anderen, aus der Entwicklungszeit-Zugriffsrechtsliste.
Der Zugriffsrechtskomparator 16 vergleicht die neu erstellte
Entwicklungszeit-Zugriffsrechtsliste mit der Laufzeit-Zugriffsrechtsliste
in der Breite der Beschränkung.
Daher ist es möglich,
Zugriffsrechte effizient zu vergleichen.
-
In
der zweiten Ausführungsform
wurde ein Beispiel erklärt,
bei dem die Entwicklungszeit-Zugriffsrechtsliste, die von der Zugriffsrechtslisten-Eingabesektion 11 eingegeben
wird, editiert wird. Die vorliegende Erfindung ist nicht auf dieses
Beispiel begrenzt. Es ist auch möglich,
die Laufzeit-Zugriffsrechtsliste
zu editieren, die von der Zugriffsrecht-Analysesektion 15 ermittelt
wird.
-
Ein
Beispiel, bei dem die Laufzeit-Zugriffsrechtsliste editiert wird,
die von der Zugriffsanalysesektion 15 ermittelt wird, wird
hier als dritte Ausführungsform
der vorliegenden Erfindung erläutert. 11 ist
ein Blockbild, das die Konfiguration einer Zugriffsrechtslisten-Widerspruchsdetektionsvorrichtung
gemäß der dritten
Ausführungsform
zeigt. Es ist zu beachten, dass Sektionen, die dieselben Funktionen
haben wie die in 1 und 2 gezeigten,
jeweils mit denselben Bezugssymbolen wie jene in 1 und 2 bezeichnet
sind, und nicht detailliert erläutert
werden. Nur ein Zugriffsrechtskompressor 31, der die charakteristische
Sektion der dritten Ausführungsform
ist, wird detailliert erläutert.
Der Zugriffsrechtskompressor 31 in einer Zugriffsrecht-Widerspruchsdetektionsvorrichtung 30 ist
eine Verarbeitungssektion, welche Breiten (von Beschränkungen)
jeweiliger Zugriffsrechte, die in der Laufzeit-Zugriffsrechtsliste
enthalten sind, auf der Basis einer vorherbestimmten Regel 16a vergleicht,
und welche eine neue Laufzeit-Zugriffsrechtsliste (komprimierter Zugriffsrechte)
durch das Löschen
eines Zugriffsrechts, das schmäler
(in der Beschränkung)
ist als die anderen Zugriffsrechte, aus der Laufzeit-Zugriffsrechtsliste
erstellt.
-
Diese
Kompressionsverarbeitung ist gleich wie die in der zweiten Ausführungsform
erläuterte, die
konkret erklärt
wird. Es wird angenommen, wie in 12 gezeigt,
dass Zugriffsrechte (Laufzeit-Zugriffsrechtsliste), die von der
Zugriffsrecht-Analysesektion 15 analysiert werden, beispielsweise
ein Zugriffsrecht (1) "java.net.SocketPermission"www.hogehoge.net:80", "connect"" und ein Zugriffsrecht (2) "java.net.SocketPermission"*:80", "connect"" sind.
-
In
diesem Fall vergleicht der Zugriffsrechtskompressor 31 das
Zugriffsrecht (2) mit dem Zugriffsrecht (1) auf der Basis der vorherbestimmten
Vergleichsregel 16a und bestimmt, dass das erstere breiter
in der Beschränkung
(weniger beschränkt)
ist. Das heißt,
der Beschränkungsinhalt
des Zugriffsrechts (1) ist in jenem des Zugriffsrechts (2) enthalten.
Daher ist das Zugriffsrecht (2) ein redundantes Zugriffsrecht unter
jenen in der Laufzeit-Zugriffsrechtsliste. Demgemäß erstellt
der Zugriffsrechtskompressor 31 eine neue Laufzeit-Zugriffsrechtsliste durch
das Löschen
des Zugriffsrechts (2) aus der Laufzeit-Zugriffsrechtsliste (siehe 11),
wobei das stärker
beschränkte
Zugriffsrecht (1) zurückbleibt.
-
Es
ist zu beachten, dass die so erstellte neue Entwicklungszeit-Zugriffsrechtsliste
von einem Zugriffsrechtskomparator 16 als Vergleichsobjekt
für die Entwicklungszeit-Zugriffsrechtsliste
verwendet wird. Der Zugriffsrechtskomparator 16 vergleicht
nämlich die
neue Laufzeit-Zugriffsrechtsliste, die vom Zugriffsrechtskompressor 31 erstellt
wird, mit der neuen Entwicklungszeit-Zugriffsrechtsliste, die vom
Zugriffsrechtskompressor 21 erstellt wird, in der Breite der
Beschränkung.
-
In
der dritten Ausführungsform,
wie bisher erläutert,
zusätzlich
zur Erstellung der neuen Entwicklungszeit-Zugriffsrechtsliste durch
den Zugriffsrechtskompressor 21, vergleicht der Zugriffsrechtskompressor 31 Breiten
von Beschränkungen
der jeweiligen Zugriffsrechte, die in der Laufzeit-Zugriffsrechtsliste
enthalten sind, auf der Basis der vorherbestimmten Vergleichsregel 16a,
und erstellt die neue Laufzeit-Zugriffsrechtsliste durch das Löschen eines Zugriffsrechts,
das schmäler
(in der Beschränkung) ist
als die anderen Zugriffsrechte, aus der Laufzeit-Zugriffsrechtsliste.
Der Zugriffsrechtskompaestor 16 vergleicht die neue Entwicklungszeit-Zugriffsrechtsliste
mit der neuen Laufzeit-Zugriffsrechtsliste in
der Breite der Beschränkung.
Daher ist es möglich, Zugriffsrechte
weiter effizient zu vergleichen.
-
Zweckmäßig wird
die Kompressionsverarbeitung ausgeführt, nachdem alle Laufzeit-Zugriffsrechte
von der Zugriffsrecht-Analysesektion 15 ermittelt werden.
Dies ist auf die Annahme zurückzuführen, dass,
wenn eine Kompressionsverarbeitung durchgeführt wird, nachdem alle Laufzeit-Zugriffsrechte
ermittelt werden, diese in der Lage ist, ein redundantes Zugriffsrecht
sicher und effizient zu löschen.
-
In
der dritten Ausführungsform
wurde ein Beispiel erklärt,
bei dem der Zugriffsrechtskompressor 31 die neue Laufzeit-Zugriffsrechtsliste
zusätzlich zur
Erstellung der neuen Entwicklungszeit-Zugriffsrechtsliste durch
den Zugriffsrechtskompressor 21 erstellt. Die vorliegende
Erfindung ist nicht auf dieses Beispiel begrenzt. Die vorliegende
Erfindung kann auch bei einem Beispiel angewendet werden, bei dem
nur der Zugriffsrechtskompressor 31 eine neue Laufzeit-Zugriffsrechtsliste
erstellt, ohne dass der Zugriffsrechtskompressor 21 vorgesehen
ist. In diesem Fall ist es ähnlich
wie in der dritten Ausführungsform möglich, die
Zugriffsrechte effizient zu vergleichen, verglichen mit der ersten
Ausführungsform.
-
In
der ersten bis dritten Ausführungsform wurde
ein Beispiel erklärt,
bei dem das Zugriffsrecht, das einen Widerspruch in der Breite der
Beschränkung
aufweist, als Ausgang des Vergleichsergebnisses der Ausgabesektion 17 ausgegeben
wird. Die vorliegende Erfindung ist jedoch nicht auf dieses Beispiel
begrenzt. Es ist auch möglich,
den Quellcode auszugeben, der einen Widerspruch verursacht.
-
Ein
Beispiel, bei dem die Ausgabesektion 17 einen Quellcode
ausgibt, der den Widerspruch von Zugriffsrechten verursacht, wird
hier als vierte Ausführungsform
der vorliegenden Erfindung erklärt. 13 ist
ein Blockbild, das die Konfiguration einer Zugriffsrecht-Widerspruchsdetektionsvorrichtung
gemäß der vierten
Ausführungsform
zeigt. Es ist zu beachten, dass Sektionen, die dieselben Funktionen haben
wie die in 1 gezeigten, jeweils mit denselben
Bezugssymbolen wie jene in 1 bezeichnet sind,
und nicht detailliert erläutert
werden. Nur ein Teilquellcodedetektor 41, der eine charakteristische Sektion
der vierten Ausführungsform
ist, wird detailliert erläutert.
-
Der
Teilquellcodedetektor 41 in einer Zugriffsrecht-Widerspruchsdetektionsvorrichtung 40 ist eine
Verarbeitungssektion, die einen Teilquellcode aus einem Quellcode
eines Programms detektiert, der einem Zugriffsrecht entspricht,
für das
als Ergebnis des Vergleichs durch einen Zugriffsrechtskomparator 16 bestimmt
wird, dass die Beschränkung
des Laufzeitzugriffs breiter ist als jene eines Entwicklungszeit-Zugriffsrechts.
Eine Ausgabesektion 17 gibt den Teilquellcode aus, der
von dem Teilquellcodedetektor 41 detektiert wird.
-
Diese
Ausgabeverarbeitung wird konkret erklärt. 14 ist
eine Ansicht, die ein konkretes Beispiel der Ausgabeverarbeitung
in der fünften
Ausführungsform
zeigt. Es wird angenommen, wie in 14 gezeigt,
dass beispielsweise ein Zugriffsrecht"java.io.FilePermission"/tmp/-", "read"" als Zugriffsrecht, das im Voraus erteilt
wird (Entwicklungszeit-Zugriffsrecht),
in einer Zugriffsrechtslisten-Speichersektion 12 gespeichert
ist.
-
Wenn
in diesem Fall der in 14 gezeigte Quellcode in eine
Quellcode-Eingabesektion 13 eingegeben wird, ermittelt
eine Zugriffsrecht-Analysesektion 15 ein Zugriffsrecht "java.io.FilePermission" <<ALL
FILES>>", "read"", das sich aus der Zeile des Quellcodes "new FileInputStream
(file)" in der sechsten
Zeile des Quellcodes ergibt. Dann vergleicht der Zugriffsrechtskomparator 16 jedes
Laufzeit-Zugriffsrecht, das von der Zugriffsrecht-Analysesektion 15 ermittelt
wird, mit dem Entwicklungszeit-Zugriffsrecht, das in der Zugriffsrechtslisten-Speichersektion 12 gespeichert
ist, in der Breite der Beschränkung.
In diesem Fall wird als Vergleichsergebnis bestimmt, dass die Beschränkung des
Laufzeit-Zugriffsrechts breiter (geringer) ist als jene des Entwicklungszeit-Zugriffsrechts.
Es besteht nämlich
ein Widerspruch in den Breiten der Beschränkungen von Zugriffsrechten.
-
Daher
detektiert der Teilquellcodedetektor 41 den Teilquellcode,
der den Widerspruch verursacht, aus dem Quellcode des Programms.
In diesem Fall detektiert der Teilquellcodedetektor 41,
dass "new FileInputStream
(file)" in der sechsten
Zeile des Quellcodes den Widerspruch verursacht. Die Ausgabesektion 17 gibt
das widersprüchliche
Zugriffsrecht und den Teilquellcode aus, der den Widerspruch verursacht,
wie in 14 gezeigt.
-
Gemäß der vierten
Ausführungsform,
wie bisher erläutert,
detektiert der Teilquellcodedetektor 41 den Teilquellcode,
der dem Zugriffsrecht entspricht, für das als Ergebnis des Vergleichs
durch den Zugriffsrechtskomparator 16 bestimmt wird, dass die
Beschränkung
des Laufzeit-Zugriffsrechts breiter ist als jene des Entwicklungszeit-Zugriffsrechts.
Die Ausgabesektion 17 meldet den so detektierten Teilquellcode.
Daher ist es möglich,
klar den Teilquellcode zu melden, der einen Widerspruch verursacht. Daher
ist es möglich,
die Korrektur des Programms zu erleichtern, um mit den Zugriffsrechten
konform zu sein, die erteilt werden, wenn das Programm entwickelt
wird.
-
In
der vierten Ausführungsform
wurde ein Beispiel erklärt,
bei dem die Kompression der Entwicklungszeit-Zugriffsrechtsliste
und jene der Laufzeit-Zugriffsrechtsliste, wie in der zweiten und
dritten Ausführungsform
erläutert,
nicht ausgeführt
werden. Die vorliegende Erfindung ist jedoch nicht auf dieses Beispiel
begrenzt. Die vorliegende Erfindung kann auch bei einem Beispiel
angewendet werden, bei dem diese Kompressionsverarbeitungen ausgeführt werden,
und dann ein Teilquellcode, der einen Widerspruch verursacht, detektiert
und ausgegeben wird.
-
Wenn
die Kompression der Laufzeit-Zugriffsrechtsliste ausgeführt wird,
ist es kompliziert, einen Teilquellcode, der einen Widerspruch verursacht, durch
eine Rückwirkung
auf die ursprüngliche
Laufzeit-Zugriffsrechtsliste von der neuen Laufzeit-Zugriffsrechtsliste
zu detektieren. Daher wird davon ausgegangen, dass es bevorzugt
wird, nur die Kompression der Entwicklungszeit-Zugriffsrechtsliste auszuführen.
-
In
der ersten bis vierten Ausführungsform wurde
ein Beispiel erklärt,
bei dem die Zugriffsrechte auf der Basis der Analyseregel 15a analysiert
werden. Alternativ dazu kann diese Analyseregel 15a durch
dieselbe Verarbeitung wie die Zugriffsrecht-Analyseverarbeitung,
die von der Zugriffsrecht-Analysesektion 15 durchgeführt wird,
neu erstellt werden.
-
Eine
Analyseregel-Erstellungsvorrichtung, welche die Analyseregel 15a erstellt,
die in jeder der ersten bis vierten Ausführungsform verwendet wird, wird
hier als fünfte
Ausführungsform
der vorliegenden Erfindung erläutert.
-
15 ist
ein Blockbild, das die Konfiguration der Analyseregel-Erstellungsvorrichtung
gemäß der fünften Ausführungsform
zeigt. Diese Analyseregel-Erstellungsvorrichtung 50, wie
in 15 gezeigt, besteht aus einer Quellcode-Eingabesektion 13,
einem Methodensignaturdetektor 14, einer Zugriffsrecht-Analysesektion 15,
einer Analyseregel-Erstellungssektion 51 und einer Ausgabesektion 17.
-
Unter
diesen Bestandteilelementen haben die Quellcode-Eingabesektion 13, der Methodensignaturdetektor 14 und
die Zugriffsrecht-Analysesektion 15 dieselben Funktionen
wie jene, die in 1 erläutert und jeweils mit denselben
Bezugssymbolen bezeichnet werden. Sie analysieren nämlich Laufzeit-Zugriffsrechte
aus dem Quellcode eines Programms.
-
Wenn
die Methodensignatur, die von dem Methodensignaturdetektor 14 detektiert
wird, bereits durch die Analyseregel 15a spezifiziert ist,
analysiert dabei, wie in der ersten Ausführungsform erläutert, die
Zugriffsrecht-Analysesektion 15 die spezifizierte Methodensignatur
und ermittelt ein Zugriffsrecht. Wenn die Methodensignatur, die
von dem Methodensignaturdetektor 14 detektiert wird, nicht
durch die Analyseregel 15 spezifiziert ist, sondern die
Methodensignatur, die durch die vorherbestimmte Analyseregel 15a spezifiziert
ist, intern aufgerufen wird, dann analysiert die Zugriffsrecht-Analysesektion 15 die
intern aufgerufene Methodensignatur und ermittelt ein Zugriffsrecht.
-
Die
Zugriffsrechtsanalyse durch den internen Aufruf der Methodensignatur
wird konkret erläutert. Es
wird angenommen, wie in 16 gezeigt,
dass eine Regel, gemäß der beispielsweise
eine Methodensignatur "java.io.FileInputStream.FileInputStream
(java.lang.String)" einem
Zugriffsrecht "java.io.FilePermission" <<ALL
FILES>>", "read"" entspricht, durch die Analyseregel 15a spezifiziert
ist.
-
Andererseits
ruft in dem Quellcode, der von der Quellcode-Eingabesektion 13 eingegeben
wird, wie in 16 gezeigt, eine in der fünften Zeile
definierte Methode "Sample.foo(java.lang.String)" die Methodensignatur "java.io.FileInputStream.FileInputStream(java.lang.String)" intern auf. Obwohl
ein Zugriffsrecht, das der Methode "Sample.foo(java.lang.String)" entspricht, nicht
durch die Analyseregel 15a spezifiziert ist, analysiert
in diesem Fall auf der Basis der Analyseregel 15a die Zugriffsrecht-Analysesektion 15 die
Methodensignatur "java.io.FileInputStream.FileInputStream(java.lang.String)", die intern aufgerufen
wird, und ermittelt ein Zugriffsrecht, das dieser Methodensignatur entspricht.
-
Das
heißt,
für die
Methodensignatur "java.io.FileInputStream.FileInputStream(java.lang.String)", die intern aufgerufen
wird, wird das Zugriffsrecht "java.io.FilePermission" <<ALL FILES>>", "read"" durch die Analyseregel 15a spezifiziert.
Daher ermittelt die Zugriffsrecht-Analysesektion 15 das
Zugriffsrecht "java.io.FilePermission" <<ALL
FILES>>", "read"" als Lauf zeit-Zugriffsrecht.
-
Wenn
die Zugriffsrechtsanalyse durch den internen Aufruf der Methodensignatur
durchgeführt wird,
wie oben erläutert,
ist es eine in 15 gezeigte Analyseregel-Erstellungssektion 51,
die eine Analyseregel neu erstellt. Wenn die Zugriffsrecht-Analysesektion 15 die
Methodensignatur analysiert, die intern aufgerufen wird, und ein
Zugriffsrecht ermittelt, erstellt nämlich die Analyseregel-Erstellungssektion 51 eine
neue Analyseregel, die das so ermittelte Zugriffsrecht und die Methodensignatur
spezifiziert, so dass diese einander entsprechen.
-
In
dem in 16 gezeigten Fall erstellt die Analyseregel-Erstellungssektion 51 beispielsweise eine
Analyseregel, gemäß der die
Methodensignatur "Sample.foo(java.lang.String)" dem Zugriffsrecht "java.io.FilePermission" <<ALL
FILES>>", "read"" entspricht. Zusätzlich gibt die Ausgabesektion 17 die Analyseregel,
die von der Analyseregel-Erstellungssektion 51 erstellt
wird, an die Außenseite
der Analyseregel-Erstellungsvorrichtung 50 aus.
-
Wenn
die Zugriffsrecht-Analysesektion 15 die Methodensignatur
analysiert, die intern aufgerufen wird, und ein Zugriffsrecht ermittelt,
erstellt die Analyseregel-Erstellungssektion 51, wie bisher
erläutert,
gemäß der fünften Ausführungsform
eine neue Analyseregel, die das so ermittelte Zugriffsrecht und die
so detektierte Methodensignatur spezifiziert, so dass diese einander
entsprechen. Daher ist es möglich,
eine effiziente Analyseregel zu erstellen, die zur effizienten Ermittlung
von Laufzeit-Zugriffsrechten beiträgt.
-
Mit
anderen Worten, durch das Spezifizieren der Analyseregel, die von
der Analyseregel-Erstellungssektion 51 erstellt wird, als
Analyseregel 15a der Zugriffsrecht-Wider spruchsdetektionsvorrichtung,
die in der ersten bis vierten Ausführungsform erläutert wurde,
und indem das Programm beispielsweise als Bibliothek eingesetzt
wird, ist es dann möglich,
Laufzeit-Zugriffsrechte effizient zu ermitteln. Dies ist darauf
zurückzuführen, dass
es nicht notwendig ist, Methoden aufzurufen, die gemäß Java als Standards
definiert sind, und eine Analyse für die jeweiligen Methoden vorzunehmen.
-
In
der fünften
Ausführungsform
wurde die Analyseregel-Erstellungsvorrichtung
erläutert,
welche die Analyseregel 15a erstellt, die in jeder der
ersten bis vierten Ausführungsform
eingesetzt wird. Alternativ dazu kann eine Zugriffsrecht-Widerspruchsdetektionsvorrichtung
so zusammengesetzt sein, dass die Funktion einer solchen Analyseregel-Erstellungsvorrichtung
in der Vorrichtung eingebaut sein kann.
-
Eine
Zugriffsrecht-Widerspruchsdetektionsvorrichtung, die den Widerspruch
von Zugriffsrechten detektiert, wobei eine neue Analyseregel erstellt
wird, wird hier als sechste Ausführungsform
der vorliegenden Erfindung erläutert.
-
17 ist
ein Blockbild, das die Konfiguration der Zugriffsrecht-Widerspruchsdetektionsvorrichtung
gemäß der sechsten
Ausführungsform
zeigt. Es ist zu beachten, dass Sektionen, die dieselben Funktionen
haben wie die in 1 gezeigten, jeweils mit denselben
Bezugssymbolen wie jene in 1 bezeichnet
sind, und nicht detailliert erklärt
werden. Nur eine Analyseregel-Erstellungssektion 51, die
eine charakteristische Sektion der sechsten Ausführungsform ist, wird detailliert
erläutert.
-
Die
Analyseregel-Erstellungssektion 51 in einer Zugriffsrecht-Widerspruchsdetektionsvorrichtung 60 nimmt
dieselben Verarbeitungen vor wie jene der Analyseregel-Erstellungssektion 51,
die in der fünften
Ausführungsform
erklärt wurde.
Wenn die Zugriffsrecht-Analysesektion 15 die Methodensignatur analysiert,
die intern aufgerufen wird, und ein Zugriffsrecht ermittelt, erstellt
nämlich
die Analyseregel-Erstellungssektion 51 eine
neue Analyseregel, die das so ermittelte Zugriffsrecht und die so
detektierte Methodensignatur spezifiziert, so dass diese einander
entsprechen.
-
Ferner
addiert diese Analyseregel-Erstellungssektion 51 die neu
erstellte Analyseregel mit der Analyseregel 15a und spezifiziert
eine neue Analyseregel. Daher kann die Zugriffsrecht-Analysesektion 15 Zugriffsrechte
durch Bezugnahme auf diese neue Analyseregel effizient analysieren,
wodurch es unnötig
wird, die gemäß Java als
Standards definierten Methodenaufrufe zu verfolgen, um eine Analyse
vorzunehmen.
-
Wenn
die Zugriffsrecht-Analysesektion 15 die Methodensignatur
analysiert, die intern aufgerufen wird, und ein Zugriffsrecht ermittelt,
erstellt die Analyseregel-Erstellungssektion 51, wie bisher
erläutert,
gemäß der sechsten
Ausführungsform
eine neue Analyseregel, die das so ermittelte Zugriffsrecht und
die so detektierte Methodensignatur spezifiziert, so dass diese
einander entsprechen, und addiert die neue Analyseregel mit der
vorherbestimmten Analyseregel 15a, um dadurch eine neue
Analyseregel zu spezifizieren. Daher ist es möglich, Laufzeit-Zugriffsrechte
effizient zu ermitteln, kurz nachdem die neue Analyseregel addiert
wird.
-
Bisher
wurden die Ausführungsformen
der vorliegenden Erfindung erläutert.
Die vorliegende Erfindung kann, neben den oben erklärten Ausführungsformen,
in verschiedensten anderen Ausführungsformen
im Umfang des technischen Konzepts durchgeführt werden, das in den Ansprüchen beschrieben
ist.
-
In
den Ausführungsformen
der vorliegenden Erfindung wird ein Beispiel erklärt, bei
dem der Widerspruch von Zu griffsrechten in Bezug auf ein Java-Programm
detektiert wird. Die vorliegende Erfindung ist jedoch nicht auf
dieses Beispiel begrenzt. Die vorliegende Erfindung kann auch bei
einem beliebigen Programm, das ausgeführt wird, auf der Basis der
Beschränkung
oder Erteilung von Zugriffsrechten angewendet werden.
-
Ferner
können,
unter den jeweiligen Verarbeitungen, die in den Ausführungsformen
der vorliegenden Erfindung erklärt
wurden, alle oder ein Teil von jenen, die, wie erläutert wurde,
automatisch durchgeführt
werden, manuell durchgeführt
werden. Alle oder ein Teil jener, die, wie erläutert wurde, manuell durchgeführt werden,
können
durch ein wohlbekanntes Verfahren automatisch durchgeführt werden. Dabei
können
die Verarbeitungsprozeduren, Steuerprozeduren, konkreten Namen,
Informationen, die verschiedenste Daten und Parameter enthalten,
wie in der Beschreibung oder in den Zeichnungen gezeigt, willkürlich geändert werden,
wenn nichts anderes spezifiziert ist.
-
Außerdem sind
die jeweiligen Bestandteilelemente jeder der in den Zeichnungen
gezeigten Vorrichtungen funktionelle Konzepte und sind nicht unbedingt
wie in den Zeichnungen gezeigt physisch zusammengesetzt. Das heißt, die
konkreten Ausführungsformen
der Verteilung und Integration der Bestandteilelemente in den jeweiligen
Vorrichtungen sind nicht auf die in den Zeichnungen gezeigten begrenzt.
Alle oder ein Teil der Bestandteilelemente können so zusammengesetzt sein,
dass die funktionell oder physisch in willkürlichen Einheiten verteilt oder
integriert sind, in Abhängigkeit
von verschiedensten Belastungen und einem Nutzungszustand. Ferner
können
alle oder ein willkürlicher
Teil der jeweiligen Verarbeitungsfunktionen, die von jeder Vorrichtung
durchgeführt
werden, von der CPU und einem Programm, das von der CPU analysiert
und ausgeführt
wird, realisiert werden. Alternativ dazu können sie als Hardware auf der
Basis einer verdrahteten Logik realisiert werden.
-
Jedes
dieser in den Ausführungsformen
der vorliegenden Erfindung erläuterten
Zugriffsrecht-Widerspruchsdetektionsverfahren und Analyseregel-Erstellungsverfahren
kann dadurch realisiert werden, dass es einem Computer, wie einem
Personalcomputer oder einer Arbeitsstation, ermöglicht wird, ein im Voraus
erstelltes Programm auszuführen.
Dieses Programm kann über
das Netz, wie das Internet, verteilt werden. Alternativ dazu, kann
dieses Programm durch das Aufzeichnen des Programms auf einem computerlesbaren
Aufzeichnungsmedium, wie einer Festplatte, einer Diskette (FD),
einer CD-ROM, einer MO oder einer DVD, und Lesen des Programms aus
dem Aufzeichnungsmedium durch einen Computer ausgeführt werden.
-
Gemäß einem
Aspekt der vorliegenden Erfindung, wie bisher erläutert, wird
ein Quellcode eines Programms analysiert, und Methodensignaturen,
die in dem Programm enthalten sind, werden sequentiell detektiert;
die detektierten Methodensignaturen werden sequentiell analysiert,
und eine Laufzeit-Zugriffsrechtsliste wird ermittelt, auf der Basis
einer vorherbestimmten Analyseregel, welche Methodensignaturen und
Zugriffsrechte spezifiziert, die möglicherweise in dem Programm
enthalten sein können,
so dass die Methodensignaturen jeweils den Zugriffsrechten entsprechen;
die Laufzeit-Zugriffsrechtsliste wird mit der Entwicklungszeit-Zugriffsrechtsliste
in der Breite (der Beschränkung)
auf der Basis einer vorherbestimmten Vergleichsregel verglichen,
welche Breiten in Bezug auf (Beschränkungen der) Zugriffsrechte spezifiziert,
die möglicherweise
in dem Programm enthalten sein können;
und dieses Vergleichsergebnis wird gemeldet. Daher ist es möglich, einen
Widerspruch leicht und sicher zu detektieren, der zwischen den Zugriffsrechten,
die zu verwenden sind, wenn das Programm ausgeführt wird, und den Zu griffsrechten,
die erteilt werden, wenn das Programm ausgeführt wird, auftritt.
-
Ferner
wird eines der Zugriffsrechte in der Laufzeit-Zugriffsrechtsliste als Vergleichsergebnis gemeldet,
für welches
Zugriffsrecht bestimmt wird, dass die Beschränkung, die vergeben wird, wenn
das Programm ausgeführt
wird, breiter (oder geringer) ist als jene, die vergeben wird, wenn
das Programm entwickelt wird. Daher ist es möglich, die Korrektur des Programms
zu unterstützen,
damit es mit den Zugriffsrechten konform ist, die erteilt werden,
wenn das Programm entwickelt wird.
-
Außerdem wird
ein Teilquellcode, der dem Zugriffsrecht entspricht, für das bestimmt
wird, dass die Beschränkung,
die vergeben wird, wenn das Programm ausgeführt wird, breiter ist als die
Beschränkung,
die vergeben wird, wenn das Programm entwickelt wird, als Ergebnis
des Vergleichs aus dem Quellcode des Programms detektiert, und der
detektierte Teilquellcode wird gemeldet. Daher ist möglich, einen
Teilquellcode, der einen Widerspruch verursacht, klar zu melden.
Dadurch ist es möglich,
die Korrektur des Programms zu erleichtern, damit es mit den Zugriffsrechten
konform ist, die erteilt werden, wenn das Programm entwickelt wird.
-
Ferner
werden die Zugriffsrechte, die in der Entwicklungszeit-Zugriffsrechtsliste
enthalten sind, miteinander in der Breite (der Beschränkung) auf
der Basis der vorherbestimmten Vergleichsregel verglichen, und eine
neue Entwicklungszeit-Zugriffsrechtsliste wird erstellt, indem das
Zugriffsrecht, das schmäler
(in der Beschränkung)
ist als die anderen Zugriffsrechte, aus dem Entwicklungszeit-Zugriffsrecht
gelöscht
wird, und die so erstellte neue Entwicklungszeit-Zugriffsrechtsliste
wird mit der Laufzeit-Zugriffsrechtsliste in der Breite (der Beschränkung) verglichen.
Daher ist es möglich,
einen Widerspruch prompt zu de tektieren, der zwischen dem Zugriffsrecht,
das verwendet wird, wenn das Programm ausgeführt wird, und jenem, das erteilt
wird, wenn das Programm entwickelt wird, auftritt.
-
Außerdem werden
die Zugriffsrechte, die in der Laufzeit-Zugriffsrechtsliste enthalten
sind, miteinander in der Breite (der Beschränkung) auf der Basis der vorherbestimmten
Vergleichsregel verglichen, und eine neue Laufzeit-Zugriffsrechtsliste
wird erstellt, indem das Zugriffsrecht, das schmäler (in der Beschränkung) ist
als die anderen Zugriffsrechte, aus der Laufzeit-Zugriffsrechtsliste
gelöscht
wird, und die so erstellte neue Laufzeit-Zugriffsrechtsliste wird
mit der Entwicklungszeit-Zugriffsrechtsliste in der Breite (der
Beschränkung)
verglichen. Daher ist es möglich, Zugriffsrechte
effizient zu vergleichen. Dadurch ist es möglich, einen Widerspruch prompt
zu detektieren, der zwischen dem Zugriffsrecht, das verwendet wird, wenn
das Programm ausgeführt
wird, und jenem, das erteilt wird, wenn das Programm entwickelt
wird, auftritt.
-
Ferner
werden die Zugriffsrechte, die in der Entwicklungszeit-Zugriffsrechtsliste
enthalten sind, miteinander in der Breite (der Beschränkung) auf
der Basis der vorherbestimmten Vergleichsregel verglichen, und eine
neue Entwicklungszeit-Zugriffsrechtsliste wird erstellt, indem das
Zugriffsrecht, das schmäler
(in der Beschränkung)
ist als die anderen Zugriffsrechte, aus dem Entwicklungszeit-Zugriffsrecht
gelöscht
wird, die Zugriffsrechte, die in der Laufzeit-Zugriffsrechtsliste
enthalten sind, werden miteinander in der Breite (der Beschränkung) auf
der Basis der vorherbestimmten Vergleichsregel verglichen, eine
neue Laufzeit-Zugriffsrechtsliste wird erstellt, indem das Zugriffsrecht,
das schmäler
(in der Beschränkung)
ist als die anderen Zugriffsrechte, aus der Laufzeit-Zugriffsrechtsliste
gelöscht
wird, und die neue Entwicklungszeit-Zugriffsrechts liste wird mit
der neuen Laufzeit-Zugriffsrechtsliste in der Breite (der Beschränkung) verglichen.
Daher ist es möglich,
Zugriffsrechte weiter effizient zu vergleichen. Dadurch ist es möglich, einen
Widerspruch weiter prompt zu detektieren, der zwischen dem Zugriffsrecht,
das verwendet wird, wenn das Programm ausgeführt wird, und jenem, das erteilt
wird, wenn das Programm entwickelt wird, auftritt.
-
Wenn
die Methodensignaturen, die detektiert werden, nicht durch die vorherbestimmte
Analyseregel spezifiziert sind, sondern die Methodensignaturen,
die durch die vorherbestimmte Analyseregel spezifiziert sind, intern
aufgerufen werden, werden außerdem
die Methodensignaturen, die intern aufgerufen werden, analysiert,
bzw. die Laufzeit-Zugriffsrechte werden ermittelt. Daher ist es
möglich,
Laufzeit-Zugriffsrechte aus dem Quellcode des Programms zu ermitteln.
Dadurch ist es möglich,
weiter sicherzustellen, dass ein Widerspruch detektiert wird, der
zwischen dem Zugriffsrecht, das verwendet wird, wenn das Programm
ausgeführt
wird, und jenem, das erteilt wird, wenn das Programm entwickelt
wird, auftritt.
-
Wenn
die intern aufgerufenen Methodensignaturen analysiert werden, bzw.
die Laufzeit-Zugriffsrechte ermittelt werden, wird ferner eine neue
Analyseregel erstellt, welche die ermittelten Zugriffsrechte und
die detektierten Methodensignaturen spezifiziert, so dass die ermittelten
Zugriffsrechte jeweils den detektierten Methodensignaturen entsprechen.
Daher ist es möglich,
eine effiziente Analyseregel zu erstellen, die dazu beiträgt, Laufzeit-Zugriffsrechte
effizient zu ermitteln.
-
Wenn
eine neue Analyseregel erstellt wird, wird außerdem die neue Analyseregel
mit der vorherbestimmten Analyseregel addiert, um die neue Analyseregel
mit der addierten Analyseregel zu spezifizieren. Daher ist es möglich, Lauf zeit-Zugriffsrechte effizient
zu ermitteln, kurz nachdem die neue Analyseregel addiert wird.
-
Gemäß einem
weiteren Aspekt der vorliegenden Erfindung wird ein Quellcode des
Programms analysiert, und die Methodensignaturen, die in dem Programm
enthalten sind, werden sequentiell detektiert; wenn die detektierten
Methodensignaturen bereits durch die vorherbestimmte Analyseregel spezifiziert
werden, werden die spezifizierten Methodensignaturen analysiert,
und die Zugriffsrechte werden ermittelt, und wenn die Methodensignaturen,
die detektiert werden, nicht von der vorherbestimmten Analyseregel
spezifiziert werden, sondern die Methodensignaturen, die von der
vorherbestimmten Analyseregel spezifiziert werden, intern aufgerufen
werden, werden die Methodensignaturen, die intern aufgerufen werden,
analysiert, bzw. die Zugriffsrechte werden ermittelt; und wenn jeweils
die Methodensignaturen, die intern aufgerufen werden, analysiert werden,
und die Zugriffsrechte ermittelt werden, wird eine neue Analyseregel
erstellt, welche die ermittelten Zugriffsrechte und die detektierten
Methodensignaturen spezifiziert, so dass die ermittelten Zugriffsrechte
jeweils den detektierten Methodensignaturen entsprechen. Daher ist
es möglich,
eine effiziente Analyseregel zu erstellen, die dazu beiträgt, Laufzeit-Zugriffsrechte
effizient zu ermitteln.
-
Obwohl
die Erfindung in Bezug auf eine spezifische Ausführungsform für eine vollständige und klare
Offenbarung beschrieben wurde, sollen die beigeschlossenen Ansprüche dadurch
nicht eingeschränkt
werden, sondern sind so auszulegen, dass die alle Modifikationen
und alternative Konstruktionen verkörpern, die für Fachleute
klar sind, und die in die hier ausgeführte Grundlehre fallen. Obwohl
die obige Beschreibung beispielsweise auf die Breite der Beschränkung als
Kriterium zur Beurteilung von Zugriffsrechten Bezug nimmt, kann
die Erfindung gleichermaßen
bei einem Fall angewendet werden, wo eine Breite (Grad, Stufe oder
Klasse) einer Berechtigung eingestellt wird, um die Zugriffsrechte
zu bestimmen. Der oben verwendete Ausdruck "Breite der Beschränkung" kann so als "Ausmaß der Berechtigung" eines Zugriffsrechts
angesehen werden.